From 39d6b27c95f652f676625bab135776852f606c20 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Fri, 28 Jul 2023 11:00:59 +0800 Subject: [PATCH] =?UTF-8?q?rev:=20=E6=B7=B7=E7=A2=BE=E4=B8=8B=E6=96=99?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E4=BF=AE=E6=94=B9=E3=80=81=E7=89=A9=E6=96=99?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E3=80=81=E5=B7=A5=E5=8D=95=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lms/nladmin-system/doc/wms.xls | Bin 322048 -> 323072 bytes lms/nladmin-system/nlsso-server/pom.xml | 6 + .../material/service/dao/MdBaseMaterial.java | 11 +- .../wms/ext/acs/service/dto/SignalData.java | 4 +- .../acs/service/impl/AcsToWmsServiceImpl.java | 189 +++++++++++++----- .../service/ISysInteractRecordService.java | 4 +- .../impl/SysInteractRecordServiceImpl.java | 2 +- .../workorder/service/dao/PdmBdWorkorder.java | 8 +- .../dao/mapper/PdmBdWorkorderMapper.xml | 4 +- .../dao/SchBaseVehiclematerialgroup.java | 3 + .../sch/task_manage/GeneralDefinition.java | 9 +- .../nl/wms/sch/task_manage/task/AcsUtil.java | 58 +++++- .../task_manage/task/tasks/auto/HLYZTask.java | 108 ++++++++++ .../task_manage/task/tasks/dtk/CTQKTask.java | 103 +++++++--- .../task_manage/task/tasks/dtk/DTSKTask.java | 4 +- .../task/tasks/dtk/mapper/DTKMapper.xml | 5 +- .../task_manage/task/tasks/fj/FJMKTask.java | 8 +- .../task_manage/task/tasks/fj/FJQKTask.java | 6 +- .../task_manage/task/tasks/fj/FJQLTask.java | 6 +- .../task_manage/task/tasks/fj/FJRKTask.java | 4 +- .../task_manage/task/tasks/fj/FJSKTask.java | 4 +- .../task_manage/task/tasks/fj/FJSLTask.java | 4 +- .../task/tasks/fj/mapper/FJMapper.xml | 14 +- .../task_manage/task/tasks/hn/HNMLTask.java | 40 ++-- .../task/tasks/hn/mapper/HNMapper.java | 1 + .../task/tasks/hn/mapper/HNMapper.xml | 21 ++ .../task_manage/task/tasks/yao/CYZCTask.java | 4 +- .../task_manage/task/tasks/yao/GZYQLTask.java | 4 +- .../task_manage/task/tasks/yz/YZQKTask.java | 4 +- .../task_manage/task/tasks/yz/YZSKTask.java | 5 +- .../task_manage/task/tasks/yz/YZSLTask.java | 32 ++- .../task/tasks/yz/mapper/YZMapper.java | 9 + .../task/tasks/yz/mapper/YZMapper.xml | 10 + .../main/resources/config/application-dev.yml | 11 + .../resources/config/application-prod.yml | 12 +- .../src/main/resources/logback-spring.xml | 2 +- .../src/test/java/org/nl/ApplicationTest.java | 37 +++- .../src/views/wms/basedata/material/index.vue | 6 + .../src/views/wms/pdm/workerorder/index.vue | 9 +- .../views/wms/sch/group/MaterialDialog.vue | 2 + 40 files changed, 602 insertions(+), 171 deletions(-) create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/HLYZTask.java diff --git a/lms/nladmin-system/doc/wms.xls b/lms/nladmin-system/doc/wms.xls index 160c0df283dea691593db3ceea4c6bde9ca66d1a..d3e88f6ba9347f2122b3ef83e16ac74ddd033c2b 100644 GIT binary patch delta 3134 zcmb7G2~<_r72W5)$0!g+6$eB_5k&=JP-`(r0EdWC366+U972>qvBeS03Y8T|mxA@x zNV}}I>Wao8G(K^HXdHtRDr&TfQE@1(Lyb$~)cyW9S?NMo+yB@3``!J{z4z>W?|uK} zo%YGQ=(8k6Jrm=~H~QeMneR%m(q(^{gPN)wD))^k-B^;PFIF?>mHeQmx#z_XFWp#i zUTinYvK&4Y`9+zVQ$yd9F0oB>n+Ddx7dZd~{y>hGS4?0`ARO&{hK+CW3cmF#_{QU; zbDRd{-6(%Xu5E(GH>?gXE6C1!HX6vzH!hUJaGXFO#=7E%!sa{sV!pGz>1Kxr<@c5Q z@UqqeRt+rKGR51cg8~#h-~gr59t}t9O9rI{_=LQI@AwKn^c8%km+(X92LyGt@$R-M zt-^tNtH5yx{i%%IX#pW&Ow;hPwErwQd}KgKm;XAXHA8*L-BkaOuK!1FxBoFWe4Kxa zaOMhrlwh0B`k}0{-6iFIxvSr@q$-h=iAFv=@w-7*TbIR?Crx`$=rP6Owk6xS%*pAK z=FKl0VR1&Gox3_%a@wX@oCmsWwKz?t6$CBt8)s$Z?6PP5Fd`<$>YYz}tD3VUILgX* zmZc_)O)h$O^_U(Lt>h2KS~qlQGke|OwrL}5(+t{T=d_}=sXubl5;R+0N$SWk=aSYB zv-*Dfo}IHMIk@z|a*KO1vuxOB&Ant>*#|pAoQe+=Iizr~17%AOWJp=@-gNDYL)SBM zYqtZ|R?I91N{Pk0fjv5KocNeHcn>hw0oYHxM_g6`R5}7XDuFsDI{6h)$SwVl7~}#N zdx3q#KKp<)SN0>`BbIy(R5SsS_5-<`u!gAIk&B`Oz;<^a_#iOE1NekkPINc~M7#!s z9tM(m> zIu-FP5Xbdxb^)+XRr`xTPcFmCzX6-*+|5gLkdFQ9GMAf9J*)*>=#RXf2SsmQmz zppHxE(m`;6%I1X#5-Ds}M?pM=Wrqq9C~QL~!2&MP>dt~}3hWUYCUBv`PF(~~h&f#a z1F5jGo1mC$t9ei0(dS9?mSNK&^g>%i!nEf(L+g2qh%E)W4oQ);cPv%5vWe%Ar zp9L762`a|aZ_C17u9>|Relu8MZi>~b($QqvTqkqObQ$PtGA}sDdngyDQ=UTDGKJfJ zQHa{yIMq1vu^KN!jkf)ikJ+bCZR}udnWgETL)iB<&_{mqBwU%dx2jktW7RsP=UVry zf7GCur*Op(?#~bv!F9H`6kCyOiE`vU4IP!8*Ac1$*~`v5@O0aGM`rM>zTlnE`33L% zV$?nG<~S}0Q(aV7>)TOvQyw^rV7PL#gh>vvZQlZPM>Su4?5%7R7>VVopvfq3i?PO0 z7-iI!tB+dZl)|+-g_;J1?QR;5w9)X0^@qo6X5al%@iQxbDcg=IXNliOAHHThd;a|S zQQ|?yA;w|G5ym%+D#kI!C~7=TJi$207{T@_;&(>kan;SGmX}u;)kgktHP!bCFP}1= zTgcJDY_oobc=(v=vRXK+N#)xbvQstOo}?M9?hj_iB<)CRr@NCi)MeSImBzC{;%Pih z7GHxqE6S+6#qE4QOAB&$^3K*!H20-xre~gZ&1rdo_MSTyjW$<3_TqEp^zLT>U zx6bI+3zFeqW5)qR4x3Y>^D$wpC#dU5#`zk34tFz*c^A|E=StdNh>+&5Mt(C)$<(x E4Yv8&FaQ7m delta 2293 zcmYjT3s63p~JwAfWg`k?@I$pP&e&9U1{KiczRYP(cu_pU?*ILxL&hkx?pB zFr(1P4beCWnTlyN6U*mnRWK#N_=$kAB4Vuy{zjuVjcG^}x-KMEm^JIXefK_RueHye z_lhof7oG9mnywy*ak)jGyDx9Plq+4DYMj(csayYJIa>@oL2ndbZv3LQ+*_ zV~6xVs9Ejwj!0C^AeWvPze1Z23T=4oFGStAvtfNraKd{DHBTD{d>!G_gpZX-`ck79 zo(P>~eb#03@@1>OE%jJo#b(YMh~+KMS@!$F(o`!pu4EwAHCGD8W?L~2H14%xnye}b z+~AvOWw{*~$oe65T7gwv3?F3pDrPy$_QXGB%vhXKHoqz@a;cTy9vo9Q-NJ=nh;ZJ9yx#zw=Bx z92ngM?6(8;vOx|T3>^F%Nbv;xn*o#jM{7nb@IxSfD8i?zXWcQqfY_teynK$s)sw6#KjvUfNxrXvXMYv8&Ek4aQzDS zz#oV@1DqZW#QX#390LTL1>UDqP2}mE?}zQcQ*_ll$6StK!g=6hI`>*99i(H$7dUP@ zRq{{nNvF171V+)JJO2W59kizI5)eUac3!4>TC?j45K2e%E*6tFl65*VxEt6?UO~Q2 zZXqYpp?9wWqv=ffHNcyWd~lr((UFE5z;oWT{3dJY%=lZtUOLiCb`0fB{hGXqmXzON z;c(#ld%$`+5d95{=|K2@*c=@gb{}|~$_u^&XacnFfhAO2(*t-?>Bb*# zGY>gBDlP8??vfAo0e%#^6oN*wC_x5=p4P;HNmSCS3(~0M56*%vDrs{OOr!$13Kmnr zd^f>9Dkyaq+@J#8F34izfA$b4Hr_K>@FGWe%S$kmjho&AACByzkKmVVyvtYc1h?xP zDj3O;)eRHeCl~lR1pBFE@NhvQXE$|(AfJjBGOLn`rjFugXWnXm!An%uO%9@>C&mbt zafTTIf}K>fYpmcJN4Pyu&`D+XAi*38a|#y3Q`A9Eb0VD|n;<%`T;H^^)^@A^(o=B~g~6l~rK**?l>OO)+q(NYO=u0JX1 z%Dh)Cqg~9=d6M8`ygo}!GuM1AuRrUqq7?jQD-2rr|B@SHO=biIdM9x@hYA%Mwki}> zDUAQ<@gyVaO|?Xl%*r=aV~FvLudeMe>T-yZjqb_dpm@`g zk!;*PtTv7O_LRc8D+(m)u7{ znU||&n%&H~CCy@bcB#U(?zPWrShYyQ#mt{to1Chh^mpmb(s2Ie{?JF}C;3{Q-NiXi zL(wY(A%md=bJQlS+oj?eeb8HF+HdTwpUmt3R=k&+QdMcLF4HtGIc?^@t953DSt4I# z(~F6f#6lvCu;S@IaRzx6VZG;B#v6Uwu&@POzD&GCWD~z7en;dGtBG79k61%kTdg(P z`m{;g@@%#Gx?0IJ@@w_G_WpjXZ|kf5ebwoq9Nx#cIXq;f0K>j=gC)-jag(_ zZWNr?CrPrgo5YTcj`R9@Ew>=dNa@sr`xhHJ^{1G(yHn4UWYcy*&(q~ebNwZKib|Xs zH#I&yYD#2WRAf|K+~WweyG>7ujSh?ni diff --git a/lms/nladmin-system/nlsso-server/pom.xml b/lms/nladmin-system/nlsso-server/pom.xml index e10f83d..b2c1157 100644 --- a/lms/nladmin-system/nlsso-server/pom.xml +++ b/lms/nladmin-system/nlsso-server/pom.xml @@ -451,6 +451,12 @@ lucene-queryparser ${lucene.version} + + + org.redisson + redisson-spring-boot-starter + 3.16.4 + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java index 31e53dc..7d147fa 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/material/service/dao/MdBaseMaterial.java @@ -26,9 +26,15 @@ public class MdBaseMaterial implements Serializable { @ApiModelProperty(value = "物料标识") private String material_id; - @ApiModelProperty(value = "物料编码") + @ApiModelProperty(value = "成品物料编码") private String material_code; + @ApiModelProperty(value = "半成品物料编码") + private String half_material_code; + + @ApiModelProperty(value = "原材料物料编码") + private String raw_material_code; + @ApiModelProperty(value = "物料名称 ") private String material_name; @@ -41,6 +47,9 @@ public class MdBaseMaterial implements Serializable { @ApiModelProperty(value = "静置时间(分钟)") private Integer standing_time; + @ApiModelProperty(value = "冷却时间(分钟)") + private Integer cooling_time; + @ApiModelProperty(value = "车间编码") private String workshop_code; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java index 9148f27..0b3b05c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/dto/SignalData.java @@ -10,9 +10,9 @@ import lombok.Data; @Data public class SignalData { - private String code; + private String code; // to_command - private String value; + private String value; // 1 } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 19cc3ba..beeb436 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpStatus; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.MapOf; @@ -47,6 +48,8 @@ import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.util.CommonUtils; import org.nl.wms.util.PointUtils; import org.nl.wms.util.TaskUtils; +import org.redisson.api.RLock; +import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -54,6 +57,7 @@ import org.springframework.transaction.annotation.Transactional; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.List; +import java.util.concurrent.TimeUnit; /** * @Author: lyd @@ -87,6 +91,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { private IMdBaseMaterialService materialService; @Autowired private IPdmBdProductionProcessTrackingService processTrackingService; + @Autowired + private RedissonClient redissonClient; @Override public BaseResponse acsApply(JSONObject param) { @@ -116,86 +122,171 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return result; } - /** 任务:申请补满料盅托盘(叫料) */ + /** + * 任务:申请补满料盅托盘(叫料) + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ + @SneakyThrows public ApplyTaskResponse applyPutFullVehicle(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位错误!"); - } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "QLTask"; - // 组织参数 - param.put("config_code", configCode); - taskService.apply(param); + RLock lock = redissonClient.getLock(deviceCode); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } + String configCode = basePoint.getRegion_code() + "QLTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return ApplyTaskResponse.responseOk(requestNo); } - /** 任务:申请补空料盅托盘(叫空盘) */ + /** + * 任务:申请补空料盅托盘(叫空盘) + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ + @SneakyThrows public ApplyTaskResponse applyPutEmptyVehicle(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位错误!"); - } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "QKTask"; - // 组织参数 - param.put("config_code", configCode); - taskService.apply(param); + RLock lock = redissonClient.getLock(deviceCode); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } + String configCode = basePoint.getRegion_code() + "QKTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return ApplyTaskResponse.responseOk(requestNo); } - /** 任务:申请取走空料盅托盘(送空盘) */ + /** + * 任务:申请取走空料盅托盘(送空盘) + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ + @SneakyThrows public ApplyTaskResponse applyTakeEmptyVehicle(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位错误!"); - } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "SKTask"; - // 组织参数 - param.put("config_code", configCode); - taskService.apply(param); + RLock lock = redissonClient.getLock(deviceCode); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } + String configCode = basePoint.getRegion_code() + "SKTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return ApplyTaskResponse.responseOk(requestNo); } - /** 任务:申请取走满料盅托盘(入库) */ + /** + * 任务:申请取走满料盅托盘(入库) + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ + @SneakyThrows public ApplyTaskResponse applyTakeFullVehicle(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位错误!"); - } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "MLTask"; - // 组织参数 - param.put("config_code", configCode); - taskService.apply(param); + RLock lock = redissonClient.getLock(deviceCode); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } + String configCode = basePoint.getRegion_code() + "MLTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return ApplyTaskResponse.responseOk(requestNo); } - /** 申请强制取走满料盅托盘(强制入库) */ + /** + * 任务:申请强制取走满料盅托盘(强制入库) + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ + @SneakyThrows public ApplyTaskResponse applyForceTakeFullVehicle(JSONObject param) { String deviceCode = param.getString("device_code"); - SchBasePoint basePoint = pointService.getById(deviceCode); - if (ObjectUtil.isEmpty(basePoint)) { - throw new BadRequestException("点位错误!"); - } String requestNo = param.getString("requestNo"); - String configCode = basePoint.getRegion_code() + "QZRKTask"; - // 组织参数 - param.put("config_code", configCode); - taskService.apply(param); + RLock lock = redissonClient.getLock(deviceCode); + boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS); + try { + if (tryLock) { + SchBasePoint basePoint = pointService.getById(deviceCode); + if (ObjectUtil.isEmpty(basePoint)) { + throw new BadRequestException("点位错误!"); + } + String configCode = basePoint.getRegion_code() + "QZRKTask"; + // 组织参数 + param.put("config_code", configCode); + taskService.apply(param); + } + } finally { + if (tryLock) { + lock.unlock(); + } + } return ApplyTaskResponse.responseOk(requestNo); } - /** 申请强制满托入缓存 todo: 暂时 */ + /** + * 任务:申请强制满托入缓存 todo: 暂时 + * @see org.nl.wms.ext.acs.service.dto.to.wms.ApplyTaskRequest + * @param param: ApplyTaskRequest的json形式 + * @return + */ public ApplyTaskResponse applyForceTakeFullVehicleInStorage(JSONObject param) { // 找到当前的设备 String deviceCode = param.getString("device_code"); @@ -290,8 +381,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { case GeneralDefinition.GZY: // 如果是入窑口就是记录数据 return this.recordKilnTime(baseRequest); // 直接返回 default: - return (ApplyTaskResponse) ApplyTaskResponse.responseError(baseRequest.getRequestNo(), - "参数错误"); + return (ApplyTaskResponse) ApplyTaskResponse.responseError(baseRequest.getRequestNo(),"参数错误"); } } @@ -384,6 +474,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { * @param param * @return */ + @Deprecated @Transactional(rollbackFor = Exception.class) public BaseResponse pressRequestMaterial(JSONObject param) { // (公共接口进来)只是给我一个下料位(中间位置) String requestNo = param.getString("requestNo"); @@ -405,7 +496,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // 获取原材料物料 PdmBdRequestMaterialRecord requestMaterialRecord = new PdmBdRequestMaterialRecord(); requestMaterialRecord.setRecord_id(IdUtil.getSnowflake(1,1).nextIdStr()); - requestMaterialRecord.setMaterial_id(workOrder.getRaw_material_id()); +// requestMaterialRecord.setMaterial_id(workOrder.getRaw_material_id()); requestMaterialRecord.setWorkorder_id(workOrder.getWorkorder_id()); requestMaterialRecord.setDevice_code(parentPointCode); requestMaterialRecord.setCreate_time(DateUtil.now()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java index c795baa..bfdfc1d 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/ISysInteractRecordService.java @@ -2,8 +2,8 @@ package org.nl.wms.ext.record.service; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; -import org.nl.common.domain.query.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.ext.acs.service.dto.to.BaseResponse; import org.nl.wms.ext.record.service.dao.SysInteractRecord; @@ -46,5 +46,5 @@ public interface ISysInteractRecordService extends IService { /** * 创建记录 */ - void saveRecord(JSONObject param, BaseResponse response, String direction); + void saveRecord(Object request, BaseResponse response, String direction); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java index dab2e91..8882582 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/record/service/impl/SysInteractRecordServiceImpl.java @@ -63,7 +63,7 @@ public class SysInteractRecordServiceImpl extends ServiceImpl workorder_status IN diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java index 81c4634..2439b79 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java @@ -31,6 +31,9 @@ public class SchBaseVehiclematerialgroup implements Serializable { @ApiModelProperty(value = "物料标识") private String material_id; + @ApiModelProperty(value = "冗余-半成品/泥料") + private String redundance_material_code; + @ApiModelProperty(value = "载具类型") private String vehicle_type; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java index 11eb7bb..21fa657 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/GeneralDefinition.java @@ -10,9 +10,9 @@ public class GeneralDefinition { /** 窑自动任务开启 */ public static final String AUTO_KILN_CALL = "auto_kiln_call"; // 是否 - /**是 */ + /**是/正确/可用... */ public static final String YES = "1"; - /** 否 */ + /** 否/错误/不可用... */ public static final String NO = "0"; // 载具类型 /** 料盅 */ @@ -57,4 +57,9 @@ public class GeneralDefinition { public static final String LZKLX = "LZKLX"; /** 干燥窑区域 */ public static final String GZY = "GZY"; + // 特殊: 1-缓存输送线入口,2-缓存输送线出口,3-上输送线,4-下输送线 + /** 上输送线 */ + public static final String UPPER_CONVEYOR_LINE = "3"; + /** 下输送线 */ + public static final String LOWER_CONVEYOR_LINE = "4"; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java index c3999e7..fd5c9a6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/AcsUtil.java @@ -1,13 +1,18 @@ package org.nl.wms.sch.task_manage.task; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpRequest; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.dao.Param; import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.ext.record.service.ISysInteractRecordService; +import org.nl.wms.ext.record.service.impl.SysInteractRecordServiceImpl; import org.nl.wms.sch.task_manage.AcsTaskDto; import org.nl.wms.sch.task_manage.GeneralDefinition; import org.springframework.http.HttpStatus; @@ -19,7 +24,53 @@ import java.util.List; */ @Slf4j public class AcsUtil { - public static JSONObject notifyAcs(String api, List list) { + /** + * 统一多数据入口 + * @param api + * @param list + * @return + * @param + */ + public static JSONObject notifyAcs(String api, List list) { + SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); + //判断是否连接ACS系统 + Param isConnectAcs = sysParamService.findByCode("IS_CONNECT_ACS"); + if (ObjectUtil.isEmpty(isConnectAcs)) { + throw new BadRequestException("参数表中:IS_CONNECT_ACS不存在"); + } + String isConnect = isConnectAcs.getValue(); + JSONObject result = new JSONObject(); + if (StrUtil.equals(GeneralDefinition.NO, isConnect)) { + result.put("status", HttpStatus.BAD_REQUEST.value()); + result.put("message", "未连接ACS!"); + result.put("data", new JSONObject()); + return result; + } + //ACS地址:127.0.0.1:8010 + Param acsUrlObj = sysParamService.findByCode("ACS_URL"); + if (ObjectUtil.isEmpty(acsUrlObj)) { + throw new BadRequestException("参数表中:ACS_URL不存在"); + } + String acsUrl = acsUrlObj.getValue(); + String url = acsUrl + api; + log.info("下发acs任务的参数为:{}", list.toString()); + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(list)) + .execute().body(); + result = JSONObject.parseObject(resultMsg); + } catch (Exception e) { + String msg = e.getMessage(); + //ConnectException: Connection refused: connect + //网络不通 + log.error("连接失败:{}", msg); + result.put("status", HttpStatus.BAD_REQUEST); + result.put("message", "网络不通,操作失败!"); + result.put("data", new JSONObject()); + } + return result; + } + public static JSONObject notifyAcs(String api, T object) { //判断是否连接ACS系统 String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue(); JSONObject result = new JSONObject(); @@ -33,10 +84,10 @@ public class AcsUtil { String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ACS_URL").getValue(); String url = acsUrl + api; - log.info("下发acs任务的参数为:{}", list.toString()); + log.info("下发acs任务的参数为:{}", object.toString()); try { String resultMsg = HttpRequest.post(url) - .body(String.valueOf(list)) + .body(String.valueOf(object)) .execute().body(); result = JSONObject.parseObject(resultMsg); } catch (Exception e) { @@ -48,6 +99,7 @@ public class AcsUtil { result.put("message", "网络不通,操作失败!"); result.put("data", new JSONObject()); } + // 记录交互表 return result; } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/HLYZTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/HLYZTask.java new file mode 100644 index 0000000..827c727 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/auto/HLYZTask.java @@ -0,0 +1,108 @@ +//package org.nl.wms.sch.task_manage.task.tasks.auto; +// +//import cn.hutool.core.util.ObjectUtil; +//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import org.nl.common.exception.BadRequestException; +//import org.nl.system.service.param.ISysParamService; +//import org.nl.system.service.param.dao.Param; +//import org.nl.wms.sch.point.service.ISchBasePointService; +//import org.nl.wms.sch.point.service.dao.SchBasePoint; +//import org.nl.wms.sch.task.service.ISchBaseTaskService; +//import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; +//import org.nl.wms.sch.task.service.dao.SchBaseTask; +//import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; +//import org.nl.wms.sch.task_manage.AbstractTask; +//import org.nl.wms.sch.task_manage.GeneralDefinition; +//import org.nl.wms.sch.task_manage.task.TaskType; +//import org.nl.wms.sch.task_manage.task.core.TaskStatus; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Component; +// +//import java.util.Arrays; +//import java.util.List; +//import java.util.stream.Collectors; +// +///** +// * @Author: lyd +// * @Description: 混料压制物料输送任务 +// * @Date: 2023/7/27 +// */ +//@Component +//@TaskType("HLYZTask") +//public class HLYZTask extends AbstractTask { +// private static String TASK_CONFIG_CODE = "HLYZTask"; +// @Autowired +// private ISchBasePointService pointService; +// @Autowired +// private ISchBaseTaskService taskService; +// @Autowired +// private ISchBaseTaskconfigService taskConfigService; +// @Autowired +// private ISysParamService paramService; +// @Override +// protected void create() throws BadRequestException { +// +// } +// +// @Override +// protected void autoCreate() { +// // 自动创建任务 +//// Param autoKilnCall = paramService.findByCode(GeneralDefinition.AUTO_KILN_CALL); +//// if (autoKilnCall.getValue().equals(GeneralDefinition.NO)) { +//// return; +//// } +// // 判断当前点位有没有任务执行 +// List unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig(TASK_CONFIG_CODE); +// if (unFinishTasksByTaskConfig.size() > 0) { +// // 有任务在执行就不创建 +// return; +// } +// // 获取任务配置 +// SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() +// .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); +// // 创建任务 +// SchBaseTask task = new SchBaseTask(); // 任务实体 +// // 2、创建申请任务 +// task.setConfig_code(TASK_CONFIG_CODE); +// task.setCreate_mode(GeneralDefinition.AUTO_CREATION); +// task.setTask_status(TaskStatus.APPLY.getCode()); +// task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码 +// // 设置起/终点 +// this.setTaskPoint(taskConfig, task, "***"); +// // 找起点 +// List nextRegionStr = Arrays +// .stream(taskConfig.getNext_region_str().split(",")) +// .collect(Collectors.toList()); +// SchBasePoint point = findNextPoint(nextRegionStr); +// if (ObjectUtil.isEmpty(point)) { +// task.setRemark("未找到所需点位!"); +// taskService.create(task); +// // 消息通知 +// return; +// } +// // 设置终点并修改创建成功状态 +// task.setPoint_code2(point.getPoint_code()); +// task.setRemark(""); +// task.setTask_status(TaskStatus.CREATED.getCode()); +// taskService.create(task); +// point.setIng_task_code(task.getTask_code()); +// pointService.update(point); +// //下发 +//// this.renotifyAcs(task); +// } +// +// @Override +// protected void updateStatus(String task_code, TaskStatus status) { +// +// } +// +// @Override +// public void forceFinish(String task_code) { +// +// } +// +// @Override +// public void cancel(String task_code) { +// +// } +//} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java index d929a0c..458834e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/CTQKTask.java @@ -5,6 +5,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import org.nl.common.exception.BadRequestException; +import org.nl.system.service.notice.ISysNoticeService; import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.task.service.ISchBaseTaskService; @@ -12,11 +13,14 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum; import org.nl.wms.sch.task_manage.enums.PointStatusEnum; +import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum; import org.nl.wms.sch.task_manage.task.TaskType; import org.nl.wms.sch.task_manage.task.core.TaskStatus; import org.nl.wms.sch.task_manage.task.tasks.dtk.mapper.DTKMapper; import org.nl.wms.util.PointUtils; +import org.nl.wms.util.TaskUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -40,6 +44,8 @@ public class CTQKTask extends AbstractTask { @Autowired private ISchBaseTaskconfigService taskConfigService; @Autowired + private ISysNoticeService noticeService; + @Autowired private DTKMapper dtkMapper; @Override protected void create() throws BadRequestException { @@ -49,15 +55,15 @@ public class CTQKTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { + TaskUtils.setUpdateByAcs(task); // 修改修改者 List startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(",")).collect(Collectors.toList()); // 找起点 - String extGroupData = task.getExt_group_data(); - JSONObject jsonObject = JSONObject.parseObject(extGroupData); SchBasePoint point = findStartPoint(startRegionStr); if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.update(task); + task.setRemark("暂无托盘!"); + taskService.updateById(task); // 消息通知 + noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), NoticeTypeEnum.WARN.getCode()); continue; } // 设置终点并修改创建成功状态 @@ -65,13 +71,15 @@ public class CTQKTask extends AbstractTask { task.setRemark(""); task.setVehicle_qty(point.getVehicle_qty()); task.setTask_status(TaskStatus.CREATED.getCode()); - taskService.update(task); + taskService.updateById(task); point.setIng_task_code(task.getTask_code()); pointService.update(point); + PointUtils.setUpdateByAcs(point); + pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } @@ -81,6 +89,7 @@ public class CTQKTask extends AbstractTask { * @return */ private SchBasePoint findStartPoint(List startRegionStr) { + // 钢托盘缓存区域的空盘是1 状态不同 List points = dtkMapper.findPointForCTQK(startRegionStr); return ObjectUtil.isNotEmpty(points) ? points.get(0) : null; } @@ -95,48 +104,78 @@ public class CTQKTask extends AbstractTask { if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { throw new BadRequestException("该任务已取消!"); } - // 获取参数 - String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取起点 - SchBasePoint startPointObj = pointService.getById(startPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); + // 根据传来的类型去对任务进行操作 if (status.equals(TaskStatus.EXECUTING)) { // 执行中 taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); taskObj.setRemark("执行中"); + TaskUtils.setUpdateByAcs(taskObj); + taskService.updateById(taskObj); } if (status.equals(TaskStatus.FINISHED)) { // 完成 - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.clearPoint(startPointObj); - endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); - endPointObj.setVehicle_type("2"); - endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); - endPointObj.setUpdate_time(DateUtil.now()); - pointService.updateById(endPointObj); - } - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setRemark("任务完成"); + this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); } if (status.equals(TaskStatus.CANCELED)) { // 取消 - // 起点解锁 - if (ObjectUtil.isNotEmpty(startPointObj)) { - startPointObj.setIng_task_code(""); - pointService.update(startPointObj); - } - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS); } - taskService.update(taskObj); } @Override public void forceFinish(String task_code) { - this.updateStatus(task_code, TaskStatus.FINISHED); + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); } @Override public void cancel(String task_code) { - this.updateStatus(task_code, TaskStatus.CANCELED); + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC); + } + public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String startPoint = taskObj.getPoint_code1(); // 获取起点 + String endPoint = taskObj.getPoint_code2(); // 获取起点 + SchBasePoint startPointObj = pointService.getById(startPoint); + SchBasePoint endPointObj = pointService.getById(endPoint); + // 起点清空 + if (ObjectUtil.isNotEmpty(startPointObj)) { + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + PointUtils.clearPoint(startPointObj); + endPointObj.setPoint_status(PointStatusEnum.EMPTY_VEHICLE.getCode()); + endPointObj.setVehicle_type("2"); + endPointObj.setVehicle_qty(taskObj.getVehicle_qty()); + endPointObj.setUpdate_time(DateUtil.now()); + PointUtils.setUpdateByType(endPointObj, taskFinishedType); + pointService.updateById(endPointObj); + } + // 任务完成 + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setRemark("任务完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); + } + public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { + // 获取参数 + String startPoint = taskObj.getPoint_code1(); // 获取起点 + SchBasePoint startPointObj = pointService.getById(startPoint); + // 起点解锁 + if (ObjectUtil.isNotEmpty(startPointObj)) { + startPointObj.setIng_task_code(""); + PointUtils.setUpdateByType(startPointObj, taskFinishedType); + pointService.updateById(startPointObj); + } + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskObj.setRemark("任务取消"); + taskObj.setFinished_type(taskFinishedType.getCode()); + TaskUtils.setUpdateByType(taskObj, taskFinishedType); + taskService.updateById(taskObj); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java index 2272bc8..bc28dfa 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/DTSKTask.java @@ -46,7 +46,7 @@ public class DTSKTask extends AbstractTask { private ISysNoticeService noticeService; @Autowired private DTKMapper dtkMapper; - + @Override protected void create() throws BadRequestException { @@ -81,7 +81,7 @@ public class DTSKTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml index 81e7c40..1b2f9fb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/dtk/mapper/DTKMapper.xml @@ -25,7 +25,10 @@ + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java index d6341ce..bc8b1ec 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/CYZCTask.java @@ -51,7 +51,7 @@ public class CYZCTask extends AbstractTask { private ISchBaseTaskService taskService; @Autowired private ISchBaseTaskconfigService taskConfigService; - + @Autowired private ISysNoticeService noticeService; @Autowired @@ -94,7 +94,7 @@ public class CYZCTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java index 118cdfd..23957df 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yao/GZYQLTask.java @@ -44,7 +44,7 @@ public class GZYQLTask extends AbstractTask { private ISchBaseTaskService taskService; @Autowired private ISchBaseTaskconfigService taskConfigService; - + @Autowired private ISysNoticeService noticeService; @Override @@ -82,7 +82,7 @@ public class GZYQLTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java index 9691a82..d85a7d7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZQKTask.java @@ -47,7 +47,7 @@ public class YZQKTask extends AbstractTask { private ISchBaseTaskconfigService taskConfigService; @Autowired private ISysNoticeService noticeService; - + @Override @Transactional(rollbackFor = Exception.class) protected void create() { @@ -83,7 +83,7 @@ public class YZQKTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java index 6e096d6..a789a25 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSKTask.java @@ -40,7 +40,6 @@ import java.util.stream.Collectors; @TaskType("LZKLXSKTask") public class YZSKTask extends AbstractTask { private static String TASK_CONFIG_CODE = "LZKLXSKTask"; - @Autowired private ISchBasePointService pointService; @Autowired @@ -49,7 +48,7 @@ public class YZSKTask extends AbstractTask { private ISchBaseTaskconfigService taskConfigService; @Autowired private ISysNoticeService noticeService; - + @Override @Transactional(rollbackFor = Exception.class) @@ -89,7 +88,7 @@ public class YZSKTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java index 61b587e..b310d5e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/YZSLTask.java @@ -5,9 +5,9 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; -import org.nl.config.MapOf; import org.nl.system.service.notice.ISysNoticeService; import org.nl.wms.database.brick.service.IMdBaseBrickInfoService; import org.nl.wms.pdm.track.service.IPdmBdProductionProcessTrackingService; @@ -60,7 +60,7 @@ public class YZSLTask extends AbstractTask { private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired private YZMapper yzMapper; - + @Autowired private ISysNoticeService noticeService; @Autowired @@ -104,7 +104,7 @@ public class YZSLTask extends AbstractTask { pointService.updateById(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } @@ -143,10 +143,23 @@ public class YZSLTask extends AbstractTask { regionCode = nextRegionStr.get(0); } } - // todo: 双层缓存货架的一上一下的区分 - List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( - MapOf.of("regionCode", regionCode, "pointType", GeneralDefinition.ENTRANCE))); - return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null; + // 双层缓存货架的一上一下的区分 + // 计算缓存上和缓存下的空位数量决定是使用desc还是asc + int countUp = yzMapper.countConveyorLine(nextRegionStr.get(0), GeneralDefinition.UPPER_CONVEYOR_LINE, + PointStatusEnum.EMPTY_POINT.getCode()); + int countLower = yzMapper.countConveyorLine(nextRegionStr.get(0), GeneralDefinition.LOWER_CONVEYOR_LINE, + PointStatusEnum.EMPTY_POINT.getCode()); + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(SchBasePoint::getRegion_code, regionCode) + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .eq(SchBasePoint::getPoint_type, GeneralDefinition.ENTRANCE) // 对接位 + .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getIs_used, true) + .orderBy(true, countUp > countLower, SchBasePoint::getPoint_code); + List schBasePoints = pointService.list(lam); + return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; } @Override @@ -189,6 +202,10 @@ public class YZSLTask extends AbstractTask { vehicleType = GeneralDefinition.STEEL_TRAY; } String deviceCode = param.getString("device_code"); + String isFull = param.getString("is_full"); + if (isFull == null) { + isFull = GeneralDefinition.YES; + } // 砖块数量 Integer qty = param.getInteger("qty"); SchBasePoint basePoint = pointService.getById(deviceCode); @@ -230,6 +247,7 @@ public class YZSLTask extends AbstractTask { groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.WAIT_BIND.getValue()); // 待绑定 groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 groupEntity.setIs_delete(false); + groupEntity.setIs_full(isFull.equals(GeneralDefinition.YES) ? true : false); vehiclematerialgroupService.save(groupEntity); // 将所有当前位置的砖块设置组盘标识 baseBrickInfoService.setGroupByCurrentAllBrick(deviceCode, groupEntity.getGroup_id()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java index bceaf90..34110ba 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.java @@ -12,5 +12,14 @@ import java.util.List; */ public interface YZMapper { List findPointForYZQL(List regionCode, String materialId); + @Deprecated List findPointForYZSL(JSONObject param); + + /** + * 统计输送线数量 + * @param regionCode + * @param pointType + * @return + */ + int countConveyorLine(String regionCode, String pointType, String pointStatus); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml index ad0f369..864c64f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/yz/mapper/YZMapper.xml @@ -31,4 +31,14 @@ AND p.is_used = TRUE AND ( t.task_code IS NULL OR t.task_code = '') + diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml index 5027348..b233cd0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml +++ b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-dev.yml @@ -58,6 +58,17 @@ spring: host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} password: ${REDIS_PWD:} + redisson: + config: | + threads: 4 + nettyThreads: 4 + singleServerConfig: + connectionMinimumIdleSize: 8 + connectionPoolSize: 8 + address: redis://127.0.0.1:6379 + idleConnectionTimeout: 10000 + timeout: 3000 + # 登录相关配置 login: diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml index f0fc978..5c671f7 100644 --- a/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml +++ b/lms/nladmin-system/nlsso-server/src/main/resources/config/application-prod.yml @@ -57,8 +57,16 @@ spring: host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} password: ${REDIS_PWD:} - #连接超时时间 - timeout: 5000 + redisson: + config: | + threads: 4 + nettyThreads: 4 + singleServerConfig: + connectionMinimumIdleSize: 8 + connectionPoolSize: 8 + address: redis://127.0.0.1:6379 + idleConnectionTimeout: 10000 + timeout: 3000 # 登录相关配置 login: # 登录缓存 diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index db627cc..9419bb2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/lms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -12,7 +12,7 @@ https://juejin.cn/post/6844903775631572999 nlAdmin + value="%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %cyan(%msg%n)"/> diff --git a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java index 105fec7..b33c106 100644 --- a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java +++ b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java @@ -1,10 +1,15 @@ package org.nl; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import org.junit.jupiter.api.Test; import org.nl.config.MapOf; import org.nl.system.service.user.ISysUserService; +import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.dao.SchBasePoint; +import org.nl.wms.sch.task_manage.GeneralDefinition; +import org.nl.wms.sch.task_manage.enums.PointStatusEnum; import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -21,6 +26,8 @@ public class ApplicationTest { @Autowired private ISysUserService userService; @Autowired + private ISchBasePointService pointService; + @Autowired private YZMapper yzMapper; @Test void contextLoads() { @@ -28,8 +35,32 @@ public class ApplicationTest { } @Test void yzMapperTest() { - List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( - MapOf.of("regionCode", "HCSSX", "pointType", "1"))); - System.out.println(pointForYZSL); +// List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( +// MapOf.of("regionCode", "HCSSX", "pointType", "1"))); + int countUp = yzMapper.countConveyorLine("HCSSX", GeneralDefinition.UPPER_CONVEYOR_LINE, + PointStatusEnum.EMPTY_POINT.getCode()); + System.out.println(countUp); + } + @Test + void yzMapper2Test() { +// String apply = "ORDER BY point_code"; + int countUp = yzMapper.countConveyorLine("HCSSX", GeneralDefinition.UPPER_CONVEYOR_LINE, + PointStatusEnum.EMPTY_POINT.getCode()); + int countLower = yzMapper.countConveyorLine("HCSSX", GeneralDefinition.LOWER_CONVEYOR_LINE, + PointStatusEnum.EMPTY_POINT.getCode()); +// if (countUp < countLower) { +// apply = "ORDER BY point_code DESC"; +// } + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(SchBasePoint::getRegion_code, "HCSSX") + .eq(SchBasePoint::getPoint_status, PointStatusEnum.EMPTY_POINT.getCode()) + .eq(SchBasePoint::getPoint_type, GeneralDefinition.ENTRANCE) // 对接位 + .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 + .or() + .eq(SchBasePoint::getIng_task_code, "")) + .eq(SchBasePoint::getIs_used, true) + .orderBy(true, countUp > countLower, SchBasePoint::getPoint_code); + List schBasePoints = pointService.list(lam); + System.out.println(schBasePoints.get(0)); } } diff --git a/lms/nladmin-ui/src/views/wms/basedata/material/index.vue b/lms/nladmin-ui/src/views/wms/basedata/material/index.vue index 0f93777..687bfec 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/material/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/material/index.vue @@ -73,10 +73,13 @@ + + + @@ -121,10 +124,13 @@ import pagination from '@crud/Pagination' const defaultForm = { material_id: null, material_code: null, + half_material_code: null, + raw_material_code: null, material_name: null, material_spec: null, class_id: null, standing_time: null, + cooling_time: null, workshop_code: null, remark: null, is_used: true, diff --git a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue index 02b4ae0..f282fc2 100644 --- a/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue +++ b/lms/nladmin-ui/src/views/wms/pdm/workerorder/index.vue @@ -108,8 +108,8 @@ style="width: 240px;" /> - - + + @@ -361,8 +361,7 @@ const defaultForm = { plan_qty: null, real_qty: null, material_id: null, - raw_material_id: null, - raw_material_name: null, + half_material_code: null, raw_material_code: null, vehicle_type: null, planproducestart_date: null, @@ -484,6 +483,8 @@ export default { this.form.material_id = row.material_id this.form.material_spec = row.material_spec this.form.material_code = row.material_code + this.form.half_material_code = row.half_material_code + this.form.raw_material_code = row.raw_material_code } else { this.form.raw_material_name = row.material_name this.form.raw_material_id = row.material_id diff --git a/lms/nladmin-ui/src/views/wms/sch/group/MaterialDialog.vue b/lms/nladmin-ui/src/views/wms/sch/group/MaterialDialog.vue index 09e0ab2..0723229 100644 --- a/lms/nladmin-ui/src/views/wms/sch/group/MaterialDialog.vue +++ b/lms/nladmin-ui/src/views/wms/sch/group/MaterialDialog.vue @@ -55,6 +55,8 @@ + +