fawcwlqYpLwqb$=yEuhHNrbQv
zI;BCFv*#uQhbJi}*>30fgeVfi?vS>Q*ozZ=ZkLDi+X|F%J56NamFAhSJYuwC$HzoQ
z+o45TtP$iYlu(vZnZnT8P(mn+W>V_7&<)NAvwNywDT_*MRu^CDhX*g@`5|?bz-54n
zL*$CE!w`9eZCia1u#VUX));xgbtw^?e+70iSW`+EgQYbomDo|%Av=Q+p72~(?Ntn9
zH|!w6-|Cy>v^gDM3%*wVugt?Zy#JV
z?W;$AS=?yW%7>er&3p5;4&PkyQ!)}anfe-Osnj%TO;=hHLKuCid6
z*Ghd5P+$sbjfsj*NV3L-4>!id^0vf0TZ}z{=eRhI7;}b+{WMTPZ_rY5tTTQZB&K
zt6W(ugH$#jqxf-MVS0rTu)ayz
z-5Z2>B7Tq!p<%?D!gvhFU@7QD9*-59N2_QvC0)hQIVdSbaqPOb#3uCx@q=x&l|zUM
zKa$o@c(>N@aK&!$QJ2Bt3{JFg^k#F1n{!89gIsE82F>yaQLip{1&)}9N^#$j)Gd=PYU)Dz6G!ZJezD9!V@Lv`Z^hAp2dtQUw-wu<13n
zPM9h_Kv;xFgwAWRHu1-g;i@6|phQJAVc`Xg@DbAD3welNP-*iSN>8vJ1N2m{#{fOC
zIe17t&BrJC=tMWs&rjOb_TW`p_&3_OoiOIM
zWjmMf?dCnUy-)KN-@V#reUs=7^*)Y$_lF4`@_Q_Abtd|`4O<&j)Q;@@+0-rW-Hk4d
zS$ObB{K>(|3(`_+pZ==Xtecwm-mv?^vYGDXyM7yxd1`r%{Y0xL(~kdA*tJ{J0Wa*}
zyIt5(r{>tTLNGJ>ourX3Bn*kSIH-COhZMFFjR}p7&drNWicjF|u?cZ}EHSJJ?~Hn&r-kXWV#Hm+d??Ml6shSI=;`QchEBvqi+#|Bavldr#El7#7{SzX^eREikm7M5^Z1{HR-*?C
z19_96QbIfkrjv(`2hk9oU#z*Y_Qhw`9XOTNs>eHJ)B1eeZRGm3W6wXc
z^P90}uf3yB>%n~Q<=0y-?|5RJ@?eJ7e2bTPRbP^Omx=7_$3(~cROo|R#bMU)j8+v0XjwPaI
zhh5kI_~Y5TZ@PZ-qp!~7+9u|=ADi9%+THQDMf*pr|F!AIXM6AORr<}>m!4X;sKvXp
zOAa^K(CCd{E)6<3_nHmYJ-VRuI@`tkL-pc+`#$nb=Y+n=@h@Ebazg&KXPjTPzTv}>
zmtL;*SN&d1Yo0A!<$k$-^PL@PuC^T8|IUUr?Wbnl)#aHd|GxLfIx~Lxb?BV0-}=e*
zYNxKvdcE-YuXEje`L`F|7mOSvu*cV
zM&Et%(Be9y@9%uD;o%LN8vW7X`;D28J@i}iTTb44-Ij+Mjc>e->)UqQwpw34dFJ?z
z20zv7(QJSBTTkxY)Xn|&rOtil9UR~5<(-{hTK>OfD-NCe;{E4W9ZP%t=C>Ys{=6yt{&}^#@wwj$9aF!3_xlGg$Cc&mVMP(~$-Tdbhhe_mSZ(f1JC1
zZ|mtJvz;9VKDd6vqW2o!JipP;ZIVVUnth^uTzl@RRlD*Nx;9^T>2k%@N1JV|HFW%(
z1}#U;yKPm+=|6nD`o;xw+DGJWop)hOkDTNue)6o!Jve&9!u8|UC3U-NPak`i1v>_%
zJ@VtG-sP!*-BTa;zAbCr_ytQW!;}=E*HFNX<~6j(#@b`~_*jmM&r7l;6JNtSL%Iqm
zms1E?!nZ4eK6*g#vksx#g#Rs=73JWU9Pw`HSO1Kx7piwIrLop
z9m5vS9}%#gD>t&Iy3dfLtXy+(`&Iiw!B^E#c0bT+v{BS@b(A0yp=y}
zsej1xkNeU#ul9~U+w!BPd$+#%^3(SWoVxeSpO4R6x3p1A<34Y`ttulOAb796WjQ$gM
zi>XAm_En_$uDyNw)@&iUqdBRdywD>-L#Cy$Dzpf43yV5IoAm+PLBz;%S3p_9%(|-=
zHls*Qi?IVoG8)qoOMy8{yi{-0(%-sF-=RIn7?)cna>CGPLJh*Uv%%cn1?){}_yU9;+S#O=``t7rmnvd*s
zuY1CwUEj3X-}%+-ik5dDj$bolS(hKzY<$1$yH{Sg`nKyYG~K@Ty}f5{da?Aa{{P*b
z6p=cvG>|zv_WlPyiR^!AjU_!GJ?d8KC69P}Qf_jTJw7HcE+Nm(5x3mJ!`Zbbm##qf
zk=FJ-Zl6CN+$tZU*GWs?nSp9q!v-TL`YyWl^#Bx|#hwaXlad+5sqESlO)4EVnF=i_
z^>9?ZkSn0-21Z1}I~}!&^tg+7r`t**Qt;!0O;Bc_2C1V2pA2zW@!G?C101#wSBVlq
z{6kMP3|~0$sJZKL`-w!Wn`@f1{=_>|W@J0BURAJjQu9Z+)KWjW-U6a|@9lod6C(CbJuNxPoj?WX4UaYtBfnT3!GWz71dl&bb*nInAwf`P)TXB=Ui?_f2
zOOp}%1UIPr&PPUf>bK;2i!Gd9RX{GrW{XQsicgA(i;GK+iOz-gAB-}JL$n5jL~c?s
z=k-s{iM4{WP}JEl&{-ZPe2y?`kl1l|BVpaPR^TJyw22ylFAjV=lmPy#n5_<_8sh@e
zfP*H0G$e-@lcoZGS(veIQ09rl_dXpFxAD0rPfTg(ur&TJzxlV(Z(cv;fg{^reLC)@
zAKJTi*Z8_t`N+E$ZH#&R*Zh`CceQ+A{Zj`%pEl`-Yaf37hgUt@qK=m)cb&86-PpZJ
zrjD73Zr*+0?cH}hYe^4CkGfel4%|k+Vv#-#>
z`3g9%2gE0mlE_`11GN`vtHoI+8tkB!n$e#+~iO~TO0&+lE;J=CvA4%2WvRoiC
z0p%ify8O-5FMfH86{QFE_gq+bX0p|P`lF3|mY$w{o&Vu(ugrL=`{K9(88vEk8n9zp
z!-8!yvfTS_?elizAG^!iU4TG<_eH2u_~LP0ovsjp6Ny@d<&3SH9x#zD(^=1*O^8ZTzx*&2E(_L7lWGQX-?D_7LqJW0$=cfMe)wKU
zgKHPMiZC;RtW1D0Ch$Xch!wYFY7Z@;6$6tbK`}K_F!wFAl+>J+E?zzV+s_`Z*Kh4}
z^9t7;IMb@(N&Z^aEqrX^Yzb5vLpI-aC)uNrxwg01N
z@3LNbkWtH*IjP&+<*4=x7b2!h2Rq#hK4>{
zOmuQyUbKx%vc=f=I3j)U!r&0}l>)<)TWl)?N1$=&paNehm!GfB5|(!eM&)E-)v!IA
z;ICmdgx>JACwJ}^Vm9qUSD|!j@SB1|kcUYZtd!EFK}to2mXI2|dNcN4^<(Pfhj#vY
zXzE{G_GW+4`1W6I{tqVIcy{cOO%F~k`g_94+LsSLx^lJehOd4@_XdG`C5
zMxTz~lX*k4vF|1x+W+{Twp~Z{==6Kq$~pa?cvrwKm!InQKUlof!iClfVMjf+ONdE`
zPqZh-C4w`x662F&MN^^hYNlKPbosn$uQ%$VFx(B`vCZBHy$+$90Mw$SZx-ERw=X1q
zK)oswD5+NgTReoIP!OFP_t=;mmCh
zeDhHk`^p`gj!chte)e<&{?y(C|2(SI^nGvr*s#{BBXvE)?|f$Mq_a~_HfZ`$w)euN)2-Y5
z5jcqUvy2sgTH>?nTI^wapb8w?lj7{j$$7a^(XsLIAdE!fFm%3J=#DCOC?|B(7>-Cs
z25^17Z$tywK6D$5NT-C5GGQ&8ZdGJZ)QtwgZ@*vC=-yA04)ksRV%cw#I(5(OvvW^^
z=a;Mluift)Z7+HK9_PfBOXo!Y`q6RcvbLKpF0FI(JN=K(`Csk3rd;*xo+gberhK=}
zKm4uRzMApppX-hfxn<3nvlqX-X63uxMs>C~>e*rYh`z_3Z8zJOQdoHAyO{e6>h?a^
zBYJM<`@1*j`{556Z6Ao=FWAApF}oMvyy-vLVEDz}%HSbuM0ynnjEjklu_Y%*$0X*)
z+G65~j(?bAf_&vZKVJm)JYbh!D*sf(xxiV~UT`)kOzjoV8vwqQcxW~livy1UYnXYC
z{9{O>>#DPQHWJ*Pg3HE48kSfn#KtQJK
zIh(&lI1#OdsI{`B0G|Y)03G}f_))@#Upx`QJtRpEI0KSPoFU02%#`v_BUSsOi=%dK
zIQ-)?)>-QsZMf9n+tZgOo?SHeOzEGY79&((dJ6->f|R$v?be
zW5&bNcmA)m@uK%?mk#Z6I;P>0Gd0hiJl$d2s&l8$+j9ojU%LJI6}ODd?Y@rh-uB|B
zz5Qd|Jx-mUHg031oy&UP)aJgXseG&UMcbCfW!!mSsbB@$9PlTYgQw2US;E{>0I
z=5F{SFmj_}^WyUo^P;2e@ljkXaqNY+mW0R0%ay{dUp9A95m@n47&&~v4Rl#Qv2?0X
z8sX#VuvfHaGCqouvh5P*wZg>qO7T%ht~66fav2|mJkt^T
z!7B;EN=gl4^%_0xVHHCt3gajZi8LcAyv8@|NGg*EF0v?c_=F2r!i}dgf|;leg75L+
z`@~UIx?YY{UdAr;ya2z#H>_($(k0voOOlNmwCXj^N>|L0R8k@a-oWtA8qF1R@b<#6
zhyhQ{?k@FVSKNdHY?N37+rus&SBCJqPJFR~OUrP{wv1@g@Vg7c!WFDVIJAQ0GAUTn
z&=ahX5-X5+rw>-46Dq_prmV4vBr|5=L_Y5yR7_Nex3ikr|Y!RHJ?LAxS_HLWoze1
z`40VhMv5ZByZ#a)B@u;RguhWfKN5%-DTpYP2aT-!9BbY**$t;njv${7h+n2SQsOw+jq_f%7?1TrRg?2S5)#;SOEao^(rJFT%_if
zURE@RWy2Q?*f?3{%i<5%
znKgvYLiR0oIKdV2Wb-I~DBH&F&Q()I+gK02o#N-j*E4t+k`uw`45RpPvQ@++6AeaR
zOrR^VhcLMI|Mn2_M);w9K}}^3t9CAy)H<|HVu00^1`A;UDX?%MTLwv7>Hj3LNdu6s
zrjhZm5O%X(DCMPHYOsvtg6KWYNJE3@WLXEhIbeIQxR0m%!HrF1LpKCgQWp8v_l*`TFTe+(T$ey
zYso{UB#=mTAIUMll0k9+d`a}5G)Th+3{VW`;kz-)3ubs%{)R}FQBOBo5>|JgUyq58
zu4Y?n6JscIDsAk;%_(E^Uk|&cPjE@qR|g8RsHPaQ4#I~Pi$sc^W2h8#mclz#w3?*h
z*{BKbwc-p(UMEO(a*m?P4J#!1D|^_E++C_}gfm6y;6kA%#qO;1dU|EQ06Xjo8y6Kh
zaiK4w2=#@efw+;_6GM2vHG^|FE9E`xxx3lr4|^ONhBpy*>?Y404Uya&L=e7=
zo#M=Q15;n115%;CNXK_C#7?MCohoey!uz1D*f`ku1cGNSTd~&*;xm=%V$xf79SVbC
zkisxnr5+s)$4WntB&*hL!ca{r?X1I_RPra4QLakqOA?Q{AKV4?74|v~1RKg>@|v!%
zBsLynUj^TM=rdNTsYqzVBTX>s&>6?+u8Dz=rXgDKe$EbVNxNdL$dj!Ua9=7gV3URT
z=@oy6#4fb)IvT9nKuUKWXRDNaE$8$+KPaN#5&YdUCSs!dbY9C@0<#TW-z)7Ab)_r
zyS!H5(tBar0ne<0QxE({9d468lOj#h8?Vg$7E%WATy(h_!Tlw*K)3_tLOoA9)C-o8
z#3UO(VLeSZtnpij(4_%{VWU!fkOn9+AJY90y7EykHA~nvEexzMeXSPwHyk8zQnPaP
zGqsnFJ}8`OBlQCPU7p|p!jBq1_+;tQN?1U8GOK{6u0cJErLkm=3cy{ccHkFP3I)=O
z5-mPaip-|FK-kIcffo@uY~VUK@$b`Jd2Vk}E@?6<*+Hovbc&E0u=vs*dApc14R+%D9k%`srw$SF
zZs;2@VBoXCQOzY_e}dO%%`7PQIc!|zq5>q_NRDeLzf4yPS^2|=1j`1E7hy1z4%@+v
zTNRJp3iUOlC})+gC=2yPq%Oh-%8=K?RqCxIeN!BfyrCW;9|Z;~&~{Kn<`sV{d3a_r
z6K)eq!7Ek-n`fiuvFhe9HAcdx3di+_
zUWwUl0WIDCn_XzcgMUbl3(48~f3pkPP8csEgrh}BZKT&?u{09tnf0Ti&9Yd?b73Z-
zYIBYdtXHV?4>
Date: Tue, 29 Aug 2023 16:21:28 +0800
Subject: [PATCH 02/16] =?UTF-8?q?Data=E6=A8=A1=E5=9D=97=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E9=87=87=E9=9B=86=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=E5=BC=80?=
=?UTF-8?q?=E5=8F=91v1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Controllers/Basic/ApiBaseController.cs | 12 +-
vol-net6/VOL.Data/Class1.cs | 7 +
.../data/IData_DeviceRepository.cs | 18 ++
.../data/IData_ProduceRepository.cs | 18 ++
.../IServices/data/IData_DeviceService.cs | 12 ++
.../IServices/data/IData_ProduceService.cs | 12 ++
.../data/Partial/IData_DeviceService.cs | 13 ++
.../data/Partial/IData_ProduceService.cs | 13 ++
.../data/Data_DeviceRepository.cs | 24 +++
.../data/Data_ProduceRepository.cs | 24 +++
.../Services/data/Data_DeviceService.cs | 27 +++
.../Services/data/Data_ProduceService.cs | 27 +++
.../data/Partial/Data_DeviceService.cs | 41 +++++
.../data/Partial/Data_ProduceService.cs | 41 +++++
vol-net6/VOL.Data/VOL.Data.csproj | 21 +++
.../DomainModels/data/Data_Device.cs | 125 +++++++++++++
.../DomainModels/data/Data_Produce.cs | 137 +++++++++++++++
.../DomainModels/data/partial/Data_Device.cs | 21 +++
.../DomainModels/data/partial/Data_Produce.cs | 21 +++
.../data/Data_DeviceMapConfig.cs | 16 ++
.../data/Data_ProduceMapConfig.cs | 16 ++
.../Controllers/Data/DataCaptureController.cs | 30 ++++
.../Controllers/Data/Data_DeviceController.cs | 21 +++
.../Data/Data_ProduceController.cs | 21 +++
.../Data/Partial/Data_DeviceController.cs | 33 ++++
.../Data/Partial/Data_ProduceController.cs | 33 ++++
.../Order/Partial/SellOrderController.cs | 2 +-
vol-net6/VOL.WebApi/VOL.WebApi.csproj | 1 +
vol-net6/VOL.WebApi/VOL.WebApi.csproj.user | 4 +-
vol-net6/VOL.sln | 6 +
.../src/extension/data/device/Data_Device.js | 75 ++++++++
.../extension/data/produce/Data_Produce.js | 75 ++++++++
vol-vue3/src/router/viewGird.js | 165 ++++++++++--------
.../src/views/data/device/Data_Device.vue | 71 ++++++++
.../src/views/data/produce/Data_Produce.vue | 75 ++++++++
35 files changed, 1179 insertions(+), 79 deletions(-)
create mode 100644 vol-net6/VOL.Data/Class1.cs
create mode 100644 vol-net6/VOL.Data/IRepositories/data/IData_DeviceRepository.cs
create mode 100644 vol-net6/VOL.Data/IRepositories/data/IData_ProduceRepository.cs
create mode 100644 vol-net6/VOL.Data/IServices/data/IData_DeviceService.cs
create mode 100644 vol-net6/VOL.Data/IServices/data/IData_ProduceService.cs
create mode 100644 vol-net6/VOL.Data/IServices/data/Partial/IData_DeviceService.cs
create mode 100644 vol-net6/VOL.Data/IServices/data/Partial/IData_ProduceService.cs
create mode 100644 vol-net6/VOL.Data/Repositories/data/Data_DeviceRepository.cs
create mode 100644 vol-net6/VOL.Data/Repositories/data/Data_ProduceRepository.cs
create mode 100644 vol-net6/VOL.Data/Services/data/Data_DeviceService.cs
create mode 100644 vol-net6/VOL.Data/Services/data/Data_ProduceService.cs
create mode 100644 vol-net6/VOL.Data/Services/data/Partial/Data_DeviceService.cs
create mode 100644 vol-net6/VOL.Data/Services/data/Partial/Data_ProduceService.cs
create mode 100644 vol-net6/VOL.Data/VOL.Data.csproj
create mode 100644 vol-net6/VOL.Entity/DomainModels/data/Data_Device.cs
create mode 100644 vol-net6/VOL.Entity/DomainModels/data/Data_Produce.cs
create mode 100644 vol-net6/VOL.Entity/DomainModels/data/partial/Data_Device.cs
create mode 100644 vol-net6/VOL.Entity/DomainModels/data/partial/Data_Produce.cs
create mode 100644 vol-net6/VOL.Entity/MappingConfiguration/data/Data_DeviceMapConfig.cs
create mode 100644 vol-net6/VOL.Entity/MappingConfiguration/data/Data_ProduceMapConfig.cs
create mode 100644 vol-net6/VOL.WebApi/Controllers/Data/DataCaptureController.cs
create mode 100644 vol-net6/VOL.WebApi/Controllers/Data/Data_DeviceController.cs
create mode 100644 vol-net6/VOL.WebApi/Controllers/Data/Data_ProduceController.cs
create mode 100644 vol-net6/VOL.WebApi/Controllers/Data/Partial/Data_DeviceController.cs
create mode 100644 vol-net6/VOL.WebApi/Controllers/Data/Partial/Data_ProduceController.cs
create mode 100644 vol-vue3/src/extension/data/device/Data_Device.js
create mode 100644 vol-vue3/src/extension/data/produce/Data_Produce.js
create mode 100644 vol-vue3/src/views/data/device/Data_Device.vue
create mode 100644 vol-vue3/src/views/data/produce/Data_Produce.vue
diff --git a/vol-net6/VOL.Core/Controllers/Basic/ApiBaseController.cs b/vol-net6/VOL.Core/Controllers/Basic/ApiBaseController.cs
index adec094..90efdad 100644
--- a/vol-net6/VOL.Core/Controllers/Basic/ApiBaseController.cs
+++ b/vol-net6/VOL.Core/Controllers/Basic/ApiBaseController.cs
@@ -62,7 +62,7 @@ namespace VOL.Core.Controllers.Basic
///
[ApiActionPermission(Enums.ActionPermissionOptions.Search)]
[HttpPost, Route("GetDetailPage")]
- [ApiExplorerSettings(IgnoreApi = true)]
+ [ApiExplorerSettings(IgnoreApi = false)] // 设置swagger文档不忽略改接口
public virtual ActionResult GetDetailPage([FromBody] PageDataOptions loadData)
{
return Content(InvokeService("GetDetailPage", new object[] { loadData }).Serialize());
@@ -167,7 +167,7 @@ namespace VOL.Core.Controllers.Basic
///
[ApiActionPermission(Enums.ActionPermissionOptions.Delete)]
[HttpPost, Route("Del")]
- [ApiExplorerSettings(IgnoreApi = true)]
+ [ApiExplorerSettings(IgnoreApi = false)] // 设置swagger文档不忽略改接口
public virtual ActionResult Del([FromBody] object[] keys)
{
_baseWebResponseContent = InvokeService("Del", new object[] { keys, true }) as WebResponseContent;
@@ -181,7 +181,7 @@ namespace VOL.Core.Controllers.Basic
///
[ApiActionPermission(Enums.ActionPermissionOptions.Audit)]
[HttpPost, Route("Audit")]
- [ApiExplorerSettings(IgnoreApi = true)]
+ [ApiExplorerSettings(IgnoreApi = false)] // 设置swagger文档不忽略改接口
public virtual ActionResult Audit([FromBody] object[] id, int? auditStatus, string auditReason)
{
_baseWebResponseContent = InvokeService("Audit", new object[] { id, auditStatus, auditReason }) as WebResponseContent;
@@ -195,7 +195,7 @@ namespace VOL.Core.Controllers.Basic
///
[ApiActionPermission(Enums.ActionPermissionOptions.Add)]
[HttpPost, Route("Add")]
- [ApiExplorerSettings(IgnoreApi = true)]
+ [ApiExplorerSettings(IgnoreApi = false)] // 设置swagger文档不忽略改接口
public virtual ActionResult Add([FromBody] SaveModel saveModel)
{
_baseWebResponseContent = InvokeService("Add",
@@ -212,8 +212,8 @@ namespace VOL.Core.Controllers.Basic
///
///
[ApiActionPermission(Enums.ActionPermissionOptions.Update)]
- [HttpPost, Route("Update")]
- [ApiExplorerSettings(IgnoreApi = true)]
+ [HttpPost, Route("Update")]
+ [ApiExplorerSettings(IgnoreApi = false)] // 设置swagger文档不忽略改接口
public virtual ActionResult Update([FromBody] SaveModel saveModel)
{
_baseWebResponseContent = InvokeService("Update", new object[] { saveModel }) as WebResponseContent;
diff --git a/vol-net6/VOL.Data/Class1.cs b/vol-net6/VOL.Data/Class1.cs
new file mode 100644
index 0000000..330ac58
--- /dev/null
+++ b/vol-net6/VOL.Data/Class1.cs
@@ -0,0 +1,7 @@
+namespace VOL.Data
+{
+ public class Class1
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/vol-net6/VOL.Data/IRepositories/data/IData_DeviceRepository.cs b/vol-net6/VOL.Data/IRepositories/data/IData_DeviceRepository.cs
new file mode 100644
index 0000000..51406a6
--- /dev/null
+++ b/vol-net6/VOL.Data/IRepositories/data/IData_DeviceRepository.cs
@@ -0,0 +1,18 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹IData_DeviceRepository编写接口
+ */
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using VOL.Core.BaseProvider;
+using VOL.Entity.DomainModels;
+using VOL.Core.Extensions.AutofacManager;
+namespace VOL.Data.IRepositories
+{
+ public partial interface IData_DeviceRepository : IDependency,IRepository
+ {
+ }
+}
diff --git a/vol-net6/VOL.Data/IRepositories/data/IData_ProduceRepository.cs b/vol-net6/VOL.Data/IRepositories/data/IData_ProduceRepository.cs
new file mode 100644
index 0000000..3882874
--- /dev/null
+++ b/vol-net6/VOL.Data/IRepositories/data/IData_ProduceRepository.cs
@@ -0,0 +1,18 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹IData_ProduceRepository编写接口
+ */
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using VOL.Core.BaseProvider;
+using VOL.Entity.DomainModels;
+using VOL.Core.Extensions.AutofacManager;
+namespace VOL.Data.IRepositories
+{
+ public partial interface IData_ProduceRepository : IDependency,IRepository
+ {
+ }
+}
diff --git a/vol-net6/VOL.Data/IServices/data/IData_DeviceService.cs b/vol-net6/VOL.Data/IServices/data/IData_DeviceService.cs
new file mode 100644
index 0000000..9b84bad
--- /dev/null
+++ b/vol-net6/VOL.Data/IServices/data/IData_DeviceService.cs
@@ -0,0 +1,12 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ */
+using VOL.Core.BaseProvider;
+using VOL.Entity.DomainModels;
+
+namespace VOL.Data.IServices
+{
+ public partial interface IData_DeviceService : IService
+ {
+ }
+}
diff --git a/vol-net6/VOL.Data/IServices/data/IData_ProduceService.cs b/vol-net6/VOL.Data/IServices/data/IData_ProduceService.cs
new file mode 100644
index 0000000..d82fae9
--- /dev/null
+++ b/vol-net6/VOL.Data/IServices/data/IData_ProduceService.cs
@@ -0,0 +1,12 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ */
+using VOL.Core.BaseProvider;
+using VOL.Entity.DomainModels;
+
+namespace VOL.Data.IServices
+{
+ public partial interface IData_ProduceService : IService
+ {
+ }
+}
diff --git a/vol-net6/VOL.Data/IServices/data/Partial/IData_DeviceService.cs b/vol-net6/VOL.Data/IServices/data/Partial/IData_DeviceService.cs
new file mode 100644
index 0000000..85d1fe6
--- /dev/null
+++ b/vol-net6/VOL.Data/IServices/data/Partial/IData_DeviceService.cs
@@ -0,0 +1,13 @@
+/*
+*所有关于Data_Device类的业务代码接口应在此处编写
+*/
+using VOL.Core.BaseProvider;
+using VOL.Entity.DomainModels;
+using VOL.Core.Utilities;
+using System.Linq.Expressions;
+namespace VOL.Data.IServices
+{
+ public partial interface IData_DeviceService
+ {
+ }
+ }
diff --git a/vol-net6/VOL.Data/IServices/data/Partial/IData_ProduceService.cs b/vol-net6/VOL.Data/IServices/data/Partial/IData_ProduceService.cs
new file mode 100644
index 0000000..c7c8b38
--- /dev/null
+++ b/vol-net6/VOL.Data/IServices/data/Partial/IData_ProduceService.cs
@@ -0,0 +1,13 @@
+/*
+*所有关于Data_Produce类的业务代码接口应在此处编写
+*/
+using VOL.Core.BaseProvider;
+using VOL.Entity.DomainModels;
+using VOL.Core.Utilities;
+using System.Linq.Expressions;
+namespace VOL.Data.IServices
+{
+ public partial interface IData_ProduceService
+ {
+ }
+ }
diff --git a/vol-net6/VOL.Data/Repositories/data/Data_DeviceRepository.cs b/vol-net6/VOL.Data/Repositories/data/Data_DeviceRepository.cs
new file mode 100644
index 0000000..2f3ab54
--- /dev/null
+++ b/vol-net6/VOL.Data/Repositories/data/Data_DeviceRepository.cs
@@ -0,0 +1,24 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹Data_DeviceRepository编写代码
+ */
+using VOL.Data.IRepositories;
+using VOL.Core.BaseProvider;
+using VOL.Core.EFDbContext;
+using VOL.Core.Extensions.AutofacManager;
+using VOL.Entity.DomainModels;
+
+namespace VOL.Data.Repositories
+{
+ public partial class Data_DeviceRepository : RepositoryBase , IData_DeviceRepository
+ {
+ public Data_DeviceRepository(VOLContext dbContext)
+ : base(dbContext)
+ {
+
+ }
+ public static IData_DeviceRepository Instance
+ {
+ get { return AutofacContainerModule.GetService(); } }
+ }
+}
diff --git a/vol-net6/VOL.Data/Repositories/data/Data_ProduceRepository.cs b/vol-net6/VOL.Data/Repositories/data/Data_ProduceRepository.cs
new file mode 100644
index 0000000..d06fa89
--- /dev/null
+++ b/vol-net6/VOL.Data/Repositories/data/Data_ProduceRepository.cs
@@ -0,0 +1,24 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ *Repository提供数据库操作,如果要增加数据库操作请在当前目录下Partial文件夹Data_ProduceRepository编写代码
+ */
+using VOL.Data.IRepositories;
+using VOL.Core.BaseProvider;
+using VOL.Core.EFDbContext;
+using VOL.Core.Extensions.AutofacManager;
+using VOL.Entity.DomainModels;
+
+namespace VOL.Data.Repositories
+{
+ public partial class Data_ProduceRepository : RepositoryBase , IData_ProduceRepository
+ {
+ public Data_ProduceRepository(VOLContext dbContext)
+ : base(dbContext)
+ {
+
+ }
+ public static IData_ProduceRepository Instance
+ {
+ get { return AutofacContainerModule.GetService(); } }
+ }
+}
diff --git a/vol-net6/VOL.Data/Services/data/Data_DeviceService.cs b/vol-net6/VOL.Data/Services/data/Data_DeviceService.cs
new file mode 100644
index 0000000..6642633
--- /dev/null
+++ b/vol-net6/VOL.Data/Services/data/Data_DeviceService.cs
@@ -0,0 +1,27 @@
+/*
+ *Author:jxx
+ *Contact:283591387@qq.com
+ *代码由框架生成,此处任何更改都可能导致被代码生成器覆盖
+ *所有业务编写全部应在Partial文件夹下Data_DeviceService与IData_DeviceService中编写
+ */
+using VOL.Data.IRepositories;
+using VOL.Data.IServices;
+using VOL.Core.BaseProvider;
+using VOL.Core.Extensions.AutofacManager;
+using VOL.Entity.DomainModels;
+
+namespace VOL.Data.Services
+{
+ public partial class Data_DeviceService : ServiceBase
+ , IData_DeviceService, IDependency
+ {
+ public Data_DeviceService(IData_DeviceRepository repository)
+ : base(repository)
+ {
+ Init(repository);
+ }
+ public static IData_DeviceService Instance
+ {
+ get { return AutofacContainerModule.GetService(); } }
+ }
+ }
diff --git a/vol-net6/VOL.Data/Services/data/Data_ProduceService.cs b/vol-net6/VOL.Data/Services/data/Data_ProduceService.cs
new file mode 100644
index 0000000..fbc8bd7
--- /dev/null
+++ b/vol-net6/VOL.Data/Services/data/Data_ProduceService.cs
@@ -0,0 +1,27 @@
+/*
+ *Author:jxx
+ *Contact:283591387@qq.com
+ *代码由框架生成,此处任何更改都可能导致被代码生成器覆盖
+ *所有业务编写全部应在Partial文件夹下Data_ProduceService与IData_ProduceService中编写
+ */
+using VOL.Data.IRepositories;
+using VOL.Data.IServices;
+using VOL.Core.BaseProvider;
+using VOL.Core.Extensions.AutofacManager;
+using VOL.Entity.DomainModels;
+
+namespace VOL.Data.Services
+{
+ public partial class Data_ProduceService : ServiceBase
+ , IData_ProduceService, IDependency
+ {
+ public Data_ProduceService(IData_ProduceRepository repository)
+ : base(repository)
+ {
+ Init(repository);
+ }
+ public static IData_ProduceService Instance
+ {
+ get { return AutofacContainerModule.GetService(); } }
+ }
+ }
diff --git a/vol-net6/VOL.Data/Services/data/Partial/Data_DeviceService.cs b/vol-net6/VOL.Data/Services/data/Partial/Data_DeviceService.cs
new file mode 100644
index 0000000..330cada
--- /dev/null
+++ b/vol-net6/VOL.Data/Services/data/Partial/Data_DeviceService.cs
@@ -0,0 +1,41 @@
+/*
+ *所有关于Data_Device类的业务代码应在此处编写
+*可使用repository.调用常用方法,获取EF/Dapper等信息
+*如果需要事务请使用repository.DbContextBeginTransaction
+*也可使用DBServerProvider.手动获取数据库相关信息
+*用户信息、权限、角色等使用UserContext.Current操作
+*Data_DeviceService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter
+*/
+using VOL.Core.BaseProvider;
+using VOL.Core.Extensions.AutofacManager;
+using VOL.Entity.DomainModels;
+using System.Linq;
+using VOL.Core.Utilities;
+using System.Linq.Expressions;
+using VOL.Core.Extensions;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using VOL.Data.IRepositories;
+
+namespace VOL.Data.Services
+{
+ public partial class Data_DeviceService
+ {
+ private readonly IHttpContextAccessor _httpContextAccessor;
+ private readonly IData_DeviceRepository _repository;//访问数据库
+
+ [ActivatorUtilitiesConstructor]
+ public Data_DeviceService(
+ IData_DeviceRepository dbRepository,
+ IHttpContextAccessor httpContextAccessor
+ )
+ : base(dbRepository)
+ {
+ _httpContextAccessor = httpContextAccessor;
+ _repository = dbRepository;
+ //多租户会用到这init代码,其他情况可以不用
+ //base.Init(dbRepository);
+ }
+ }
+}
diff --git a/vol-net6/VOL.Data/Services/data/Partial/Data_ProduceService.cs b/vol-net6/VOL.Data/Services/data/Partial/Data_ProduceService.cs
new file mode 100644
index 0000000..1d3eab6
--- /dev/null
+++ b/vol-net6/VOL.Data/Services/data/Partial/Data_ProduceService.cs
@@ -0,0 +1,41 @@
+/*
+ *所有关于Data_Produce类的业务代码应在此处编写
+*可使用repository.调用常用方法,获取EF/Dapper等信息
+*如果需要事务请使用repository.DbContextBeginTransaction
+*也可使用DBServerProvider.手动获取数据库相关信息
+*用户信息、权限、角色等使用UserContext.Current操作
+*Data_ProduceService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter
+*/
+using VOL.Core.BaseProvider;
+using VOL.Core.Extensions.AutofacManager;
+using VOL.Entity.DomainModels;
+using System.Linq;
+using VOL.Core.Utilities;
+using System.Linq.Expressions;
+using VOL.Core.Extensions;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using VOL.Data.IRepositories;
+
+namespace VOL.Data.Services
+{
+ public partial class Data_ProduceService
+ {
+ private readonly IHttpContextAccessor _httpContextAccessor;
+ private readonly IData_ProduceRepository _repository;//访问数据库
+
+ [ActivatorUtilitiesConstructor]
+ public Data_ProduceService(
+ IData_ProduceRepository dbRepository,
+ IHttpContextAccessor httpContextAccessor
+ )
+ : base(dbRepository)
+ {
+ _httpContextAccessor = httpContextAccessor;
+ _repository = dbRepository;
+ //多租户会用到这init代码,其他情况可以不用
+ //base.Init(dbRepository);
+ }
+ }
+}
diff --git a/vol-net6/VOL.Data/VOL.Data.csproj b/vol-net6/VOL.Data/VOL.Data.csproj
new file mode 100644
index 0000000..1a8c46c
--- /dev/null
+++ b/vol-net6/VOL.Data/VOL.Data.csproj
@@ -0,0 +1,21 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vol-net6/VOL.Entity/DomainModels/data/Data_Device.cs b/vol-net6/VOL.Entity/DomainModels/data/Data_Device.cs
new file mode 100644
index 0000000..f103520
--- /dev/null
+++ b/vol-net6/VOL.Entity/DomainModels/data/Data_Device.cs
@@ -0,0 +1,125 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ *如果数据库字段发生变化,请在代码生器重新生成此Model
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using VOL.Entity.SystemModels;
+
+namespace VOL.Entity.DomainModels
+{
+ [Entity(TableCnName = "设备运行",TableName = "Data_Device")]
+ public partial class Data_Device:BaseEntity
+ {
+ ///
+ ///ID
+ ///
+ [Key]
+ [Display(Name ="ID")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ [Required(AllowEmptyStrings=false)]
+ public int id { get; set; }
+
+ ///
+ ///电机温度
+ ///
+ [Display(Name ="电机温度")]
+ [DisplayFormat(DataFormatString="10,2")]
+ [Column(TypeName="decimal")]
+ [Editable(true)]
+ public decimal? temperature { get; set; }
+
+ ///
+ ///母线电压
+ ///
+ [Display(Name ="母线电压")]
+ [DisplayFormat(DataFormatString="10,2")]
+ [Column(TypeName="decimal")]
+ [Editable(true)]
+ public decimal? potential { get; set; }
+
+ ///
+ ///实际电流
+ ///
+ [Display(Name ="实际电流")]
+ [DisplayFormat(DataFormatString="10,2")]
+ [Column(TypeName="decimal")]
+ [Editable(true)]
+ public decimal? current { get; set; }
+
+ ///
+ ///加工程序号
+ ///
+ [Display(Name ="加工程序号")]
+ [MaxLength(60)]
+ [Column(TypeName="nvarchar(60)")]
+ [Editable(true)]
+ public string processno { get; set; }
+
+ ///
+ ///运行模式
+ ///
+ [Display(Name ="运行模式")]
+ [Column(TypeName="short")]
+ [Editable(true)]
+ public short? run_mode { get; set; }
+
+ ///
+ ///
+ ///
+ [Display(Name ="CreateID")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ public int? CreateID { get; set; }
+
+ ///
+ ///
+ ///
+ [Display(Name ="Creator")]
+ [MaxLength(255)]
+ [Column(TypeName="nvarchar(255)")]
+ [Editable(true)]
+ public string Creator { get; set; }
+
+ ///
+ ///记录时间
+ ///
+ [Display(Name ="记录时间")]
+ [Column(TypeName="datetime")]
+ [Editable(true)]
+ public DateTime? CreateDate { get; set; }
+
+ ///
+ ///
+ ///
+ [Display(Name ="ModifyID")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ public int? ModifyID { get; set; }
+
+ ///
+ ///
+ ///
+ [Display(Name ="Modifier")]
+ [MaxLength(255)]
+ [Column(TypeName="nvarchar(255)")]
+ [Editable(true)]
+ public string Modifier { get; set; }
+
+ ///
+ ///
+ ///
+ [Display(Name ="ModifyDate")]
+ [Column(TypeName="datetime")]
+ [Editable(true)]
+ public DateTime? ModifyDate { get; set; }
+
+
+ }
+}
\ No newline at end of file
diff --git a/vol-net6/VOL.Entity/DomainModels/data/Data_Produce.cs b/vol-net6/VOL.Entity/DomainModels/data/Data_Produce.cs
new file mode 100644
index 0000000..8d78f92
--- /dev/null
+++ b/vol-net6/VOL.Entity/DomainModels/data/Data_Produce.cs
@@ -0,0 +1,137 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ *如果数据库字段发生变化,请在代码生器重新生成此Model
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using VOL.Entity.SystemModels;
+
+namespace VOL.Entity.DomainModels
+{
+ [Entity(TableCnName = "生产数据",TableName = "Data_Produce")]
+ public partial class Data_Produce:BaseEntity
+ {
+ ///
+ ///ID
+ ///
+ [Key]
+ [Display(Name ="ID")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ [Required(AllowEmptyStrings=false)]
+ public int id { get; set; }
+
+ ///
+ ///待机时长
+ ///
+ [Display(Name ="待机时长")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ public int? standby_time { get; set; }
+
+ ///
+ ///运行时长
+ ///
+ [Display(Name ="运行时长")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ public int? run_time { get; set; }
+
+ ///
+ ///运行状态
+ ///
+ [Display(Name ="运行状态")]
+ [Column(TypeName="sbyte")]
+ [Editable(true)]
+ public sbyte? status { get; set; }
+
+ ///
+ ///当班产量
+ ///
+ [Display(Name ="当班产量")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ public int? turnout { get; set; }
+
+ ///
+ ///工单 1 产量
+ ///
+ [Display(Name ="工单 1 产量")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ public int? turnout_one { get; set; }
+
+ ///
+ ///工单 2 产量
+ ///
+ [Display(Name ="工单 2 产量")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ public int? turnout_two { get; set; }
+
+ ///
+ ///工单 3 产量
+ ///
+ [Display(Name ="工单 3 产量")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ public int? turnout_three { get; set; }
+
+ ///
+ ///
+ ///
+ [Display(Name ="CreateID")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ public int? CreateID { get; set; }
+
+ ///
+ ///
+ ///
+ [Display(Name ="Creator")]
+ [MaxLength(255)]
+ [Column(TypeName="nvarchar(255)")]
+ [Editable(true)]
+ public string Creator { get; set; }
+
+ ///
+ ///记录时间
+ ///
+ [Display(Name ="记录时间")]
+ [Column(TypeName="datetime")]
+ [Editable(true)]
+ public DateTime? CreateDate { get; set; }
+
+ ///
+ ///
+ ///
+ [Display(Name ="ModifyID")]
+ [Column(TypeName="int")]
+ [Editable(true)]
+ public int? ModifyID { get; set; }
+
+ ///
+ ///
+ ///
+ [Display(Name ="Modifier")]
+ [MaxLength(255)]
+ [Column(TypeName="nvarchar(255)")]
+ [Editable(true)]
+ public string Modifier { get; set; }
+
+ ///
+ ///
+ ///
+ [Display(Name ="ModifyDate")]
+ [Column(TypeName="datetime")]
+ [Editable(true)]
+ public DateTime? ModifyDate { get; set; }
+
+
+ }
+}
\ No newline at end of file
diff --git a/vol-net6/VOL.Entity/DomainModels/data/partial/Data_Device.cs b/vol-net6/VOL.Entity/DomainModels/data/partial/Data_Device.cs
new file mode 100644
index 0000000..4e6fdba
--- /dev/null
+++ b/vol-net6/VOL.Entity/DomainModels/data/partial/Data_Device.cs
@@ -0,0 +1,21 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ *如果数据库字段发生变化,请在代码生器重新生成此Model
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using VOL.Entity.SystemModels;
+
+namespace VOL.Entity.DomainModels
+{
+
+ public partial class Data_Device
+ {
+ //此处配置字段(字段配置见此model的另一个partial),如果表中没有此字段请加上 [NotMapped]属性,否则会异常
+ }
+}
\ No newline at end of file
diff --git a/vol-net6/VOL.Entity/DomainModels/data/partial/Data_Produce.cs b/vol-net6/VOL.Entity/DomainModels/data/partial/Data_Produce.cs
new file mode 100644
index 0000000..f02ed98
--- /dev/null
+++ b/vol-net6/VOL.Entity/DomainModels/data/partial/Data_Produce.cs
@@ -0,0 +1,21 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ *如果数据库字段发生变化,请在代码生器重新生成此Model
+ */
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using VOL.Entity.SystemModels;
+
+namespace VOL.Entity.DomainModels
+{
+
+ public partial class Data_Produce
+ {
+ //此处配置字段(字段配置见此model的另一个partial),如果表中没有此字段请加上 [NotMapped]属性,否则会异常
+ }
+}
\ No newline at end of file
diff --git a/vol-net6/VOL.Entity/MappingConfiguration/data/Data_DeviceMapConfig.cs b/vol-net6/VOL.Entity/MappingConfiguration/data/Data_DeviceMapConfig.cs
new file mode 100644
index 0000000..43c5c72
--- /dev/null
+++ b/vol-net6/VOL.Entity/MappingConfiguration/data/Data_DeviceMapConfig.cs
@@ -0,0 +1,16 @@
+using VOL.Entity.MappingConfiguration;
+using VOL.Entity.DomainModels;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace VOL.Entity.MappingConfiguration
+{
+ public class Data_DeviceMapConfig : EntityMappingConfiguration
+ {
+ public override void Map(EntityTypeBuilder
+ builderTable)
+ {
+ //b.Property(x => x.StorageName).HasMaxLength(45);
+ }
+ }
+}
+
diff --git a/vol-net6/VOL.Entity/MappingConfiguration/data/Data_ProduceMapConfig.cs b/vol-net6/VOL.Entity/MappingConfiguration/data/Data_ProduceMapConfig.cs
new file mode 100644
index 0000000..93629b0
--- /dev/null
+++ b/vol-net6/VOL.Entity/MappingConfiguration/data/Data_ProduceMapConfig.cs
@@ -0,0 +1,16 @@
+using VOL.Entity.MappingConfiguration;
+using VOL.Entity.DomainModels;
+using Microsoft.EntityFrameworkCore.Metadata.Builders;
+
+namespace VOL.Entity.MappingConfiguration
+{
+ public class Data_ProduceMapConfig : EntityMappingConfiguration
+ {
+ public override void Map(EntityTypeBuilder
+ builderTable)
+ {
+ //b.Property(x => x.StorageName).HasMaxLength(45);
+ }
+ }
+}
+
diff --git a/vol-net6/VOL.WebApi/Controllers/Data/DataCaptureController.cs b/vol-net6/VOL.WebApi/Controllers/Data/DataCaptureController.cs
new file mode 100644
index 0000000..0ed452a
--- /dev/null
+++ b/vol-net6/VOL.WebApi/Controllers/Data/DataCaptureController.cs
@@ -0,0 +1,30 @@
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Authorization;
+using System;
+using VOL.Core.Filters;
+
+namespace VOL.WebApi.Controllers.Data
+{
+ ///
+ /// 数据采集API类
+ ///
+ [Route("api/Data_Capture")]
+ [AllowAnonymous]
+ public class DataCaptureController : Controller
+ {
+
+ ///
+ /// 测试采集接口
+ ///
+ /// IActionResult
+ //[ApiTask]
+ [HttpGet, HttpPost, Route("test")]
+ public IActionResult Test()
+ {
+ return Content(DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss"));
+
+ }
+
+ }
+}
diff --git a/vol-net6/VOL.WebApi/Controllers/Data/Data_DeviceController.cs b/vol-net6/VOL.WebApi/Controllers/Data/Data_DeviceController.cs
new file mode 100644
index 0000000..d6fd483
--- /dev/null
+++ b/vol-net6/VOL.WebApi/Controllers/Data/Data_DeviceController.cs
@@ -0,0 +1,21 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ *如果要增加方法请在当前目录下Partial文件夹Data_DeviceController编写
+ */
+using Microsoft.AspNetCore.Mvc;
+using VOL.Core.Controllers.Basic;
+using VOL.Entity.AttributeManager;
+using VOL.Data.IServices;
+namespace VOL.Data.Controllers
+{
+ [Route("api/Data_Device")]
+ [PermissionTable(Name = "Data_Device")]
+ public partial class Data_DeviceController : ApiBaseController
+ {
+ public Data_DeviceController(IData_DeviceService service)
+ : base(service)
+ {
+ }
+ }
+}
+
diff --git a/vol-net6/VOL.WebApi/Controllers/Data/Data_ProduceController.cs b/vol-net6/VOL.WebApi/Controllers/Data/Data_ProduceController.cs
new file mode 100644
index 0000000..59af1b0
--- /dev/null
+++ b/vol-net6/VOL.WebApi/Controllers/Data/Data_ProduceController.cs
@@ -0,0 +1,21 @@
+/*
+ *代码由框架生成,任何更改都可能导致被代码生成器覆盖
+ *如果要增加方法请在当前目录下Partial文件夹Data_ProduceController编写
+ */
+using Microsoft.AspNetCore.Mvc;
+using VOL.Core.Controllers.Basic;
+using VOL.Entity.AttributeManager;
+using VOL.Data.IServices;
+namespace VOL.Data.Controllers
+{
+ [Route("api/Data_Produce")]
+ [PermissionTable(Name = "Data_Produce")]
+ public partial class Data_ProduceController : ApiBaseController
+ {
+ public Data_ProduceController(IData_ProduceService service)
+ : base(service)
+ {
+ }
+ }
+}
+
diff --git a/vol-net6/VOL.WebApi/Controllers/Data/Partial/Data_DeviceController.cs b/vol-net6/VOL.WebApi/Controllers/Data/Partial/Data_DeviceController.cs
new file mode 100644
index 0000000..3c9513c
--- /dev/null
+++ b/vol-net6/VOL.WebApi/Controllers/Data/Partial/Data_DeviceController.cs
@@ -0,0 +1,33 @@
+/*
+ *接口编写处...
+*如果接口需要做Action的权限验证,请在Action上使用属性
+*如: [ApiActionPermission("Data_Device",Enums.ActionPermissionOptions.Search)]
+ */
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using VOL.Entity.DomainModels;
+using VOL.Data.IServices;
+
+namespace VOL.Data.Controllers
+{
+ public partial class Data_DeviceController
+ {
+ private readonly IData_DeviceService _service;//访问业务代码
+ private readonly IHttpContextAccessor _httpContextAccessor;
+
+ [ActivatorUtilitiesConstructor]
+ public Data_DeviceController(
+ IData_DeviceService service,
+ IHttpContextAccessor httpContextAccessor
+ )
+ : base(service)
+ {
+ _service = service;
+ _httpContextAccessor = httpContextAccessor;
+ }
+ }
+}
diff --git a/vol-net6/VOL.WebApi/Controllers/Data/Partial/Data_ProduceController.cs b/vol-net6/VOL.WebApi/Controllers/Data/Partial/Data_ProduceController.cs
new file mode 100644
index 0000000..62cc1c2
--- /dev/null
+++ b/vol-net6/VOL.WebApi/Controllers/Data/Partial/Data_ProduceController.cs
@@ -0,0 +1,33 @@
+/*
+ *接口编写处...
+*如果接口需要做Action的权限验证,请在Action上使用属性
+*如: [ApiActionPermission("Data_Produce",Enums.ActionPermissionOptions.Search)]
+ */
+using Microsoft.AspNetCore.Mvc;
+using System;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using Microsoft.Extensions.DependencyInjection;
+using Microsoft.AspNetCore.Http;
+using VOL.Entity.DomainModels;
+using VOL.Data.IServices;
+
+namespace VOL.Data.Controllers
+{
+ public partial class Data_ProduceController
+ {
+ private readonly IData_ProduceService _service;//访问业务代码
+ private readonly IHttpContextAccessor _httpContextAccessor;
+
+ [ActivatorUtilitiesConstructor]
+ public Data_ProduceController(
+ IData_ProduceService service,
+ IHttpContextAccessor httpContextAccessor
+ )
+ : base(service)
+ {
+ _service = service;
+ _httpContextAccessor = httpContextAccessor;
+ }
+ }
+}
diff --git a/vol-net6/VOL.WebApi/Controllers/Order/Partial/SellOrderController.cs b/vol-net6/VOL.WebApi/Controllers/Order/Partial/SellOrderController.cs
index b3cd145..28cfc73 100644
--- a/vol-net6/VOL.WebApi/Controllers/Order/Partial/SellOrderController.cs
+++ b/vol-net6/VOL.WebApi/Controllers/Order/Partial/SellOrderController.cs
@@ -44,7 +44,7 @@ namespace VOL.Order.Controllers
[HttpPost]
[ApiActionPermission("SellOrder", Core.Enums.ActionPermissionOptions.Search)]
- [Route("getServiceDate"), FixedToken]//FixedToken请求此接口只要token合法就能能过//AllowAnonymous
+ [Route("getServiceDate"), FixedToken]//FixedToken 接口token永不过期 //AllowAnonymous 无需验证即可访问
public IActionResult GetServiceDate()
{
return Content(Service.GetServiceDate());
diff --git a/vol-net6/VOL.WebApi/VOL.WebApi.csproj b/vol-net6/VOL.WebApi/VOL.WebApi.csproj
index 243612c..d507653 100644
--- a/vol-net6/VOL.WebApi/VOL.WebApi.csproj
+++ b/vol-net6/VOL.WebApi/VOL.WebApi.csproj
@@ -31,6 +31,7 @@
+
diff --git a/vol-net6/VOL.WebApi/VOL.WebApi.csproj.user b/vol-net6/VOL.WebApi/VOL.WebApi.csproj.user
index 401c7a8..b466ae3 100644
--- a/vol-net6/VOL.WebApi/VOL.WebApi.csproj.user
+++ b/vol-net6/VOL.WebApi/VOL.WebApi.csproj.user
@@ -6,8 +6,8 @@
VOL.WebApi
E:\jxx\Vue.NetCore\.Net6版本\VOL.WebApi\Properties\PublishProfiles\FolderProfile1.pubxml
- MvcControllerEmptyScaffolder
- root/Common/MVC/Controller
+ ApiControllerEmptyScaffolder
+ root/Common/Api
ProjectDebugger
diff --git a/vol-net6/VOL.sln b/vol-net6/VOL.sln
index 6a43447..f14ffce 100644
--- a/vol-net6/VOL.sln
+++ b/vol-net6/VOL.sln
@@ -17,6 +17,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VOL.Order", "VOL.Order\VOL.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "VOL.WebApi", "VOL.WebApi\VOL.WebApi.csproj", "{4DB3C91B-93FE-4937-8B58-DDD3F57D4607}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VOL.Data", "VOL.Data\VOL.Data.csproj", "{FA76EAA8-C355-4E13-B15C-FF925919F861}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -51,6 +53,10 @@ Global
{4DB3C91B-93FE-4937-8B58-DDD3F57D4607}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4DB3C91B-93FE-4937-8B58-DDD3F57D4607}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4DB3C91B-93FE-4937-8B58-DDD3F57D4607}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FA76EAA8-C355-4E13-B15C-FF925919F861}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {FA76EAA8-C355-4E13-B15C-FF925919F861}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FA76EAA8-C355-4E13-B15C-FF925919F861}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {FA76EAA8-C355-4E13-B15C-FF925919F861}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/vol-vue3/src/extension/data/device/Data_Device.js b/vol-vue3/src/extension/data/device/Data_Device.js
new file mode 100644
index 0000000..8935403
--- /dev/null
+++ b/vol-vue3/src/extension/data/device/Data_Device.js
@@ -0,0 +1,75 @@
+/*****************************************************************************************
+** Author:jxx 2022
+** QQ:283591387
+**完整文档见:http://v2.volcore.xyz/document/api 【代码生成页面ViewGrid】
+**常用示例见:http://v2.volcore.xyz/document/vueDev
+**后台操作见:http://v2.volcore.xyz/document/netCoreDev
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/vol-vue3/src/extension/data/produce/Data_Produce.js b/vol-vue3/src/extension/data/produce/Data_Produce.js
new file mode 100644
index 0000000..8935403
--- /dev/null
+++ b/vol-vue3/src/extension/data/produce/Data_Produce.js
@@ -0,0 +1,75 @@
+/*****************************************************************************************
+** Author:jxx 2022
+** QQ:283591387
+**完整文档见:http://v2.volcore.xyz/document/api 【代码生成页面ViewGrid】
+**常用示例见:http://v2.volcore.xyz/document/vueDev
+**后台操作见:http://v2.volcore.xyz/document/netCoreDev
+*****************************************************************************************/
+//此js文件是用来自定义扩展业务代码,可以扩展一些自定义页面或者重新配置生成的代码
+
+let extension = {
+ components: {
+ //查询界面扩展组件
+ gridHeader: '',
+ gridBody: '',
+ gridFooter: '',
+ //新建、编辑弹出框扩展组件
+ modelHeader: '',
+ modelBody: '',
+ modelFooter: ''
+ },
+ tableAction: '', //指定某张表的权限(这里填写表名,默认不用填写)
+ buttons: { view: [], box: [], detail: [] }, //扩展的按钮
+ methods: {
+ //下面这些方法可以保留也可以删除
+ onInit() { //框架初始化配置前,
+ //示例:在按钮的最前面添加一个按钮
+ // this.buttons.unshift({ //也可以用push或者splice方法来修改buttons数组
+ // name: '按钮', //按钮名称
+ // icon: 'el-icon-document', //按钮图标vue2版本见iview文档icon,vue3版本见element ui文档icon(注意不是element puls文档)
+ // type: 'primary', //按钮样式vue2版本见iview文档button,vue3版本见element ui文档button
+ // onClick: function () {
+ // this.$Message.success('点击了按钮');
+ // }
+ // });
+
+ //示例:设置修改新建、编辑弹出框字段标签的长度
+ // this.boxOptions.labelWidth = 150;
+ },
+ onInited() {
+ //框架初始化配置后
+ //如果要配置明细表,在此方法操作
+ //this.detailOptions.columns.forEach(column=>{ });
+ },
+ searchBefore(param) {
+ //界面查询前,可以给param.wheres添加查询参数
+ //返回false,则不会执行查询
+ return true;
+ },
+ searchAfter(result) {
+ //查询后,result返回的查询数据,可以在显示到表格前处理表格的值
+ return true;
+ },
+ addBefore(formData) {
+ //新建保存前formData为对象,包括明细表,可以给给表单设置值,自己输出看formData的值
+ return true;
+ },
+ updateBefore(formData) {
+ //编辑保存前formData为对象,包括明细表、删除行的Id
+ return true;
+ },
+ rowClick({ row, column, event }) {
+ //查询界面点击行事件
+ // this.$refs.table.$refs.table.toggleRowSelection(row); //单击行时选中当前行;
+ },
+ modelOpenAfter(row) {
+ //点击编辑、新建按钮弹出框后,可以在此处写逻辑,如,从后台获取数据
+ //(1)判断是编辑还是新建操作: this.currentAction=='Add';
+ //(2)给弹出框设置默认值
+ //(3)this.editFormFields.字段='xxx';
+ //如果需要给下拉框设置默认值,请遍历this.editFormOptions找到字段配置对应data属性的key值
+ //看不懂就把输出看:console.log(this.editFormOptions)
+ }
+ }
+};
+export default extension;
diff --git a/vol-vue3/src/router/viewGird.js b/vol-vue3/src/router/viewGird.js
index a047b90..080bb0b 100644
--- a/vol-vue3/src/router/viewGird.js
+++ b/vol-vue3/src/router/viewGird.js
@@ -3,132 +3,157 @@ let viewgird = [
{
path: '/Sys_Log',
name: 'sys_Log',
- component: () => import('@/views/system/Sys_Log.vue' )
+ component: () => import('@/views/system/Sys_Log.vue')
},
{
path: '/Sys_User',
name: 'Sys_User',
- component: () => import('@/views/system/Sys_User.vue' )
+ component: () => import('@/views/system/Sys_User.vue')
},
{
path: '/permission',
name: 'permission',
- component: () => import('@/views/system/Permission.vue' )
+ component: () => import('@/views/system/Permission.vue')
},
-
+
{
path: '/Sys_Dictionary',
name: 'Sys_Dictionary',
- component: () => import('@/views/system/Sys_Dictionary.vue' )
+ component: () => import('@/views/system/Sys_Dictionary.vue')
},
{
path: '/Sys_Role',
name: 'Sys_Role',
- component: () => import('@/views/system/Sys_Role.vue' )
- }, {
+ component: () => import('@/views/system/Sys_Role.vue')
+ },
+ {
path: '/Sys_Role1',
name: 'Sys_Role1',
- component: () => import('@/views/system/Sys_Role1.vue' )
- }
- , {
+ component: () => import('@/views/system/Sys_Role1.vue')
+ },
+ {
path: '/Sys_DictionaryList',
name: 'Sys_DictionaryList',
- component: () => import('@/views/system/Sys_DictionaryList.vue' )
- }
- , {
+ component: () => import('@/views/system/Sys_DictionaryList.vue')
+ },
+ {
path: '/SellOrder',
name: 'SellOrder',
- component: () => import('@/views/order/SellOrder.vue' )
- }, {
+ component: () => import('@/views/order/SellOrder.vue')
+ },
+ {
path: '/SellOrder2',
name: 'SellOrder2',
- component: () => import('@/views/order/SellOrder2.vue' )
- }, {
+ component: () => import('@/views/order/SellOrder2.vue')
+ },
+ {
path: '/SellOrder3',
name: 'SellOrder3',
- component: () => import('@/views/order/SellOrder3.vue' )
- }, {
+ component: () => import('@/views/order/SellOrder3.vue')
+ },
+ {
path: '/vSellOrderImg',
name: 'vSellOrderImg',
- component: () => import('@/views/order/vSellOrderImg.vue' )
+ component: () => import('@/views/order/vSellOrderImg.vue')
},
{
path: '/App_Appointment',
name: 'App_Appointment',
- component: () => import('@/views/order/App_Appointment.vue' )
+ component: () => import('@/views/order/App_Appointment.vue')
},
{
path: '/App_Appointment2', //二级表头
name: 'App_Appointment2',
- component: () => import('@/views/order/App_Appointment2.vue' )
+ component: () => import('@/views/order/App_Appointment2.vue')
},
{
path: '/App_TransactionAvgPrice',
name: 'App_TransactionAvgPrice',
- component: () => import('@/views/appmanager/App_TransactionAvgPrice.vue' ),
+ component: () => import('@/views/appmanager/App_TransactionAvgPrice.vue'),
meta: {
keepAlive: false
}
- }
- , {
+ },
+ {
path: '/App_Expert',
name: 'App_Expert',
- component: () => import('@/views/appmanager/App_Expert.vue' )
- }
- , {
+ component: () => import('@/views/appmanager/App_Expert.vue')
+ },
+ {
path: '/App_Expert2',
name: 'App_Expert2',
- component: () => import('@/views/appmanager/App_Expert2.vue' )
- }
- , {
+ component: () => import('@/views/appmanager/App_Expert2.vue')
+ },
+ {
path: '/App_Transaction',
name: 'App_Transaction',
- component: () => import('@/views/appmanager/App_Transaction.vue' )
- }
- , {
+ component: () => import('@/views/appmanager/App_Transaction.vue')
+ },
+ {
path: '/App_Transaction2',
name: 'App_Transaction2',
- component: () => import('@/views/appmanager/App_Transaction2.vue' )
- }, {
+ component: () => import('@/views/appmanager/App_Transaction2.vue')
+ },
+ {
path: '/App_ReportPrice',
name: 'App_ReportPrice',
- component: () => import('@/views/appmanager/App_ReportPrice.vue' )
- }, {
+ component: () => import('@/views/appmanager/App_ReportPrice.vue')
+ },
+ {
path: '/App_News',
name: 'App_News',
- component: () => import('@/views/appmanager/App_News.vue' )
- }, {
+ component: () => import('@/views/appmanager/App_News.vue')
+ },
+ {
path: '/App_NewsEditor',
name: 'App_NewsEditor',
- component: () => import('@/views/appmanager/App_NewsEditor.vue' )
- } ,{
- path: '/FormDesignOptions',
- name: 'FormDesignOptions',
- component: () => import('@/views/system/form/FormDesignOptions.vue')
- } ,{
- path: '/FormCollectionObject',
- name: 'FormCollectionObject',
- component: () => import('@/views/system/form/FormCollectionObject.vue')
- } ,{
- path: '/Sys_WorkFlow',
- name: 'Sys_WorkFlow',
- component: () => import('@/views/system/flow/Sys_WorkFlow.vue')
- } ,{
- path: '/Sys_WorkFlowTable',
- name: 'Sys_WorkFlowTable',
- component: () => import('@/views/system/flow/Sys_WorkFlowTable.vue')
- } ,{
- path: '/Sys_QuartzOptions',
- name: 'Sys_QuartzOptions',
- component: () => import('@/views/system/quartz/Sys_QuartzOptions.vue')
- } ,{
- path: '/Sys_QuartzLog',
- name: 'Sys_QuartzLog',
- component: () => import('@/views/system/quartz/Sys_QuartzLog.vue')
- } ,{
- path: '/Sys_Department',
- name: 'Sys_Department',
- component: () => import('@/views/system/system/Sys_Department.vue')
- }]
+ component: () => import('@/views/appmanager/App_NewsEditor.vue')
+ },
+ {
+ path: '/FormDesignOptions',
+ name: 'FormDesignOptions',
+ component: () => import('@/views/system/form/FormDesignOptions.vue')
+ },
+ {
+ path: '/FormCollectionObject',
+ name: 'FormCollectionObject',
+ component: () => import('@/views/system/form/FormCollectionObject.vue')
+ },
+ {
+ path: '/Sys_WorkFlow',
+ name: 'Sys_WorkFlow',
+ component: () => import('@/views/system/flow/Sys_WorkFlow.vue')
+ },
+ {
+ path: '/Sys_WorkFlowTable',
+ name: 'Sys_WorkFlowTable',
+ component: () => import('@/views/system/flow/Sys_WorkFlowTable.vue')
+ },
+ {
+ path: '/Sys_QuartzOptions',
+ name: 'Sys_QuartzOptions',
+ component: () => import('@/views/system/quartz/Sys_QuartzOptions.vue')
+ },
+ {
+ path: '/Sys_QuartzLog',
+ name: 'Sys_QuartzLog',
+ component: () => import('@/views/system/quartz/Sys_QuartzLog.vue')
+ },
+ {
+ path: '/Sys_Department',
+ name: 'Sys_Department',
+ component: () => import('@/views/system/system/Sys_Department.vue')
+ },
+ {
+ path: '/Data_Device',
+ name: 'Data_Device',
+ component: () => import('@/views/data/device/Data_Device.vue')
+ },
+ {
+ path: '/Data_Produce',
+ name: 'Data_Produce',
+ component: () => import('@/views/data/produce/Data_Produce.vue')
+ }
+]
export default viewgird
diff --git a/vol-vue3/src/views/data/device/Data_Device.vue b/vol-vue3/src/views/data/device/Data_Device.vue
new file mode 100644
index 0000000..c03622f
--- /dev/null
+++ b/vol-vue3/src/views/data/device/Data_Device.vue
@@ -0,0 +1,71 @@
+
+
+
+
+
+
diff --git a/vol-vue3/src/views/data/produce/Data_Produce.vue b/vol-vue3/src/views/data/produce/Data_Produce.vue
new file mode 100644
index 0000000..78fc830
--- /dev/null
+++ b/vol-vue3/src/views/data/produce/Data_Produce.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
From c616fdcbd1b849976d0d2622cb9492de40628716 Mon Sep 17 00:00:00 2001
From: ccongli <1441652193@qq.com>
Date: Thu, 31 Aug 2023 17:34:29 +0800
Subject: [PATCH 03/16] =?UTF-8?q?Data=E6=A8=A1=E5=9D=97=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E9=87=87=E9=9B=86=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BD=E5=BC=80?=
=?UTF-8?q?=E5=8F=91v2?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../VOL.Core/EFDbContext/EFLoggerProvider.cs | 4 +
vol-net6/VOL.Core/EFDbContext/VOLContext.cs | 11 +-
.../IServices/modbus/IDataProcessing.cs | 23 ++
.../IServices/modbus/IModbusService.cs | 25 ++
.../data/Partial/Data_DeviceService.cs | 12 +-
.../Services/modbus/DataProcessing.cs | 92 ++++++
.../Services/modbus/ModbusTcpService.cs | 102 ++++++
vol-net6/VOL.Data/VOL.Data.csproj | 6 +-
.../Controllers/Data/DataCaptureController.cs | 170 +++++++++-
.../Controllers/Data/Data_DeviceController.cs | 3 +
.../Data/Partial/Data_DeviceController.cs | 1 +
.../Controllers/System/Sys_LogController.cs | 1 +
vol-net6/VOL.WebApi/Program.cs | 28 +-
vol-net6/VOL.WebApi/Utils/CommonUtil.cs | 41 +++
vol-net6/VOL.WebApi/Utils/DataConvertUtil.cs | 305 ++++++++++++++++++
15 files changed, 812 insertions(+), 12 deletions(-)
create mode 100644 vol-net6/VOL.Data/IServices/modbus/IDataProcessing.cs
create mode 100644 vol-net6/VOL.Data/IServices/modbus/IModbusService.cs
create mode 100644 vol-net6/VOL.Data/Services/modbus/DataProcessing.cs
create mode 100644 vol-net6/VOL.Data/Services/modbus/ModbusTcpService.cs
create mode 100644 vol-net6/VOL.WebApi/Utils/CommonUtil.cs
create mode 100644 vol-net6/VOL.WebApi/Utils/DataConvertUtil.cs
diff --git a/vol-net6/VOL.Core/EFDbContext/EFLoggerProvider.cs b/vol-net6/VOL.Core/EFDbContext/EFLoggerProvider.cs
index 123093d..fde2f37 100644
--- a/vol-net6/VOL.Core/EFDbContext/EFLoggerProvider.cs
+++ b/vol-net6/VOL.Core/EFDbContext/EFLoggerProvider.cs
@@ -26,7 +26,11 @@ namespace VOL.Core.EFDbContext
&& logLevel == LogLevel.Information)
{
var logContent = formatter(state, exception);
+ // TODO: 拿到日志内容想怎么玩就怎么玩吧
+ Console.WriteLine();
+ Console.ForegroundColor = ConsoleColor.Green; // 字体绿色
Console.WriteLine(logContent);
+ Console.ResetColor();
}
}
public IDisposable BeginScope(TState state) => null;
diff --git a/vol-net6/VOL.Core/EFDbContext/VOLContext.cs b/vol-net6/VOL.Core/EFDbContext/VOLContext.cs
index c863152..8c9175c 100644
--- a/vol-net6/VOL.Core/EFDbContext/VOLContext.cs
+++ b/vol-net6/VOL.Core/EFDbContext/VOLContext.cs
@@ -84,11 +84,14 @@ namespace VOL.Core.EFDbContext
{
optionsBuilder.UseSqlServer(connectionString);
}
- //默认禁用实体跟踪
+ // 默认禁用实体跟踪(注释记录EFCore时)
optionsBuilder = optionsBuilder.UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking);
- //var loggerFactory = new LoggerFactory();
- //loggerFactory.AddProvider(new EFLoggerProvider());
- // optionsBuilder.UseLoggerFactory(loggerFactory);
+
+ // 记录EFCore产生的SQL语句
+ var loggerFactory = new LoggerFactory();
+ loggerFactory.AddProvider(new EFLoggerProvider());
+ optionsBuilder.UseLoggerFactory(loggerFactory);
+
base.OnConfiguring(optionsBuilder);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
diff --git a/vol-net6/VOL.Data/IServices/modbus/IDataProcessing.cs b/vol-net6/VOL.Data/IServices/modbus/IDataProcessing.cs
new file mode 100644
index 0000000..52047b2
--- /dev/null
+++ b/vol-net6/VOL.Data/IServices/modbus/IDataProcessing.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using VOL.Entity.DomainModels;
+
+namespace VOL.Data.IServices.modbus
+{
+ public interface IDataProcessing
+ {
+ // 写设备运行数据
+ bool saveDeviceData(Data_Device device, out string message);
+
+
+ // 写设备生产数据
+ bool saveProduceData(Data_Produce produce, out string message);
+
+
+ // 写设备性能数据
+ bool saveEfficiencyData();
+ }
+}
diff --git a/vol-net6/VOL.Data/IServices/modbus/IModbusService.cs b/vol-net6/VOL.Data/IServices/modbus/IModbusService.cs
new file mode 100644
index 0000000..c032f89
--- /dev/null
+++ b/vol-net6/VOL.Data/IServices/modbus/IModbusService.cs
@@ -0,0 +1,25 @@
+using NModbus;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace VOL.Data.IServices.modbus
+{
+ public interface IModbusService
+ {
+ ///
+ /// 创建主站客户端
+ ///
+ ///
+ void createModbusClient();
+
+
+ ///
+ /// 关闭链接
+ ///
+ ///
+ void disConnent();
+ }
+}
diff --git a/vol-net6/VOL.Data/Services/data/Partial/Data_DeviceService.cs b/vol-net6/VOL.Data/Services/data/Partial/Data_DeviceService.cs
index 330cada..e6dc9ce 100644
--- a/vol-net6/VOL.Data/Services/data/Partial/Data_DeviceService.cs
+++ b/vol-net6/VOL.Data/Services/data/Partial/Data_DeviceService.cs
@@ -35,7 +35,15 @@ namespace VOL.Data.Services
_httpContextAccessor = httpContextAccessor;
_repository = dbRepository;
//多租户会用到这init代码,其他情况可以不用
- //base.Init(dbRepository);
+ Init(dbRepository);
}
- }
+
+ //重写ServiceBase Init方法,设置IsMultiTenancy=true开启多租户功能
+ protected override void Init(IRepository repository)
+ {
+ //开启多租户功能,开启后会对查询、导出、删除、编辑功能同时生效
+ //如果只需要对某个功能生效,如编辑,则在重写编辑方法中设置 IsMultiTenancy = true;
+ IsMultiTenancy = true;
+ }
+ }
}
diff --git a/vol-net6/VOL.Data/Services/modbus/DataProcessing.cs b/vol-net6/VOL.Data/Services/modbus/DataProcessing.cs
new file mode 100644
index 0000000..a9d4f6c
--- /dev/null
+++ b/vol-net6/VOL.Data/Services/modbus/DataProcessing.cs
@@ -0,0 +1,92 @@
+using Microsoft.AspNetCore.Http;
+using VOL.Data.IServices.modbus;
+using VOL.Entity.DomainModels;
+using VOL.Core.Services;
+using Microsoft.AspNetCore.Mvc;
+using Autofac.Core;
+using VOL.Core.Extensions.AutofacManager;
+
+namespace VOL.Data.Services.modbus
+{
+ public class DataProcessing : IDataProcessing, IDependency // 继承IDependency,交给Ioc容器接管
+ {
+ private readonly IHttpContextAccessor _httpContextAccessor;
+
+ public DataProcessing(IHttpContextAccessor httpContextAccessor) {
+ _httpContextAccessor = httpContextAccessor;
+ }
+
+ // 写设备运行数据
+ public bool saveDeviceData(Data_Device device, out string message) {
+ SaveModel model = new SaveModel();
+ Dictionary mapData = new()
+ {
+ { "temperature", device.temperature ?? 68.0M },
+ { "potential", device.potential ?? 220.0M },
+ { "current", device.current ?? 24.0M },
+ { "processno", device.processno ?? "10092768" },
+ { "run_mode", device.run_mode ?? 1 }
+ };
+ model.MainData = mapData;
+ try {
+ Core.Utilities.WebResponseContent result = Data_DeviceService.Instance.Add(model);
+ if (!result.Status)
+ {
+ message = result.Message;
+ //Logger.Info(result.Message);
+ return false;
+ }
+ } catch (Exception ex)
+ {
+ //Logger.Error(ex.Message);
+ message = ex.Message;
+ return false;
+ }
+ message = "ok";
+ return true;
+ }
+
+
+
+ // 写设备生产数据
+ public bool saveProduceData(Data_Produce produce, out string message)
+ {
+ SaveModel model = new SaveModel();
+ Dictionary mapData = new()
+ {
+ { "standby_time", produce.standby_time ?? 24 },
+ { "run_time", produce.run_time ?? 20 },
+ { "status", produce.status ?? 1 },
+ { "turnout", produce.turnout ?? 1640 },
+ { "turnout_one", produce.turnout_one ?? 450 },
+ { "turnout_two", produce.turnout_two ?? 630 },
+ { "turnout_three", produce.turnout_three ?? 560 }
+ };
+ model.MainData = mapData;
+ try
+ {
+ Core.Utilities.WebResponseContent result = Data_ProduceService.Instance.Add(model);
+ if (!result.Status)
+ {
+ message = result.Message;
+ return false;
+ }
+ }
+ catch (Exception ex)
+ {
+ message = ex.Message;
+ return false;
+ }
+ message = "ok";
+ return true;
+ }
+
+
+ // 写设备性能数据
+ public bool saveEfficiencyData()
+ {
+ throw new NotImplementedException();
+ }
+
+ }
+}
diff --git a/vol-net6/VOL.Data/Services/modbus/ModbusTcpService.cs b/vol-net6/VOL.Data/Services/modbus/ModbusTcpService.cs
new file mode 100644
index 0000000..1509b3d
--- /dev/null
+++ b/vol-net6/VOL.Data/Services/modbus/ModbusTcpService.cs
@@ -0,0 +1,102 @@
+using NModbus;
+using System.Net.Sockets;
+using VOL.Data.IServices.modbus;
+
+namespace VOL.Data.Services.modbus
+{
+ public class ModbusTcpService : IModbusService
+ {
+ // IP
+ private string ip { set; get; } = "127.0.0.1";
+
+ // 端口
+ private int port { set; get; } = 502;
+
+ // 从站地址
+ private int slaveNo { set; get; } = 1;
+
+ private TcpClient client;
+
+ private IModbusMaster modbusMaster;
+
+ public ModbusTcpService(string ip, int port) {
+ this.ip = ip;
+ this.port = port;
+ this.client = new TcpClient(ip, port);
+ this.createModbusClient();
+ }
+
+ public void createModbusClient()
+ {
+ ModbusFactory modbusFactory = new();
+ modbusMaster = modbusFactory.CreateMaster(client);
+ modbusMaster.Transport.ReadTimeout = 3000; //读超时
+ modbusMaster.Transport.WriteTimeout = 3000;//写超时
+ modbusMaster.Transport.Retries = 3;
+ modbusMaster.Transport.WaitToRetryMilliseconds = 500;//尝试重复连接间隔
+ }
+
+
+ // 是否已连接
+ public bool isConnected
+ {
+ get => client.Connected;
+ }
+
+ // 读线圈 0x01 0x
+ public bool[] ReadCoils(byte slaveAddress, ushort startAddress, ushort num)
+ {
+ return modbusMaster.ReadCoils(slaveAddress, startAddress, num);
+ }
+
+ // 读离散输入 0x02 1x
+ public bool[] ReadInputs(byte slaveAddress, ushort startAddress, ushort num)
+ {
+ return modbusMaster.ReadInputs(slaveAddress, startAddress, num);
+ }
+
+ // 读保持寄存器 0x03 4x
+ public ushort[] ReadHoldingRegisters(byte slaveAddress, ushort startAddress, ushort num)
+ {
+ return modbusMaster.ReadHoldingRegisters(slaveAddress, startAddress, num);
+ }
+
+ // 读输入寄存器 0x04 3x
+ public ushort[] ReadInputRegisters(byte slaveAddress, ushort startAddress, ushort num)
+ {
+ return modbusMaster.ReadInputRegisters(slaveAddress, startAddress, num);
+ }
+
+ // 写单个线圈 0x05
+ public void WriteSingleCoil(byte slaveAddress, ushort startAddress, bool value)
+ {
+ modbusMaster.WriteSingleCoil(slaveAddress, startAddress, value);
+ }
+
+
+ // 写单个保持寄存器 0x06
+ public void WriteSingleRegister(byte slaveAddress, ushort startAddress, ushort value)
+ {
+ modbusMaster.WriteSingleRegister(slaveAddress, startAddress, value);
+ }
+
+ // 写多个线圈 0x0F
+ public void WriteMultipleCoils(byte slaveAddress, ushort startAddress, bool[] value)
+ {
+ modbusMaster.WriteMultipleCoils(slaveAddress, startAddress, value);
+ }
+
+ // 写多个保持寄存器 0x10
+ public void WriteMultipleRegisters(byte slaveAddress, ushort startAddress, ushort[] value)
+ {
+ modbusMaster.WriteMultipleRegisters(slaveAddress, startAddress, value);
+ }
+
+
+ // 关闭Socket
+ public void disConnent() {
+ client.Close();
+ modbusMaster.Dispose();
+ }
+ }
+}
diff --git a/vol-net6/VOL.Data/VOL.Data.csproj b/vol-net6/VOL.Data/VOL.Data.csproj
index 1a8c46c..9dad5eb 100644
--- a/vol-net6/VOL.Data/VOL.Data.csproj
+++ b/vol-net6/VOL.Data/VOL.Data.csproj
@@ -13,9 +13,11 @@
-
-
+
+
+
+
diff --git a/vol-net6/VOL.WebApi/Controllers/Data/DataCaptureController.cs b/vol-net6/VOL.WebApi/Controllers/Data/DataCaptureController.cs
index 0ed452a..9180f0d 100644
--- a/vol-net6/VOL.WebApi/Controllers/Data/DataCaptureController.cs
+++ b/vol-net6/VOL.WebApi/Controllers/Data/DataCaptureController.cs
@@ -3,6 +3,18 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using System;
using VOL.Core.Filters;
+using VOL.Core.Controllers.Basic;
+using VOL.Data.IServices.modbus;
+using VOL.Data.IServices;
+using VOL.Data.Services.modbus;
+using Microsoft.Extensions.DependencyInjection;
+using Newtonsoft.Json.Linq;
+using static System.Reflection.Metadata.BlobBuilder;
+using System.Linq;
+using System.Collections.Generic;
+using VOL.WebApi.Utils;
+using VOL.Core.Services;
+using VOL.Entity.DomainModels;
namespace VOL.WebApi.Controllers.Data
{
@@ -13,17 +25,173 @@ namespace VOL.WebApi.Controllers.Data
[AllowAnonymous]
public class DataCaptureController : Controller
{
+ private static ModbusTcpService _service; // 静态字段
+
+ private readonly IHttpContextAccessor _httpContextAccessor;
+
+ private readonly IDataProcessing _dataService; // 业务处理
+
+
+ [ActivatorUtilitiesConstructor]
+ public DataCaptureController(
+ //ModbusTcpService service, // ModbusTcpService为有参构造,暂时无法注入
+ IDataProcessing dataService,
+ IHttpContextAccessor httpContextAccessor
+ )
+ {
+ //_service = service;
+ _dataService = dataService;
+ _httpContextAccessor = httpContextAccessor;
+ }
+
+ // 静态构造器 类实例化前调用,且只调用一次
+ static DataCaptureController()
+ {
+ try
+ {
+ _service = new ModbusTcpService("127.0.0.1", 502);
+ Console.WriteLine("master modbus tcp created...");
+ }
+ catch (Exception)
+ {
+ Console.WriteLine("master modbus tcp connect failed!");
+ }
+
+ }
+
///
- /// 测试采集接口
+ /// 测试定时接口
///
/// IActionResult
//[ApiTask]
[HttpGet, HttpPost, Route("test")]
public IActionResult Test()
{
+ //Logger.Info("log info test...");
+ //Logger.Error("log info error...");
+ Data_Device data_Device = new Data_Device();
+ bool result = _dataService.saveDeviceData(data_Device, out string message);
+ Console.WriteLine(message);
+ Data_Produce data_Produce = new Data_Produce();
+ bool result2 = _dataService.saveProduceData(data_Produce, out string message1);
+ Console.WriteLine(message1);
return Content(DateTime.Now.ToString("yyyy-MM-dd HH:mm:sss"));
+ }
+
+
+
+ ///
+ /// 测试采集接口
+ ///
+ /// IActionResult
+ //[ApiTask]
+ [HttpGet, HttpPost, Route("getData")]
+ public IActionResult Collection()
+ {
+ Console.WriteLine(_service);
+ bool isConnected = _service == null ? false : _service.isConnected;
+ if (!isConnected)
+ {
+ try
+ {
+ _service.disConnent();
+ _service = new ModbusTcpService("127.0.0.1", 502);
+ Console.WriteLine("master modbus tcp reconnect...");
+ }
+ catch (Exception)
+ {
+ Console.WriteLine("master modbus tcp reconnect failed!");
+ }
+ isConnected = _service == null ? false : _service.isConnected;
+ if (!isConnected)
+ {
+ return Content("master modbus connect failed!");
+ }
+ }
+ try {
+ // 读Int16
+ ushort[] us1 = _service.ReadHoldingRegisters(1, 9, 1);
+ short v = DataConvertUtil.GetShort(us1, 0);
+ Console.WriteLine("Short Data:" + v);
+ // 读Float
+ ushort[] us2 = _service.ReadHoldingRegisters(1, 1, 2);
+ float f = DataConvertUtil.GetReal(us2, 0);
+ Console.WriteLine("Real Data:" + f);
+ // 读Bool
+ ushort[] us3 = _service.ReadHoldingRegisters(1, 11, 1);
+ bool[] bs = DataConvertUtil.GetBools(us3,0,1);
+ Console.WriteLine("Bools Data:" + String.Join(",",bs));
+
+ // 写String
+ ushort[] src = new ushort[6];
+ DataConvertUtil.SetString(src, 0, "你好世界"); // UTF8 1个中文字符 = 3Byte
+ _service.WriteMultipleRegisters(1, 30, src);
+
+ // 读String
+ ushort[] target = _service.ReadHoldingRegisters(1, 30, 6);
+ string str = DataConvertUtil.GetString(target,0,6);
+ Console.WriteLine("String Data:" + str.ToString());
+ } catch (Exception ex) {
+ Console.WriteLine(ex.Message);
+ _service.disConnent();
+ return Content("read data error!");
+ }
+ return Content("ok!");
+ }
+
+
+
+
+
+ [HttpGet, HttpPost, Route("readTest")]
+ public IActionResult Test01()
+ {
+ if (_service.isConnected)
+ {
+ //Console.WriteLine("=========read0x=========");
+ //bool[] data0x = _service.ReadCoils(1, 0, 5); // 0x
+ ////bool[] bools = { true, false };
+ //Array.ForEach(data0x, Console.WriteLine);
+ //Console.WriteLine("=========read0x=========");
+
+ //Console.WriteLine("=========read1x=========");
+ //bool[] data1x = _service.ReadInputs(1, 0, 5);
+ //Array.ForEach(data1x, Console.WriteLine);
+ //Console.WriteLine("=========read1x=========");
+
+ Console.WriteLine("=========read4x=========");
+ ushort[] data4xs_int16 = _service.ReadHoldingRegisters(1, 8, 2);
+ short val = DataConvertUtil.GetShort(data4xs_int16, 1);
+ Console.WriteLine(val);
+
+ ushort[] data4xs_int32 = _service.ReadHoldingRegisters(1, 1, 2);
+ int vval = DataConvertUtil.GetInt(data4xs_int32, 0);
+ Console.WriteLine(vval);
+
+ ushort[] data4xs_int64 = _service.ReadHoldingRegisters(1, 4, 4);
+ long vvval = DataConvertUtil.GetLong(data4xs_int64, 0);
+ Console.WriteLine(vvval);
+ Console.WriteLine("=========read4x=========");
+
+ //Console.WriteLine("=========read3x=========");
+ //ushort[] data3xs = _service.ReadInputRegisters(1, 4, 2);
+ //uint[] data3x = data3xs.Select(x => (uint)x).ToArray();
+ //Array.ForEach(data3x, Console.WriteLine);
+ //Console.WriteLine("=========read3x=========");
+ _service.disConnent();
+ //List