From 63c5c1889fa6f74aa55e462353f4fe97548f4016 Mon Sep 17 00:00:00 2001 From: Yiru Date: Wed, 10 Apr 2024 22:12:04 +0800 Subject: [PATCH 01/14] =?UTF-8?q?Label=20=E9=9C=80=E5=A1=AB=E5=AF=AB?= =?UTF-8?q?=E6=AC=84=E4=BD=8D=E5=A2=9E=E5=8A=A0=E7=8B=80=E6=85=8B=E7=AF=A9?= =?UTF-8?q?=E9=81=B8=E6=A2=9D=E4=BB=B6=20Label=20=E6=96=99=E8=99=9F?= =?UTF-8?q?=E6=A8=A1=E7=B3=8A=E6=9F=A5=E8=A9=A2=E6=94=B9=E7=82=BA%201R%=20?= =?UTF-8?q?LabeL002=20=E5=8A=A0=E5=A4=A7=E5=82=99=E8=A8=BB=E6=AC=84?= =?UTF-8?q?=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/LABController.cs | 4 +-- AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs | 7 ++++++ AMESCoreStudio.Web/Views/LAB/LAB001.cshtml | 19 +++++++++++++- AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml | 5 +++- AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml | 10 +++----- .../Controllers/AMES/LabelParamController.cs | 25 +++++++++++++++++++ .../AMES/LabelTemplateMasterController.cs | 2 +- 7 files changed, 61 insertions(+), 11 deletions(-) diff --git a/AMESCoreStudio.Web/Controllers/LABController.cs b/AMESCoreStudio.Web/Controllers/LABController.cs index e4f7d32c..b9666754 100644 --- a/AMESCoreStudio.Web/Controllers/LABController.cs +++ b/AMESCoreStudio.Web/Controllers/LABController.cs @@ -147,9 +147,9 @@ namespace AMESCoreStudio.Web.Controllers [ResponseCache(Duration = 0)] [HttpGet] - public async Task GetLabParamsAsync(int page = 0, int limit = 10) + public async Task GetLabParamsAsync(string status = "*" ,int page = 0, int limit = 10) { - var result = await _labApi.GetLabParamsByLabelID(page, limit); + var result = await _labApi.GetLabParamsByStatus(status,page, limit); if (result.Data.Count() > 0) { diff --git a/AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs b/AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs index a6865718..91806b75 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs @@ -98,6 +98,13 @@ namespace AMESCoreStudio.Web [WebApiClient.Attributes.HttpGet("api/LabelParam/byLabelID/{id}")] ITask> GetLabParamsByLabelID(int page = 0, int limit = 10); + /// + /// 獲取Label 全部參數資料 + /// + /// + [WebApiClient.Attributes.HttpGet("api/LabelParam/byStatus/{status}")] + ITask> GetLabParamsByStatus(string status,int page = 0, int limit = 10); + /// /// Label 參數儲存 /// diff --git a/AMESCoreStudio.Web/Views/LAB/LAB001.cshtml b/AMESCoreStudio.Web/Views/LAB/LAB001.cshtml index fdc216f9..2c71fb62 100644 --- a/AMESCoreStudio.Web/Views/LAB/LAB001.cshtml +++ b/AMESCoreStudio.Web/Views/LAB/LAB001.cshtml @@ -9,6 +9,23 @@
@ViewBag.Title
+
+
+ +
+ +
+
+
+ +
+
@@ -73,7 +90,7 @@ } ]; //基本数据表格 - var table = hg.table.datatable('test', 'Label 需填寫欄位', '/LAB/GetLabParams', {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']); + var table = hg.table.datatable('test', 'Label 需填寫欄位', '/LAB/GetLabParams' , {}, tableCols, toolbar, true, 'full-100', ['filter', 'print', 'exports']); } \ No newline at end of file diff --git a/AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml b/AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml index f6c8efa0..fce5d2c2 100644 --- a/AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml +++ b/AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml @@ -63,9 +63,12 @@
- +
+ + +
diff --git a/AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml b/AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml index fb13e752..e98730fa 100644 --- a/AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml +++ b/AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml @@ -59,12 +59,10 @@
-
-
- - - -
+
+ + +
diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/LabelParamController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/LabelParamController.cs index d4bf6103..f910b5a5 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/LabelParamController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/LabelParamController.cs @@ -73,6 +73,31 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES } + // GET: api/LabelParam/5 + [HttpGet("byStatus/{status}")] + public async Task> GetLabelParambyStatus(string status, int page = 0, int limit = 10) + { + ResultModel result = new ResultModel(); + IQueryable q = _context.LabelParam; + if (status != "*") + { + q = q.Where(w => w.STATUS_NO == status); + + } + result.DataTotal = q.Count(); + + // Table 頁數 + if (page > 0) + { + q = q.Skip((page - 1) * limit).Take(limit); + } + + result.Data = await q.ToListAsync(); + + return result; + } + + /// /// 更新Label參數檔 /// diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/LabelTemplateMasterController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/LabelTemplateMasterController.cs index 48537dd4..bbc533f5 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/LabelTemplateMasterController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/LabelTemplateMasterController.cs @@ -145,7 +145,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES if (!string.IsNullOrEmpty(LabelMatnr) && LabelMatnr != "*") { - q = q.Where(w => w.LABEL_MATNR.StartsWith(LabelMatnr)); + q = q.Where(w => w.LABEL_MATNR.Contains(LabelMatnr)); } result.DataTotal = q.Count(); From 80960695842770de926d83f301821f3ea474a8da Mon Sep 17 00:00:00 2001 From: "Yui.Chen" Date: Sat, 13 Apr 2024 17:20:19 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E6=A8=99=E7=B1=A4=E7=94=B3=E8=AB=8B?= =?UTF-8?q?=E4=BD=9C=E6=A5=AD=20=E9=A1=AF=E7=A4=BA=E5=9C=96=E7=89=87?= =?UTF-8?q?=E6=94=B9button=20=E6=A9=9F=E7=A8=AE=E5=90=8D=E7=A8=B1=20?= =?UTF-8?q?=E5=93=81=E5=90=8D=E6=8F=8F=E8=BF=B0=E6=94=B9=E7=94=A8=E6=A9=9F?= =?UTF-8?q?=E7=A8=AE=E6=9F=A5=E8=A9=A2=20=E5=8F=AF=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=A1=AB=E5=AF=AB=E5=87=BA=E8=B2=A8=E5=BA=8F=E8=99=9F=20EAN,EC?= =?UTF-8?q?N(=E5=BE=85=E7=A2=BA=E8=AA=8D),BIOSVS=E8=87=AA=E5=8B=95?= =?UTF-8?q?=E5=B8=B6=E5=87=BA=20=E6=A8=99=E7=B1=A4=E7=94=B3=E8=AB=8B?= =?UTF-8?q?=E6=9F=A5=E8=A9=A2=20=E6=96=B0=E5=A2=9E=E7=8B=80=E6=85=8B?= =?UTF-8?q?=E6=9F=A5=E8=A9=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DesignTimeBuild/.dtbcache.v2 | Bin 228887 -> 228887 bytes .vs/AMESCoreStudio/v16/.suo | Bin 534528 -> 568832 bytes .../Controllers/LABController.cs | 10 +-- AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs | 4 +- AMESCoreStudio.Web/Views/LAB/LAB003.cshtml | 53 ++++++------- AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml | 70 +++++++++--------- AMESCoreStudio.Web/Views/LAB/LAB004.cshtml | 19 +++-- .../AMESCoreStudio.WebApi.xml | 30 +++++++- .../Controllers/AMES/LabelItemController.cs | 44 +++++++++-- 9 files changed, 150 insertions(+), 80 deletions(-) diff --git a/.vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2 b/.vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2 index 670e2084981c834cf6985752b5a1fb748fb7368e..a8a90aae386351675dab4d9861fe9f3da2f19bd0 100644 GIT binary patch delta 101 zcmbRKhj;oP-i8*&Elk1g4oSvlCT7VNW`>p)Cg$cAMwX^YscEKZmWgSpDQPBYsRpJ7 zNfxOF#s=nT28PBaKne3SL!%TkBXbjT3)4jN$qpBkrq_BfNlu>N&EJ04ooV}BcV;Uy E098I8p#T5? delta 101 zcmbRKhj;oP-i8*&Elk1g4u*!wDP|T)DM^-zMyW{_NrovYMyBS*X-0_##)-zprlyGo zrY32osY#aRiH7EB=9Wq324-nSMi$0KCMl@~Ns}EeC{3^RV3M3X!JEJRt~=BAyY9?Z FW&nNTAT0m@ diff --git a/.vs/AMESCoreStudio/v16/.suo b/.vs/AMESCoreStudio/v16/.suo index dc00f00817544e8c3ef93b484b0a0bb9bdf5b423..f8bef28b2232e8a0fe59ec47958cc7e5499331c1 100644 GIT binary patch delta 34621 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 Yylu{2X*QR~iZ*uhB-}7dKkupk2VXF?MF0Q* delta 31300 zcmeHw3tUxI_W#}I4I&~E5~3m^A|PHKDk|dTp&_DzqLHEkqLQJZq9H1xnK|kta`i4X zGjbd&Q%|Rwk3_dVPI83X=%%1jvBXfI8f-2D}3}3^-z4*}Bz>B^Q`$ z?VpeIezfQm%f(g8Xls#BB#dyfUJ;6w-{Q(q%~~WDwcIV3OdluV9KR`m?^aH0MRlH{ zm}(PR%Y!bca&{t zxr;SRZtwmo9{L0B$|ySk%9*uH_G4D-ALIzB1Q)CqcTn{*d1)_=c2 z)4UfPL%eMGS$!q{PL*iB02M|8!U117Du0FR4FmbBJ`n!c_XaXaA4o3V`HeNpslEFr zc&K3@Q*dkyMADypSvKoq*?z&vg|X|_ubqQi@*Z(Wb~2gn1zfjwZ`NMsSL&_zHS4po z#6x}nm-DQBg>De|x1(!gyTM z0PO)0xc3IiP(VD6T>uGyOn@7%eSoqjKL(fq-hj~n>xC;`9e#&{Xn=%@15o}S%3**B zI9`QLb+>l9+KpYcj=0)B`C**L;QA~;I-nn55w5L9{i}efINuBq(3pzrlW=UsbtfEq z;P{V#e1MLH>Z@J>%W+bK3L{a@bljNjC^@cH3 zw}R%*PQ0(KfX{Sv^B&(Sx~uTikD^;ar@oKwXV5tv-IG5@6M3j%LfIKm0T>I21&jea zg_{4$MDXG8iD+%I?!4+9`2A^Ehg*Ca8kQEH2L6bxrx3V3(EWs1<;ens?Ezk=nr#d9 z7qfb+W;6^J%X|ifU472 zG|Qv!(pX1!kUETDJv%*v`?jl%oNywtqJv*qs6&6MeMiXrT>&T25kt_JYU69_yVwkm{FvXfsXtrK19BO@| z5a+WOv8QRaB6QmxcMcgd0*&q!$H9dY&pv$HkhT*ti6hxJu90%If&(27wqU~ zw`>-x869~+?L;xNRX2P0N_K$FUkb!b6@e_b%cxD62{Q%AeA49noupRJw!0*t;K$QGB{>#BR3fKC-;oxJ(jfGqrSXtuI zmSe0vE;<9=L4_SC-vXQi6!A(<3Ap+Z&fcRig|%N<5?S#QQ`k}~^K3OA58s4uets+X z=JmdhZ+?yAo0m=T&Ch}FA42zh9pAjd&G?3B#{)|NF96m9RsmY0@#83Y{iYMa&v!Z| zf*b6?8C>I( z^*-PWz(oM33SO__$LEJ1{{`3i{M66K2`8J=I5`ivz%MrWoxnLK5l$AD0sQ5BvV#DB z0=x*|)B7dL_fUR~G9BgLP>uygzC(E(P!BNSyh+nIZ1%F zdi-bGCjg>ZdHQl#-tc%Y~&$|7pVF! z!D6>86{@>bOcw;&RVW7AgR6x1T2$4^CCqJgLgJGrPsTnU|7h>m>vJ9sp_0vlU&{|T zj`d&H>UVJLO;b#K}5U?1)dp8dQ;N_z@Ujq0IU@2f3K%X)5DZ!)5AoSP^z-u=A z2sM0gZ7s^_XytK~f8?B}bwC_WD{$ISm6uQBd^4aw?rlNYlF^n^Lipg9ar`QP*V*AH zs~si3#(%sctt9YhT;BtD6R;QX7GNLXZNPrO7nHhA9JI0|k#>9_csTJ#ui)}`{BoOC z0=PfF#DD3BxvpTMtkzO5=1;LpSZBI!Ry@UcQ!cU7LOP|aQ{Cv9ujEK-TQ7I~ds0ZL zmn$o-1Le~}Yvf-bwl}6b6fe}Ln+giVG|8>u)PA`@bYZT>>+9=9bVd@%^@>pC5{}~t zKqSCkb45sFc7H`YEw7xG{)coig~^}e#&>k&HzJt23!Px1kMnh0ss}L1e!aOUD7IHc zAITLsB44xUbyo`TjRtDL#yIUHq4c>jf8q$|s8* ztY)FP{c;(4Y&$J{J|eH`SlF0?j`z8qnltQ8`MRy!@(1=U+Z{8odHwH}dS>?LEU^)_ zyJBHtVTBz+xf$haiw(aaYFmj|!WLR%p*&QVh!#c*2Px6^ z=yu`(kxqQ9xZCeuDt^i;{6)zYEfy%x0-a;MsVG`3Qg*G?PA-xz%Ez@M%S z>#*+3?hE7VI{u~k+nv8XlRBe5!@4rTj3>eO75nbRycpQ^T>ghxH{AL zAPa?73rcH_awWdUC|JYhdQ(lVqLFWe+>ZGAx0k$xo6VPF%zRFrOwOhU=%dwQ2dY0VJ2}P0 z4$lCX%~nev)U}{))k4g$_0;&beN zqrsSX(IQ9m4CxU;CssoV!VBD~HcpJzI4>C7JL3~;iBA9pd@HndViSN7jJ3g*`&Mva z*2MBCut^u2tEkbzMPejb`muY+T&Q~3M-LMNm}MsB{$w%?M2zMX%Kj+FrW)MP9nKlf z4Y}dM#n)kIsGl^TA9H{^`)F5!*w3~}w2-Ar^r9`3#nyPCY%kaZQ<7H3i}$;9j|vG3 zpF1EcZ^ndtV^}_cAiXUZkle%ED)Pl*9e^XB&G-XkR3JlD2Ld_e9Q z6%rmr`K!df70X4Ts+@D-X`jk?AzERxh}E+++Zx4>u0ADpwfnCZPcz#R@nzP}A(8y; z-!2g)R%PQn^@8J~4^@&F?V(}FhcK1~s^ewFMp3YtMPKrLRrI*a4K*6>w!|?f`36a~ ziIsVQ)m88}mZJ4Snpp}S^$`7)7qe*QN^u#L#E1$h(c)BPJ@EIBg@Y|zKwHnDt*V_( zxc|49qz3Na$oX%XIopPysqb-6nt4d9{{ePopLtk(SYm_eqfJ_Ca$6@ZZ=UWzO%Qs% z-2TiuaSlZP2HwRrVkwg*pl`Hlt(a)FxJtfraaIJF1K_4;Q%S*(sbmBE41v3$>jG_0 z`)?7Um%PfJbTZ|j`N;so6LI-f2C;rGH~7C~>xJwa5}z)A=`i;TzG5lbI6T5#r-t@w z0sX&-{_>x#62mT_nU$D^iS*Y>=nzY2_KV`PcK;LNKB)=cr)2l5S+Tqq?#(!i3WhO14F^;(u=a0m(34npID zsG{MPL@w`%ne^OyXg>U9w0BIFl2|JWYb^!alN6~^wAXZ((ikPxie>hq=8`9~SHCDl zF}m1B+GF?imQFcp*m1!{aNH~}mPS(XT-A?G2S_d~#(H*A`^H|fGD@8<#nN*jk`L8& zloYBqOTNu#m|`KPW}Bu$UIo&3c4-coTT3ByFihGITHP-M}i97E2nreI{yENs{utx^1X@r{v-L%8J(4Cys2nVOL4dpw+vMoP2Ak%bbPk&j0lOT%nXXQXro#AfO)*z#|*| zXxu&Wk09Wty0?J<#|w>K|BH?2y>9O5m^NMxy+L5L?oAfO_onaWXK2A?DfpIVuW9H1 z#Wsw^gY{A9%pF9W?o0yJJt>ERbz@mf>J(v0F$H2J6qu%)?#F7FWb!p7o3c#Vros5X zfNSkg(_d7jnfm&$mwzmQ`h7>r)lNJJ!CTCy*jJ=BI@SMka=z(-Za<0(d+95j0T`3` z)1EabZlR;23n}cqTk7ad5BzvX2_0Qju~%e2Gk2y{Z;5$Swp*HPtS4Y*Dy!Hp{z4cw zfnocSU#eW>bejk?W}2$UNnW(g2XbL+bLkvs7tYMSvA_HhYd+pVy}ayyYs=56@fn(T zS?bo|#~9~kx|Ar*rWj2QC%0Z;R|etztF7ou&}NpG(B3w3Z~JbuoX+g&UF5|A7bd%D zda)GRDBfHdl|3ev@#=P4Upd1e{;JG!xnzh&dreRI;|5vsBnX?c(kK5ZE2UahinE8d zkq!!uHvS{R(-7vlqC-gkG9+VD-g>hrzJ2LpFqfO8%g-*()-j4plJ+>=H1oIE^_%$V zPj7%Q?m}{(E)BU^l;2`6xPH=9AGle<-P+Q=`I(<0S(h-{7AI8`7mfBmJt^;JhWe+U zPn;kpGOEp!*EQ$CdY*5>%ZQsgXRVtgxh=W$+N0J{AgGRz^+0*|1OnI_M)xF`MbPtrg4Q==~RRAuP7grPktJ$;UAaX;y zPg~~TblO}wfDbT{0%ps}6u|EW%#qtrU7_qtYqB*riYP`Enk#=!mR4*ynWJ$HUf@V- zJzxGarTkIKZIr-Ji*K`IH>906StJ%q=L+QzdSRaYTJv{}nb9rA<&-*0j<{>Q=|N<8 zO~Le|e@E6gyk)(EO%bbm&8+wG4sKbXJ8CCi{YUQhP=zhon_Ei{)F<*nW~6 zcL>g(_N>lS{|CkWK)7EpH;HDG{*N+BYD^r$`3A);_LUiY`<2BH2QzU&;wK zo7@79SvQ;9jY3b#3Xb87jH0fq;X0jpQVuhY7Jn_r`&MK8`mdyCHIJC50Jv%42%DJb z>?+w?;NFN;at!>1z?S8R?7{MR^PQ`f11+?0foy?$Fm@Mwl)gu#a0eOwl;JoerLMaD zf<#0WL1zjK!OmE=uUZ$$sSbpTRD`bJ|Z7w+13RW;dG{xVy56AvF*Ps z2&zhfSsJ#2x4&3+w}w8f(3MBPIybGvrA-etFl>9tY(5c8GiAk#t?0pcu|>0Z=(FaLtzvO{onVRW`o?)vjc8n+SX@xO_~Igj-=lBb=0#Ll~-!nd3hOAvhL5LtW839%DgI<)8iy}C$BH%SLvxM@(%VPulTqt zXdwRvB^cGWk&sPeNcJboGlEOYysYdAc}?q4w{j)Uy%Px1lQvJIA;@$;?@z;S~8%m?zc+vlH=)NMJF?LMWl|36}a7Fg}_ z);nD8cDdY*b^ba_=xwI=-j#R!q{Z&#g-j)eN%n1+bCY*<5RQ|n{Ji{Is=WloBlwJ5 z)AFwk>$jvwHID*1af*whOXuVXH14$A_YT(xyM3;4Gavr7@dSi*cCD6+Im3CQWojeW zh^)@WaW@+Cdm*!_@M-&#XpQG-dKk2}=(v2+lc#+dmj8|**1J$U-hw=a#QZ6{Fb+7A~)5YwM8)pF_ zSrfv0=1j<&!Rcvu#t*dpb9aHbeb~O*m~WHmhwVd({T%r(7oU?{sn%B-rJHO7FWx5G zXR@VbkBIP)o{oGOp3tkWvTkmUY*15Uo^Q$$=0#&qAqS@VGuSbX1kshNkcCt7xm+UT z3zVOzCDC<;V0`HsC4)+WRfWbK7M$rh#yqH|gXAoDn^qSq+vuBmIgL`!%Q5jk(svj* zW>c6xzJFxP7(MxwS~B(Z6CxtJca02>it5^{M-H|4Ob+|6P035QPHkguT3 zW$RZjP{z=XL5d5dO_QVGe3(|Mq*8Uh9K_a8n5WW<%oCMN=0*>WRYp*`41+w!Td`2) z-AFBslJTavuar?#BPm|=QZH=?tr*ALVIeMnu$VJl-Utv(p~(Ka|eH%SR)KD2U@+V{@<{Nm=PkS#K3OJ{jo+9*6nkQ1nN z;3pxN^m{plK0rCON;tU=)cmQpw-Urg(xo;?z1e@a;!T$is)?NN11W8Sx|sHQDZ^|X zl!_EX`ZJGp!ZVl8@zvW&@u7*{N{q1*U-ice zsyiy1DSR$Ev&=={EfNU7ys^b-T;cn54pOX_@(5-4DanmPa;NGJXyK)FjO$M!Sl?yu zK{#L)S}5{K)k4)%IHd8xyH+l<$*3jm%sc2cI(^uuUCUrIYdRCl;UO{PjZ8!fa# zj)s;^wcQj8TdYr=HRBIKz(^2%F;E>!c>>tl!B8Oj%dSc;+iSG@Tvss0sg#6%LG`X)wER%=w}UHI6D* zW3e~LOgB96IZZnR2B!11BBa~1X7t4|uvDZ6`;tc(dRW#|*+G?=2*0ebFb~YZOF+>k zT9BpAX_#VU33pd`VyMn9onplhR7*oO2j2trc``;>eSmnK@n%MWRTffe3n{_~ebsbV z+~{P!$ldU{^kTX?pC+fP&a|^HMmUyO2Qc-3zUbaU&IePC?B%VsVi46tLoO6jSde;u zqfgd_a{6FqJ(7S0ePl!W02SHYv{7{WUe%S=8H3h|;y!0&ne$x{`b+opQj+LslBNqN zFWR#Ugl>yd{K>-tYBNv5=KF_e!7eqPY8Qf{EN`Mq_fgoBxBv1HO+E*OP~eX5=9|i8#ywos zfsE=81YU!z1ODuY4fQ0YPb1C_;)t-9noun1aKyMYik!@gE}b3Wn8cGHucl)hA+FZ)t;wB$lV5+Pru z!AcHoTL9Uu6H!evn!7ws&7r(xAYoI3AWm+Sum0F6uq#>}ZXLSEo$8YC3cpFpEMz_D zBdwc=^#j`O%>{H0?_C1bj03%09;>XO>0_0JtkmFlDT$gV4H=6`h#RV`Blj27Z0pbq zo|rU++9yJk`tAc)sUD(8bZ(%QNGa=?vq9q@T@+kV%}V{+f~4;oEO_ATJY71f^rRXA zW5WCdiqlO~=*cv#t;`e6|3`Q%&>2p{`eY$F9DTEPT0G z3<7RZz_^BR)MOi`MU!tClPKjC7DcYPP-B{CTa_!7D1*(ISAw{NQYBrCHRTcOr1be& z`1;ruJoqpLy1K!neW`whGR^2YcnajvY-l?j8C9OZvS?JFFcvR?%x|d~baEWFpCIW` zu-TM#&z)*y)JUzK$BqmB6p10q#Ckm(dKn!vo=tRaU&$!!nN{$+pY zA`lcFl=%jxzHGNr)S#ikHt-ZiJ0@yHU&dM0Sn4(xb1|rmz*VzUL(V{$yVHQT@HnJ= z%IXymI2ZS#?Q`uQP%7VsRq!nxiH5PWcDCq3Qx9R?mO6w>s1OO^!oR=bO1sWs`&!EL zkOKh+p~Hb;fc$?C`p7(hC)!!rsR7Dg4IV{< zW4WH$pYsZZ1`QYa=BapnFg; z1L_T;sv5i$oF$xU6Y*b4jpA&`^t#^zgO5KT@_m@(`VO&aXk1it65WC7 zU1apV-%{p>CO)F9TIFF9qO@U#_#5(u>PfC!RgE%hAslm7Ln+V`jmke%lCavQ^;1*H z`D3LWOXC_=f4VqPb;CBTOXrj+hT>SC!TjjrIlK+)u!t7&HC!5iX*hcJhF%u*1!nE? zQK$o@K2Ykp1VL{`(^GTRdnx^*!60F5dMa_Yi%`~_sl!vs)7H)5UgZ53P@QhLF8hd+ zcrLYkM7@V9Td7fonQ(ZhF0*@5x7Bb2=r+WKkHIRk4YNk)Si|fue5Krlv-^<@RQ)9eVG#LPU5mW{B#$-t-YWr&^RrKkDd4*pnAMoD*9(|G z2z)>4PS?=|V_hLSr%zca)u(DBY;{Tyxew6NZ567g%)cSvpt7ypq}RG z0p7Az!=kLQft@L(GnV1jKnNpY5{5N3h`G=godgA_`UI$%YoG=r4Ak9Cwh}dj+I}i{ zQB8oVP)R5CXcN;A35t zxI4DmFVt3Rz8je_z42X|5%3XAAZ;o3#?I=E$*z{{QsxX;vI)&;vWpT zFfLzorA^VQ4+McO=`F=dBv>~z4rp!B(Aq2(a9VE0BPq95(b_`t{F+A(3``M9OA?^2>B>ig zv&~)RNgleR_EB0G50NPhhfl4E_Ys8P)L_bg*{B^$+y&%HX@gWRhs(6lk)u&<5_$>i zU{Ryd@2|f#Xi=?!jryYBic-)~W7v-)Vu{F?|Gb8vxg#r4ZP_7Y6vw`M%tVFp+o8 z%pTyb!?(G9HJ3XrlN$V$a5X|N=FaZ?dsT0a)nOFWR`FnK4G*Gj$d!+T?qT#mcd-5uNRj%~-iT6b)_|Cnuu@Yx%`VhhcX0Qd-&+wE!jc4+y|?5Aiu)6Obc zls_7lx*nY^iHEdVKS~|K$_-x!!Xyd5GD#gxyT1@UY;PzUyO&n%hKI?mT8)&uLAtr< z671zz3^%Zd3SwKf^@@Ovnf;c=iw_e+RKmA z+8HsudR^#SThziGIu1Id9$E{U40p#4BQW-AsT_ybyu@9EU1(t|xT=zp;1J%M`KOs%t;6J#SQmAH%>Q6CqRf`q=L8x8Bk+_lv1qT`p zVlR2d>yVznkGLC=K8$C)-Y64YoUD$ejbpTt^ie$HVP)A!tbqu?7hnwPDSZpBSV!W6 zx8Ysq?lV+A!+n7>;VILzdDahPiS$kps0uj{h+6&;K~PRM*7;kx<8Ys$2J32O^lT7n zA$LCwC1{vD0pb$17@&>j>Z7g%IsyQd^MN9`{`6CK?o4x+p9aA%;)?8W+F7jjXh<7M zDaMn-V%3RMeL;z{=B^(_ZpG+~j_PZ3(GJ40OK89*M6lK`z^O0{?m6EDY7o;MVGj_# zt;x04GmOgd$tHNik|}&Ol0o#C^-wE(_7~3r=Lq#fTW;`H;ek*_TNkMl8zZq?Irkl* zxlrjM)z@%&LFaxL`aQg1A&sH@P}bK_=`o!_hVp8Tg>!c4LUax=!j?7!>kNH<*|u4+WaiMh+9{xiEO&z z@q_-~4j}`zpfLf&k%m>b76>~Q4YEmG3xzs!jcPMGmcqTpNo(-VwAo-rHH04PvHM0_ z249U^aU2n2xc<;Kfg<%N81Ne)e+V-NDG5Bq23}-X5US=!-Zs2J=ReW?#RP??l=KoP zrM(i#Nync?SQ&Q)Y@th!BZopKq}RLn)5XWpMXZxJvK&QJ;a#eqsE(oPb=()uGk0K< z1U5#H+-T@vAh5Us&*;8)w`eV#<Sy5PYz*_ekmoa?-Gt4U z3Vr3Z+l<~_?urn|ibolbac(ujgN?BoT&kf373yrh+$YnPX?iqvGJ>^WJLT9$9A;=)mBNydKnl}}vBgmDx1=FWb?z(EA zo+r!LK>a+c&Y3ohS2bY{z8jRH^`Oev)c}Lz>#-Q*zIn)BV168Fdky|yFRI%KQ;@GY z>%=G4(bSy?qUd>pdSX=ii+G=I2G>>M2p;Z z?v6fB?4ok-9e#a>U+c+Px5}@VlKcOGo2{LvGcptH8lp^~f)`XD!{5QvOtEm=(aMQf zxXBS(H$7CwzkD0i#8I^NCEb^D1s{4Ch@@_=6F}=b2$t%Q&m|A2z2&Yr*R{Y1T9v4H z%J}-M$z2a2Qs^Ev-^jku7cSzRdQM7;wZ%g2i07Z0FEbqR$nWbx#k;YJ7w>``)g#%j z=fDeDybBEUh6m_mGd+*tJ0tMUwF!(Pjpq+x$-JQJENAKPesx|GM!X_f4=84!pM_jo zji=E4s%Nu;##EKb24B4+-R?-YpGCUS$r-wadz>p2eR)1z5WW94^f_HHC%+AmSGEsf zCtb$s(!FRO6lPrmL`WSP8qey%;tXJ?xzO%QZV`}vZVOed(MS6!S7MPv7c6qwKElZ9 z)pH=zk3a;eMeS} zI~4~Ydl9*@!? zeEkuFDgM6pUUFVgV3f=?3_EK;|Mlb>tRdeD7K`<;o-aAgm_I$wv%Cvt`bH*_OBc<; z^KVAc)IiOPCwU`Br8B}MKNo?x`fJ>Q@I4dc-#v&t7$3;qZTRfDCcKDGF)Ptj8H&}T zyR39eWNawLtlJ+M`^9ilLbU-7qkg!qlNLyuWJE@6OJZ$Tgc5=#%qz)LOkZ?Uf zp*ovuG;r}TL0sdB{*G-}Fe)Rp2dFMW+hhn^U0&9b>cL!*2c=Bns&P1-`v9J#*C)Eu zJ5iWSr0=~-`rLljQ}e=HAW5nZg+DL*(=W1nI;m_Jiv`!ar#6-5rdc(5EZoG-iu_-367wB5wzkw7{ zS0PfMcVe}Pe2El4J3%@PIXB&FP=J_s3^2pyD`oyf}99 zU4wvgyy>OBcoW#kbo{NYX>THAv|@q2+3!tM!LFRW$U?*}5O3PhUvqV&C?csELtIbe z60`@6sC6m@CLr96yzpW4SUk2Ql*ei7oA3qgnT$rmj)JXXQb)1F+EbylFkd@719= zg~L>D*2qJnAwxBVc_F!dk~MH!IxQc9nF9(_tSgpt!)YNFz+&!D8_#oPeTXwR8ao)z zY~*`(deXKY+Mn)BwUI^iE1Bw311m17aJD5V?QU<*$(*chX73o=AI=TJ7Fq0%TB>s` zo~#I6D-~=DTHPpPM|OD%cp7&4=y{Kxba)f~;y_FaXeWcyP9OSXkjP#1BL%7+sTDWL z{M^W?G>vxbhfw*mL*R!aa=&~81U?d`hf#{d|Ln-0_WcyDTkHjPr54W#+-tAVwBg!u zZuW#zzOSTlQ%I`#2E$%BNPv5K9juzFWNdQyFOP;zx7RZb-)HyuD#TiS!T%=?Owj~u zYJLD^=F85MKU|Z*V)Uq(<&x4{_=a!cDQ>bQ3W}dAwV#Bg{B5chr6=>;D*%L;A4{;?s#X9t?JH?E`GYCl_xYJ2j z+g~w}d9FHylJC<3x#AIyZ(_o~|5-YwQ@1#=0YIUTnzMFPn$9IBk4Wf=H{aX~ibCwB zh~ma*nFyyCTh+?-eT7%SoE-k3q-@BEhEPFb(k)uNLdL|7ao56N!SUk@IdNW zmcTqguK%luvVQgg^3KEY5&Z+)V?BcJ^b91oOf2&oI(E%C&4NE$(ID!dYmNP}*eurv z!2bY7Uq`9`>0bSh^j^1iX%;N&Use0NKi4bH#OKOW!|_GT+jt`^@wX1DUH{HKU|l%R to%Zi!k^DO(-*|lg56AHy(3xihFaIC GetLab004(string OrderNo, string ModelNo, DateTime? strdate, DateTime? enddate, string UserNo) + public async Task GetLab004(string OrderNo, string ModelNo, DateTime? strdate, DateTime? enddate, string UserNo,string Status) { List xx = new List(); UserInfo User = new UserInfo(); if (UserNo != null) User = await _sysApi.GetUserInfoByUserNo(UserNo); - var result = await _labApi.GetLabelItemMaster(OrderNo, ModelNo, strdate, enddate, User.UserID); + var result = await _labApi.GetLabelItemMaster(OrderNo, ModelNo, strdate, enddate, User.UserID, Status); if (result != null) { @@ -541,10 +541,10 @@ namespace AMESCoreStudio.Web.Controllers } [HttpGet] - public async Task GetLabelField(string Labmat) + public async Task GetLabelField(string Labmat,string ItemNo) { ResultModel result = new ResultModel(); - result = await _labApi.GetLabelField(Labmat); + result = await _labApi.GetLabelField(Labmat, ItemNo); if(result.Data.Count()>0) return Json(new Result() { success = result.Success, msg = result.Msg, data = result.Data }); else @@ -558,7 +558,7 @@ namespace AMESCoreStudio.Web.Controllers { int Sn = 1; ResultModel result = new ResultModel(); - result = await _labApi.GetLabelItemMaster(OrderNo, null, null, null, -1); + result = await _labApi.GetLabelItemMaster(OrderNo, null, null, null, -1,"A"); if (result.Data.Any()) { var r2 = result.Data.Max(x => x.ordeR_NO).ToString(); diff --git a/AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs b/AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs index 91806b75..5d436e5d 100644 --- a/AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs +++ b/AMESCoreStudio.Web/HttpApis/AMES/ILAB.cs @@ -23,7 +23,7 @@ namespace AMESCoreStudio.Web /// /// [WebApiClient.Attributes.HttpGet("api/LabelItem/GetLabelField")] - ITask> GetLabelField(string LabMat); + ITask> GetLabelField(string LabMat,string ItemNo); [WebApiClient.Attributes.HttpGet("api/LabelItem/GetLabel")] ITask> GetLabel(string Model); @@ -32,7 +32,7 @@ namespace AMESCoreStudio.Web ITask> GetMetInfo(string Model); [WebApiClient.Attributes.HttpGet("api/LabelItem/GetLabelItemMaster")] - ITask> GetLabelItemMaster(string OrderNo, string ModelNo, DateTime? strdate, DateTime? enddate, int UserId); + ITask> GetLabelItemMaster(string OrderNo, string ModelNo, DateTime? strdate, DateTime? enddate, int UserId,string Status); [WebApiClient.Attributes.HttpPost("api/LabelItem")] ITask> PostLabelItemMaster([FromBody, RawJsonContent] string model); diff --git a/AMESCoreStudio.Web/Views/LAB/LAB003.cshtml b/AMESCoreStudio.Web/Views/LAB/LAB003.cshtml index 51ce55c1..783637e0 100644 --- a/AMESCoreStudio.Web/Views/LAB/LAB003.cshtml +++ b/AMESCoreStudio.Web/Views/LAB/LAB003.cshtml @@ -39,7 +39,7 @@
-
+
@@ -48,7 +48,7 @@
-
+
@@ -56,7 +56,7 @@
-
+
@@ -68,7 +68,7 @@
-
+
@@ -76,15 +76,15 @@
@**@ -
+ @**@ -
+
-
+
@@ -97,7 +97,7 @@
-
+
@**@ @@ -107,7 +107,7 @@
-
+
@@ -115,7 +115,7 @@
-
+
@@ -128,17 +128,17 @@
-
+
-
- -
@@ -285,7 +285,7 @@ '' + '
' + - '檢視圖片'+ + '檢視圖片'+ '
' + '
' + @@ -346,9 +346,9 @@ qty++; newListBoxDiv.after().html( '
' + - '
' + + '
' + '' + - '
' + + '
' + '' + '
' @@ -365,11 +365,11 @@ '
' + '' +'
'+ + ' value="" class="layui-input" >' +'
'+ '
'+ '' +'
'+ + ' value="" class="layui-input" >' +'
'+ '
' + '
'+ '
' + ' - } else { - - } @@ -377,7 +376,7 @@ '' + '
' + - '檢視圖片'+ + '檢視圖片'+ '
' + '
' + @@ -442,9 +441,9 @@ if (x == "d") { newListBoxDiv.after().html( '
' + - '
' + + '
' + '' + - '
' + + '
' + '' + '
' @@ -453,9 +452,9 @@ } else { newListBoxDiv.after().html( '
' + - '
' + + '
' + '' + - '
' + + '
' + '' + '
' @@ -474,7 +473,7 @@ '
' + '' + '
' + + ' value="" class="layui-input" disabled="disabled" >' + '
' + '
' + '' + '' + '
' + + ' value="" class="layui-input" >' + '
' + '
' + '' + '
' + + ' value="" class="layui-input" >' + '
' + '
' + '
'+ '
' + '
'+ '
' + ' -
@@ -279,16 +278,17 @@ '' + '
' + - '
' + + '
' + '' + - '
' + + '
' + '' + '
' + - '檢視圖片'+ - '
' + + ' value="" class="layui-input">' + '
' +'
'+ + '檢視圖片' + '
' + + '刪除' +'
'+ + // '
' + + //+'
' + ''); newColumnDiv.appendTo("#group_title"); @@ -346,9 +346,9 @@ qty++; newListBoxDiv.after().html( '
' + - '
' + + '
' + '' + - '
' + + '
' + '' + '
' @@ -574,9 +574,9 @@ qty++; newListBoxDiv.after().html( '
' + - '
' + + '
' + '' + - '
' + + '
' + '' + '
' diff --git a/AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml b/AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml index 5e358bf4..3214550d 100644 --- a/AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml +++ b/AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml @@ -41,24 +41,24 @@
-
+
-
+
-
+
-
+
-
+
@@ -89,16 +89,16 @@
-
+
-
+
@{ if (ViewBag.Operate == "d") { - + } else { - + } }
@@ -147,9 +147,9 @@
-
+
-
+
@{ if (ViewBag.Operate == "d") { @@ -163,16 +163,16 @@
-
+
-
+
@{ if (ViewBag.Operate == "d") { - + } else { - + } }
@@ -183,23 +183,23 @@
-
+
-
+
@{ if (ViewBag.Operate == "d") { - + } else { - + } }
-
+
@{ if (ViewBag.Operate == "d") { @@ -227,7 +227,6 @@
@*
*@ -
 
@*
@@ -370,16 +369,17 @@ '' + '
' + - '
' + + '
' + '' + - '
' + + '
' + '' + '
' + - '檢視圖片'+ - '
' + - '
' + + ' value="" class="layui-input">' + '
' +'
' + + '檢視圖片' + + ''+'
' + + // '
' + + //'
' + ''); newColumnDiv.appendTo("#group_title"); @@ -441,9 +441,9 @@ if (x == "d") { newListBoxDiv.after().html( '
' + - '
' + + '
' + '' + - '
' + + '
' + '' + '
' @@ -572,9 +572,9 @@ qty++; newListBoxDiv.after().html( '
' + - '
' + + '
' + '' + - '
' + + '
' + '' + '
' From e4d2258c951dcc1a6fb6b55fa53c6d15eb4e8332 Mon Sep 17 00:00:00 2001 From: "Yui.Chen" Date: Wed, 24 Apr 2024 09:33:08 +0800 Subject: [PATCH 07/14] =?UTF-8?q?=E6=A8=99=E7=B1=A4=E7=94=B3=E8=AB=8B?= =?UTF-8?q?=E4=BD=9C=E6=A5=AD=20=E7=A7=BB=E9=99=A4=E5=93=81=E5=90=8D?= =?UTF-8?q?=E6=8F=8F=E8=BF=B01=202=20readonly=20=E8=A1=A8=E8=BA=AB=20model?= =?UTF-8?q?=20=E6=94=B9=E6=8A=93=E5=8F=96=E6=AC=84=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DesignTimeBuild/.dtbcache.v2 | Bin 228972 -> 228972 bytes .vs/AMESCoreStudio/v16/.suo | Bin 576000 -> 576000 bytes AMESCoreStudio.Web/Views/LAB/LAB003.cshtml | 4 ++-- AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml | 4 ++-- .../Controllers/AMES/LabelItemController.cs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2 b/.vs/AMESCoreStudio/DesignTimeBuild/.dtbcache.v2 index f29575e4b49a168e24038d3a85dc8f781e44f5c7..479beac6d40871a979df08f28ef8da155347c784 100644 GIT binary patch delta 92 zcmaF!hxg4N-i8*&EljoU4vEHw#)e5rM#hPW<|)Q$#-=IBMkz_D$>t_0#>Q#prUpjI v7N#c2NtUUJ7G|c&mOyTzX_7^%v00jhxuvPaWQPk%?f2c8w%>PW?ll7dz^opw delta 92 zcmaF!hxg4N-i8*&EljoU4rXSF=0+w4$wn5brb(72$)+hrhAAfIDW(=iDHf?_=4och w7RHImCZ=i0#zq$A2IgjoX^DoG$w?MzrfCKi#*-Z`D7D{rXWD+>ow?Tx0G6yCEC2ui diff --git a/.vs/AMESCoreStudio/v16/.suo b/.vs/AMESCoreStudio/v16/.suo index 023e68c5a670456cbfc94c9413219ee4d079d3a6..a522508ef2f990bdb0b0a9730416544a0d376e99 100644 GIT binary patch delta 24897 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 Cbut71 delta 24366 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 diff --git a/AMESCoreStudio.Web/Views/LAB/LAB003.cshtml b/AMESCoreStudio.Web/Views/LAB/LAB003.cshtml index 93ce4d3b..72f9e8be 100644 --- a/AMESCoreStudio.Web/Views/LAB/LAB003.cshtml +++ b/AMESCoreStudio.Web/Views/LAB/LAB003.cshtml @@ -85,7 +85,7 @@
- +
@@ -116,7 +116,7 @@
- +
diff --git a/AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml b/AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml index 3214550d..6a7b1542 100644 --- a/AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml +++ b/AMESCoreStudio.Web/Views/LAB/LAB003U.cshtml @@ -98,7 +98,7 @@ } else { - + } }
@@ -172,7 +172,7 @@ } else { - + } }
diff --git a/AMESCoreStudio.WebApi/Controllers/AMES/LabelItemController.cs b/AMESCoreStudio.WebApi/Controllers/AMES/LabelItemController.cs index d0cbdbce..2c490f0d 100644 --- a/AMESCoreStudio.WebApi/Controllers/AMES/LabelItemController.cs +++ b/AMESCoreStudio.WebApi/Controllers/AMES/LabelItemController.cs @@ -647,7 +647,7 @@ namespace AMESCoreStudio.WebApi.Controllers.AMES case 1002: //ModelName if (pmi.Where(x => x.MeterialNo == ItemNo).Any()) { - Data = pmi.Where(x => x.MeterialNo == ItemNo).Select(x => x.ModelName).FirstOrDefault(); + Data = pmi.Where(x => x.MeterialNo == ItemNo).Select(x => x.MeterialNo).FirstOrDefault(); } else { From d1e0a3d9ad9df76d5725716b4dc8321dc7701f0c Mon Sep 17 00:00:00 2001 From: Yiru Date: Thu, 25 Apr 2024 14:30:09 +0800 Subject: [PATCH 08/14] =?UTF-8?q?=E8=87=AA=E9=81=B8=E6=A8=99=E7=B1=A4?= =?UTF-8?q?=E5=88=97=E5=8D=B0=E7=95=AB=E9=9D=A2=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml | 200 +++++++++++++++----- AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml | 193 +++++++++++++++---- 2 files changed, 313 insertions(+), 80 deletions(-) diff --git a/AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml b/AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml index fce5d2c2..98e1fdba 100644 --- a/AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml +++ b/AMESCoreStudio.Web/Views/LAB/LAB002C.cshtml @@ -19,6 +19,7 @@ white-space: normal } +
@@ -41,79 +42,78 @@
- +
-
-
+
+
- + + +
-
+ @*
-
+
*@
- +
- - -
-
-
+
+
- + + +
-
+ @*
-
-
- -
- - -
-
-
-
-
+
*@ +
+ +
+ + +
+
+
+
+
+
-
-
- +
+
+
+ @Html.ValidationMessage("error") + +
-
-
-
- @Html.ValidationMessage("error") -
-
-
-
+
+
@@ -124,11 +124,13 @@ @section Scripts{ diff --git a/AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml b/AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml index e98730fa..38cd0886 100644 --- a/AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml +++ b/AMESCoreStudio.Web/Views/LAB/LAB002U.cshtml @@ -38,47 +38,54 @@ +
- +
-
-
+
+
- + + +
+ @*
+
+ + +
+
+
*@
- - -
+ + +
-
- - - -
-
-
+
+
- + + +
-
-
- - -
-
+ @*
+
+ + +
+
-
+
*@
@@ -126,27 +133,94 @@ @section Scripts{ +} \ No newline at end of file diff --git a/AMESCoreStudio.WebApi/Controllers/BLL/RPTController.cs b/AMESCoreStudio.WebApi/Controllers/BLL/RPTController.cs index e1a80133..4698973c 100644 --- a/AMESCoreStudio.WebApi/Controllers/BLL/RPTController.cs +++ b/AMESCoreStudio.WebApi/Controllers/BLL/RPTController.cs @@ -2112,6 +2112,122 @@ namespace AMESCoreStudio.WebApi.Controllers.BLL return result; } + /// + /// 生產效率報表 + /// + /// + [HttpGet("GetRPT006View")] + public async Task> GetRPT006View(string strDate, string endDate) + { + if (string.IsNullOrWhiteSpace(strDate) || string.IsNullOrWhiteSpace(endDate)) + { + strDate = DateTime.Now.ToString("yyyy/MM/dd"); + endDate = DateTime.Now.ToString("yyyy/MM/dd"); + } + + var query = @$" SELECT I.WIP_NO , I.PLAN_QTY , A.ITEM_NO , S.TOTAL_CT , S.OP_CNT , + E.START_TIME AS EXCEPTIONSTRTIME , E.END_TIME AS EXCEPTIONENDTIME , + M.* FROM( + SELECT WIP_ID , STATION_ID , + TO_CHAR(CREATE_DATE, 'YYYY/MM/DD') AS WORKDATE, + COUNT(DISTINCT BARCODE_ID) AS QTY , + MIN(CREATE_DATE) AS EARLIEST, + MAX(CREATE_DATE) AS LATEST + FROM JHAMES.BARCODE_STATION + WHERE CREATE_DATE BETWEEN TO_DATE(:StrDate, 'YYYY/MM/DD HH24:MI:SS') + AND TO_DATE(:EndDate, 'YYYY/MM/DD HH24:MI:SS') + AND STATION_ID IN ('1096','1099','1105') + GROUP BY WIP_ID , STATION_ID , TO_CHAR(CREATE_DATE, 'YYYY/MM/DD') + )M + INNER JOIN JHAMES.WIP_INFO I ON I.WIP_ID = M.WIP_ID + INNER JOIN JHAMES.WIP_ATT A ON A.WIP_NO = I.WIP_NO + LEFT JOIN JHAMES.STANDARD_WORKTIME S ON S.ITEM_NO = A.ITEM_NO AND S.STATION_ID = M.STATION_ID + LEFT JOIN JHAMES.EXCEPTION_WORKTIME E ON I.WIP_NO = E.WIP_NO AND M.STATION_ID = E.STATION_ID + AND TO_CHAR(E.EXCEPTION_DATE, 'YYYY/MM/DD') = M.WORKDATE + ORDER BY I.WIP_NO , M.WORKDATE , M.STATION_ID "; + + DynamicParameters p = new DynamicParameters(); + p.Add("StrDate", strDate + " 00:00:00"); + p.Add("EndDate", endDate + " 23:59:59"); + try + { + var result = await _context.Database.DapperQueryAsync(query, p); + foreach (var item in result) + { + // 計算作業時間 + DateTime str = Convert.ToDateTime(item.earliest); + DateTime end = Convert.ToDateTime(item.latest); + TimeSpan ts = end.Subtract(str); + // 實際工時 + item.workTime = (double)Math.Abs(Math.Round(ts.TotalMinutes, 2)); + // 加一台標工時間 + item.workTime += item.total_Ct; + // 總標工時數 標工 * 生產數量 / 人數 + item.alltotal_Ct = item.total_Ct == 0 ? 0 : + Math.Round((item.total_Ct * item.qty / item.op_Cnt), 2); + + // 製程判定 1096 1099 1105 + item.unitNo = item.station_Id == "1096" ? "組裝" : + item.station_Id == "1105" ? "測試" : + item.station_Id == "1099" ? "包裝" : + ""; + + // 中午休息時間 12:00 ~ 13:00 + if (str.TimeOfDay < TimeSpan.Parse("12:10:00") && TimeSpan.Parse("12:20:00") < end.TimeOfDay) + item.restTime += 60; + + // 早上休息時間 10:00 ~ 10:10 + if (str.TimeOfDay < TimeSpan.Parse("10:02:00") && TimeSpan.Parse("10:04:00") < end.TimeOfDay) + item.restTime += 10; + + // 下午休息時間 15:00 ~ 15:10 + if (str.TimeOfDay < TimeSpan.Parse("15:02:00") && TimeSpan.Parse("15:04:00") < end.TimeOfDay) + item.restTime += 10; + + // 加班休息時間 17:15 ~ 17:45 + if (str.TimeOfDay < TimeSpan.Parse("17:20:00") && TimeSpan.Parse("17:30:00") < end.TimeOfDay) + item.restTime += 30; + + // 異常工時 + if (item.exceptionStrTime != null && item.exceptionEndTime != null) + { + DateTime exceptionStr = Convert.ToDateTime(item.exceptionStrTime); + DateTime exceptionEnd = Convert.ToDateTime(item.exceptionEndTime); + TimeSpan exceptionTs = exceptionEnd.Subtract(exceptionStr); + item.abnormalTime = (double)Math.Abs(Math.Round(exceptionTs.TotalMinutes, 2)); + + // 中午休息時間 12:00 ~ 13:00 + if (exceptionStr.TimeOfDay < TimeSpan.Parse("12:10:00") && TimeSpan.Parse("12:20:00") < exceptionEnd.TimeOfDay) + item.abnormalTime += 60; + + // 早上休息時間 10:00 ~ 10:10 + if (exceptionStr.TimeOfDay < TimeSpan.Parse("10:02:00") && TimeSpan.Parse("10:04:00") < exceptionEnd.TimeOfDay) + item.abnormalTime += 10; + + // 下午休息時間 15:00 ~ 15:10 + if (exceptionStr.TimeOfDay < TimeSpan.Parse("15:02:00") && TimeSpan.Parse("15:04:00") < exceptionEnd.TimeOfDay) + item.abnormalTime += 10; + + // 加班休息時間 17:15 ~ 17:45 + if (exceptionStr.TimeOfDay < TimeSpan.Parse("17:20:00") && TimeSpan.Parse("17:30:00") < exceptionEnd.TimeOfDay) + item.abnormalTime += 30; + } + + // 計算效率 + // 總標準工時 / 實際工時 - 休息時間 - 異常工時 + item.efficiency = item.alltotal_Ct / (item.workTime - item.restTime - item.abnormalTime); + item.efficiency = Math.Round((item.efficiency * 100), 2); + + } + return result.ToList(); + } + catch (Exception ex) + { + return new List(); + } + + } + #endregion } } diff --git a/AMESCoreStudio.WebApi/DTO/AMES/RPT006VIiewDto.cs b/AMESCoreStudio.WebApi/DTO/AMES/RPT006VIiewDto.cs new file mode 100644 index 00000000..d4426759 --- /dev/null +++ b/AMESCoreStudio.WebApi/DTO/AMES/RPT006VIiewDto.cs @@ -0,0 +1,108 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; + +#nullable disable + +namespace AMESCoreStudio.WebApi.DTO.AMES +{ + public partial class RPT006ViewDto + { + public RPT006ViewDto() + { + + } + + /// + /// 工單號碼 + /// + public string wip_No { get; set; } + + /// + /// 料號 + /// + public string item_No { get; set; } + + /// + /// 生產日期 + /// + public DateTime workDate { get; set; } + + /// + /// 工單數量 + /// + public int plan_Qty { get; set; } + + /// + /// 生產數量 + /// + public int qty { get; set; } + + /// + /// 標準工時 + /// + public double total_Ct { get; set; } = 0; + + /// + /// 人數 + /// + public int op_Cnt { get; set; } = 0; + + /// + /// 作業站ID + /// + public string station_Id { get; set; } + + /// + /// 製程 + /// + public string unitNo { get; set; } + + /// + /// 當天最早產出時間 + /// + public DateTime earliest { get; set; } + + /// + /// 當天最後產出時間 + /// + public DateTime latest { get; set; } + + /// + /// 實際作業時間 + /// + public double workTime { get; set; } = 0; + + /// + /// 休息時間 + /// + public double restTime { get; set; } = 0; + + /// + /// 異常報工 開始時間 + /// + public DateTime? exceptionStrTime { get; set; } + + /// + /// 異常報工 結束時間 + /// + public DateTime? exceptionEndTime { get; set; } + + /// + /// 異常時間 + /// + public double abnormalTime { get; set; } = 0; + + /// + /// 總標準工時 + /// + public double alltotal_Ct { get; set; } = 0; + + /// + /// 生產效率 + /// + public double efficiency { get; set; } = 0; + + } +} From d8a7fe59353aef4848906a5f1cf44367a1d67e50 Mon Sep 17 00:00:00 2001 From: Marvin Date: Fri, 3 May 2024 19:25:10 +0800 Subject: [PATCH 14/14] =?UTF-8?q?1.=E4=BF=AE=E6=AD=A3QRS010=E8=89=AF?= =?UTF-8?q?=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AMESCoreStudio.Web/Controllers/QRSController.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/AMESCoreStudio.Web/Controllers/QRSController.cs b/AMESCoreStudio.Web/Controllers/QRSController.cs index 302b223e..ef11077d 100644 --- a/AMESCoreStudio.Web/Controllers/QRSController.cs +++ b/AMESCoreStudio.Web/Controllers/QRSController.cs @@ -933,8 +933,9 @@ namespace AMESCoreStudio.Web.Controllers LineDesc = jo["lineDesc"].ToString(), ModelNO = jo["modelNO"].ToString(), FirstCnt = int.Parse(joPass["firstCnt"].ToString()), - PassCnt = int.Parse(jo["passCnt"].ToString()), - Yield = double.Parse((int.Parse(joPass["firstCnt"].ToString()) * 1.0 / int.Parse(jo["passCnt"].ToString()) * 100.0).ToString("0.00")) + //PassCnt = int.Parse(jo["passCnt"].ToString()), + PassCnt = int.Parse(joPass["passCnt"].ToString()), + Yield = double.Parse((int.Parse(joPass["firstCnt"].ToString()) * 1.0 / int.Parse(joPass["passCnt"].ToString()) * 100.0).ToString("0.00")) }); } }