From 83d96dab3caf63ce4acb835f3407c8a2c6f1ca21 Mon Sep 17 00:00:00 2001 From: wenjy Date: Sat, 1 Oct 2022 23:15:46 +0800 Subject: [PATCH] =?UTF-8?q?change=20-=20=E9=93=9D=E5=86=85=E8=83=86?= =?UTF-8?q?=E6=88=90=E5=9E=8B=E7=BA=BF=E7=94=9F=E4=BA=A7=E8=AE=A1=E5=88=92?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/MesProduction/PlanInfo.java | 5 +++-- .../mapper/PlanInfoMapper.java | 16 ++++++++++++++++ .../impl/MesProductionDataServiceImpl.java | 14 +++++++++++++- .../static/js/aluminumLiner/index.js | 2 +- .../controller/AluminumTtankController.class | Bin 4203 -> 4188 bytes .../controller/TankShellController.class | Bin 3603 -> 3591 bytes .../MesHourProdutionStatisticsMapper.class | Bin 519 -> 1159 bytes ...esMaterialProductionStatisticsMapper.class | Bin 1002 -> 1426 bytes .../mapper/MesTeamStatisticsMapper.class | Bin 938 -> 1244 bytes .../impl/MesProductionDataServiceImpl.class | Bin 6357 -> 8338 bytes 10 files changed, 33 insertions(+), 4 deletions(-) diff --git a/productionboard/src/main/java/com/productionboard/entity/MesProduction/PlanInfo.java b/productionboard/src/main/java/com/productionboard/entity/MesProduction/PlanInfo.java index 861d1e9..b838c04 100644 --- a/productionboard/src/main/java/com/productionboard/entity/MesProduction/PlanInfo.java +++ b/productionboard/src/main/java/com/productionboard/entity/MesProduction/PlanInfo.java @@ -23,17 +23,18 @@ public class PlanInfo implements Serializable { @TableField("SPE") private String spe; - /** 内胆库库存 */ + /** 计划数量 */ @TableField("OQ") private String oq; - /** 箱壳库库存 */ + /** 实际数量 */ @TableField("AQ") private String aq; /** 工位编号 */ @TableField("ROUND") private String round; + @TableField("CHA") private String cha; diff --git a/productionboard/src/main/java/com/productionboard/mapper/PlanInfoMapper.java b/productionboard/src/main/java/com/productionboard/mapper/PlanInfoMapper.java index 61d5515..cf29ae3 100644 --- a/productionboard/src/main/java/com/productionboard/mapper/PlanInfoMapper.java +++ b/productionboard/src/main/java/com/productionboard/mapper/PlanInfoMapper.java @@ -2,10 +2,15 @@ package com.productionboard.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.productionboard.entity.MesProduction.DeviceFault; +import com.productionboard.entity.MesProduction.MesTeamStatistics; import com.productionboard.entity.MesProduction.PlanInfo; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; +import java.util.List; + /** * MES物料库存统计 * @author WenJY @@ -14,4 +19,15 @@ import org.springframework.stereotype.Repository; @Mapper @Repository public interface PlanInfoMapper extends BaseMapper{ + + /** + * 铝内胆成型线生产计划 + * @author WenJY + * @date 2022-10-01 17:27 + * @param in_id + * @return java.util.List + */ + @Select("select * from table ( scada_mesPlan_aluminumLiner(#{in_id}) )") + List getAluminumLinerMesPlan(@Param("in_id") Integer in_id); + } diff --git a/productionboard/src/main/java/com/productionboard/service/impl/MesProductionDataServiceImpl.java b/productionboard/src/main/java/com/productionboard/service/impl/MesProductionDataServiceImpl.java index 4dc9957..9de704d 100644 --- a/productionboard/src/main/java/com/productionboard/service/impl/MesProductionDataServiceImpl.java +++ b/productionboard/src/main/java/com/productionboard/service/impl/MesProductionDataServiceImpl.java @@ -168,6 +168,18 @@ public class MesProductionDataServiceImpl implements IMesProductionDataService { @Override public List getProductionPlan() { QueryWrapper wrapper = new QueryWrapper<>(); - return planInfoMapper.selectList(wrapper); + List aluminumLinerMesPlan = planInfoMapper.getAluminumLinerMesPlan(this.in_id); + for (PlanInfo planInfo :aluminumLinerMesPlan){ + planInfo.setOq(planInfo.getOq() == null ? "0" : planInfo.getOq()); + planInfo.setAq(planInfo.getAq() == null ? "0" : planInfo.getAq()); + + int oq = Integer.parseInt(planInfo.getOq()); + int aq = Integer.parseInt(planInfo.getAq()); + + planInfo.setCha((oq -aq)+""); + //map.put("17",String.format("%.1f%%", ((double)actualQtuitem / (double)planQtyItem * 100))); + planInfo.setRound(String.format("%.1f%%", ((double)aq / (double)oq * 100))); + } + return aluminumLinerMesPlan; } } diff --git a/productionboard/src/main/resources/static/js/aluminumLiner/index.js b/productionboard/src/main/resources/static/js/aluminumLiner/index.js index 824287d..4618190 100644 --- a/productionboard/src/main/resources/static/js/aluminumLiner/index.js +++ b/productionboard/src/main/resources/static/js/aluminumLiner/index.js @@ -42,7 +42,7 @@ $(() => { console.log(res) Res.data=res.map(val => { - return [val.spe,val.aq,val.oq,val.cha,val.round,] + return [val.spe,val.oq,val.aq,val.cha,val.round,] }) Res.header = ['型号', '计划数', '完成数', '差异数', '执行进度'] console.log(Res) diff --git a/productionboard/target/classes/com/productionboard/controller/AluminumTtankController.class b/productionboard/target/classes/com/productionboard/controller/AluminumTtankController.class index 9d2116673d09540d3f8e4be149f52296eef6fee8..1e94fcd12483c68e7e44138cc74c61e96a108fbf 100644 GIT binary patch delta 1235 zcmaJG8`uo!cfL1K(sD-7WuNXDB zDvoO!`b%&f10@*5kT`~Q+`x#6n>ut@A~&kymX3hqj0x+uhH+7QN5h1uxGS85hI<oQ-y;Qi(+?nVvV0LefAG zX^ymFvABVGWM~iD_JT-0$BWgM>KlKyhHC(1exv{iyXY11zuS(I8~+-8vgNst-bvO< z{Fj8+Acal&1AHrXafqkRBskKK2JEM0IHhRB0eTXeaF7*ZOq8C4Epp7{10`=KEPNRoYi(`M`h)CO3oVvm|$6cHg-exAq zLu|2vi}9PvI?7~Nk&h@AOY$Krwp2<3d~QV;pr#>vTaNY$kCVcy+OAzh+Q~_5a=Y47 zE{hJ2#Rd@shV>bNQDqI~R>Z7Whbi}9Bw|(y3nL=8hSI(kn<~>gWUON+GfsqM`G}_= zlvB$>_8Nl@giE;?z38+lhjmyf5=s?NF?=L%p{Z^sZ2ON4k^0HXJQ80T#a85cM}#zjx* NCHj}i%6Xz!{s2|Tg6IGM delta 1253 zcmaJ=OHUJF6g@L-nYK(p20;rdMZiak(h5FMke7<+Q~^OmRIG?nK*1JJbkT*1ab?J? z*|;~6AVDOSMw53%lt_*n_>y z5N#^xNvH>0!8dTcCSr9E|S{=&B-&JVYqG((I9M zDhj20s3<}?_OX6HvxPbf5o*FjIO=Z%6xItijkQ5W4)j1uvR@T32?y;No-@vQjZt5@ zRBFul3R6P0#aL!D`f+Ftqd*R?W-Qp4@kpAn+Ggyv7?H!JIkoIXY?7ge-ohgm=zzJ2 zEE+%?|HgJs*Rg5~IkqMjj;_%pkYm)ee(svIidtL65*Y-C{vN(=*8+0%kftpnS8haC zNZTwdbcxskvZCdtREG0pEFzx~3t`#{Voy+N{K_in6Kf1u6luvGG~u`@xr8$6XvyYZ zD3)!->M7oeH4s}rMq_%6CTk4iOLo4wF6+rolI_W=RV_a{2Ya2MmW>v3GTrf%y_j0& ui4VY~ZPi07Z`z`mCdJEtC|az~;(r{?CWnmE>?)(hp6d+#vt+ZLrv4Wj^^4m8 diff --git a/productionboard/target/classes/com/productionboard/controller/TankShellController.class b/productionboard/target/classes/com/productionboard/controller/TankShellController.class index a68172058af14b353acd127853f352aea1c1b9ef..a64f12fa5d3f9bddccc72b4ed6d829aa26726f4a 100644 GIT binary patch delta 1145 zcmZvbYfsZq9LArvD=l3?S76GRI7L7yxJ~hbI&fZ53y6w{sAD237f}bAn3(L9@rChK z<6GlLz+i%C;s@X}8RK)>t}H;Bobx~b+w(h@y2+2p`Hg?S{s8Dj$-o{A>bO>mIIfG~ zh7Ko+Aq+<`f}3I(HE;{JHQX^^U{J)yG~6{%=P$;Ebx+5H$i1&)Qe-^P@leAf4TbNE zld?3mx*@xY(u)1=R83=d68lW-MYDuRHk0YoP&Dxv(;B8sJi&~Kr+B8}xrtfKx!-DX zITQ1kme4R)d|OPvS)N@;=S!vHJ7;!j*~9{-O|;?#yE&Om*2E%S(jN2dS9rbJrX`eg zoErsXeiVj;1XnejTRbm`IBQ&!kz>kTFp}j1^ck!GYa+}zNXujth@uULI7?_p2QyN% z(_D#|+Vum<3Jn>efe-<$&0;kut{`+WF5z(4=o2f2sH;V@9)m@7poiK=(L|jTvR=Em zmu3g;Op+f#7hBoP7M#APn^q4!I;6iyY3w0{E!K82lAeULgbX_hh+`qd2Opx0c5WwP zsp~LhIQBX;316YxKT*5#8+8+Fs23)yBi?p>)*Q9_$vQx-d=+bZ$l8qKTUdpsx0*FU z*76RpCj!`$A#A~iMXbWQORxr9ipNzCg^a_zjuEnrRx!mwCKac)FsUt$RDDK2w;g%$n_yZRr1?QqQi delta 1152 zcmZvb%TE(g6vn@qb~?j!C^8D=QKg_DG9axFe1amrz?O%Ih^RcPRIn&u;)0|rZ z=qW-J*Tj(0kPf34ePQ%tKn&M)4C020AsxEddsCE$Rov1MLAO|pi0HP4QL+7whPxtp zPs5msaTOC1DzoX#V*kSY^wX)O?0jx@xkr{J*S^YjpsNOP2_;Jtx!J*)%-mdSHaDGl zW?(P&8K^{+gkUm}Xj3s|U>X?}lLqeNfq@xhRXj8>i#hvEs68Sf^z;4dk9TVZ9wB3Y z4^_l-$QY=>JkLla5=jG(@r3b^6E9$KEvi-pTBGa$AoE8%NT}v2#5v|<$-!CWnxGtO z?QuPpuVYT90@Mb{x}TB3DiFp2)N_{5fP>so%ea**QB#^eAh5zfhB!c&fEzZ&iYMMc zXk=Z&A^)J4R0>o3m!6dB?3QpeFT~|e((=UO%1y8+Y-UYRxtSJ5hndkJ{YG3Rm9R0X zZDb`e3TY8Z9AQqvQQz{pXIW47plK9PEF)zVph|cP&B}j7(aL8;M%GaxLaKw#zvB z2#~9n&F>@Iz!s)bpGm>V|CmJP6s@*(EREA%%g*=|uW2DnEYTNb9i=JDGz-`*W7snH zxPbs<7t3U%n>YFFNO86EMdR)P9#Ij=&pJd6P}oz8*A(AY^wO<$kj<@~V{RKI&U=uZ zK4d!;;wdR+dCJ;+lRCykcA5UKw)AG>VFswVz<$(TGA{WPm$|+|h5N#; F{snF>d>8-# diff --git a/productionboard/target/classes/com/productionboard/mapper/MesHourProdutionStatisticsMapper.class b/productionboard/target/classes/com/productionboard/mapper/MesHourProdutionStatisticsMapper.class index a9b412424f5a13379768ce731e3247c4979dd8f0..2f68b624e32dab8f69a49d42be606a254f9a9e68 100644 GIT binary patch literal 1159 zcmb`G&2H2%5XZ-*+t8&z`KFvA(4t)`)fZH$S_Fav0%=!NU5N{a$VsMIm&A^2r&WY_ z0Un7155Pkq#tx#apxS~sSk5@(ncw_p{Po-CF97fu?nQ7Xg1ZrHF}Po#o1%TC8?$e8 z-Z-h%%n2v0lbM~+w##5JoE(W`!AqeE{#rRK(2Pgj8Qmzk_Zu_VoT8iSd|wz*p+jRC z^rT8;&R~5e3ng4*kU@E#a8D+gu6XU4G7pt%VRDYjN!M~B4z%Hqx6a@nKP9TIgNANZ z_*Pn(miSyL?F-b3@E%UIDY&RbHb*W~UpE)04t$0sX1=uEu_zm2e`do;{3t#&x{95k zi19GCnaD-r+8UENNm;guZd~2CMB&Nq@WF?m!pBiOBE=VReu}lgHCVzGZV}e<_U-)> z^WGx!r(gR2COz_!g!ZIDS2EWPuiBtpT{f0y+90n)U8CVIgvDw2{D1xI&q(16U&@mD zF*v*VUEUo(xyu{fIg_H>L3vvnsft5C$0ypn=a!}!weK%Kz*<}Bv}wtE{HG!PQTsA7 zdM~H1s#BE#saNs8kadj#gB4mA=xML4GFXKktu?ZG3?kYt`X8_kecG>(<0V=f?|@mj pOg6xVk8sr=T8JpX=J^9$`#k`0bP2D+jga_eNZcocTV&q`_zq{?W{Cg* delta 83 zcmZqYY-f=_^>5cc1_lNb20nHMZgvJ9b_QNX2F~Ej^t{B9(xTMKmP|(`{;-)W%Y0Os dfq|KU1*n#Zft7&`OtUj^0BJ6u2q&0k000v64d?&> diff --git a/productionboard/target/classes/com/productionboard/mapper/MesMaterialProductionStatisticsMapper.class b/productionboard/target/classes/com/productionboard/mapper/MesMaterialProductionStatisticsMapper.class index 88930f78feb45977fd6054cfa2af042ef09e4583..a6823e1f298c2f9e8520a687562d374952926d9c 100644 GIT binary patch delta 261 zcmaFGK8aiM)W2Q(7#J8#806R)q}dr{*coIQ8Pw8KOC}dE$#1ln!N{Tx<#7097MGYY zG8j+xXH*k5(on9>%!|)Vsnt}_WMqITQUEEkWMmN5@YM9lN-Rs%FD=Q;(FciIGcv?$ zcurgt&j>bw*Am%;&F2_*FfuYvZfAC6VPRwtnB2{*l_JQ%2Xq<_BLgD?KM?a2Gq3~Y zgcyVwm>JlBGOUaY>_CbGh?y8f7`T8mA5a}PNNqF&V=;p$P$5KCj6oc%N&>8k3#eWa J$d_VZ001MAE;#@I delta 81 zcmbQl{fb@e)W2Q(7#J8#7$n#kMA;d{*crqb8Pq0UWK`Q|Glg+82lF;YM#jneSsaxZ dm>D>LDw!Ar7zDwz5Ca#G<^qZc18ETk1^~?p3~K-Y diff --git a/productionboard/target/classes/com/productionboard/mapper/MesTeamStatisticsMapper.class b/productionboard/target/classes/com/productionboard/mapper/MesTeamStatisticsMapper.class index 7f585d8051ab67e2e4107bd1473da0dd3fe7f8b5..1262924fc7fa9a8731c6b1c239b802e4eb2c5c67 100644 GIT binary patch delta 187 zcmZ3*euq=|)W2Q(7#J8#7-ZNPB-t6H*cqfZ3NL45RG26x&tk^NU^Ll^QB}Z5L%BLL zFFrG+R#QQfkpV1e36Zf^m63&!fn{0RTC<4D$d0 diff --git a/productionboard/target/classes/com/productionboard/service/impl/MesProductionDataServiceImpl.class b/productionboard/target/classes/com/productionboard/service/impl/MesProductionDataServiceImpl.class index 720e5da8916a6e30665f89b25c27c8a24fc36a17..693b5f6038715ff0aa3ebd6e40449ac0a35fe6a4 100644 GIT binary patch literal 8338 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 QTy+~)_28pU@pm2Y1{JeL2mk;8 delta 1946 zcmb7FZBrXn6n=IS*d@CG%%-4(0Ik;AkQNZ)3oRvRsX}>aYlX&C+K8yoYAb=3Dm7YY zl|rfIs%U+~m(dwN>ENj7jN@m&`ww)+zu*_f=k6|R+SqZ-%*{RboU`{l&pprGUF!I) zDfjF8k3R!w!RGekQQj`*%KsF9SV?6Uy%Djl)QPLs zfReOV>CiUUpAH$~gkC1LSf|9+a4Lt*JkS~_sD;M%kq7N9>}xUSJ2|Tod4Z1v3Vh^I z;3I_sAL)3$*hUeao$E9>H*z#(aW8Zl>?o z_>iEf6L}GR^P;u7KbNGXa>!qVLq63I`xZJ!$qxvu!BElrCBg;1_}5JJLl&;$p}+>! zjHg*-lHMtnp2Kb%OdU(JpbJJ?yV1r{I&w4EgLWcFGC^Y2Aw3=RJVcL$;&sF|Jgi}_ zQfgFNf1wuMLYHqeYL=B^BV*;h#6 zG%1Xe!UQQylEPV1m?DMq|4CusMhZDn7{K8FqHu&1Qh0)0lS*3V{4YwXkV*fX#ak#TO{h}q`AU-T9VI!}CCV-y^|GFHH6Z} z^K;^ZkJ3iupF42-#vQnW$g5Or+yJ1I*}!GOnJ4arymO9tQi&xs2(0;q<#(6`C#Oy61YY%OEwUBtK@sYd5`HZ f?D7hd^g89GXM}~EgLsDd&oZVW_?-8;9tHjeD^LGu