From c269bf1b716a1d45be1ca47a418fdf195968a6e7 Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期六, 30 十二月 2023 16:49:52 +0800
Subject: [PATCH] #
---
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/LocDetlAdjustParam.java | 62 +++++++++++++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java | 8 ++
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java | 6 +
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/AdjDetl.java | 6 +
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java | 125 +++++++++++++++++++++++++++++++
5 files changed, 207 insertions(+), 0 deletions(-)
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/LocDetlAdjustParam.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/LocDetlAdjustParam.java
new file mode 100644
index 0000000..2969907
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/LocDetlAdjustParam.java
@@ -0,0 +1,62 @@
+package com.zy.asrs.common.domain.param;
+
+import com.zy.asrs.framework.common.Cools;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by vincent on 2020/6/18
+ */
+@Data
+public class LocDetlAdjustParam {
+
+ // 搴撲綅鍙�
+ private String locNo;
+
+ // 璋冩暣搴撳瓨鏄庣粏闆嗗悎
+ private List<LocDetlAdjust> list;
+
+ @Data
+ public static class LocDetlAdjust {
+
+ // 鍟嗗搧缂栧彿
+ private String matnr;
+
+ // 搴忓垪鐮�
+ private String batch;
+
+ // 鍙樻洿鏁伴噺
+ private Double count;
+
+ public LocDetlAdjust(String matnr, String batch, Double count) {
+ this.matnr = matnr;
+ this.batch = batch;
+ this.count = count;
+ }
+ }
+
+ public void integrate() {
+ if (Cools.isEmpty(list)) {
+ return;
+ }
+ List<LocDetlAdjust> copyList = new ArrayList<>();
+ for (LocDetlAdjust adjust : list) {
+ boolean exit = false;
+ for (LocDetlAdjust copy : copyList) {
+ if (adjust.getMatnr().equals(copy.getMatnr()) && Cools.eq(adjust.getBatch(), copy.getBatch())) {
+ copy.setCount(copy.getCount() + adjust.getCount());
+ exit = true;
+ break;
+ }
+ }
+ if (!exit) {
+ copyList.add(new LocDetlAdjust(adjust.getMatnr(), adjust.getBatch(), adjust.getCount()));
+ }
+ }
+ list = copyList;
+ }
+
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/AdjDetl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/AdjDetl.java
index 8ffb012..cd9f943 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/AdjDetl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/AdjDetl.java
@@ -121,6 +121,12 @@
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date appeTime;
+ /**
+ * 浠撳簱ID
+ */
+ @ApiModelProperty(value= "浠撳簱ID")
+ private Long hostId;
+
public AdjDetl() {}
public AdjDetl(String locNo,String matnr,String batch,Double oriCtns,Double oriQty,Double oriWt,Double adjCtns,Double adjQty,Double adjWt,String memo,Long modiUser,Date modiTime,Long appeUser,Date appeTime) {
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java
index eec0311..cfc3226 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WorkService.java
@@ -3,6 +3,7 @@
import com.zy.asrs.common.domain.dto.LocDetlDto;
import com.zy.asrs.common.domain.enums.IoWorkType;
import com.zy.asrs.common.domain.param.FullStoreParam;
+import com.zy.asrs.common.domain.param.LocDetlAdjustParam;
import com.zy.asrs.common.domain.param.StockOutParam;
import java.util.List;
@@ -38,5 +39,10 @@
void stockOut(Integer staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId, Long hostId);
+ /**
+ * 搴撳瓨鏄庣粏璋冩暣
+ */
+ void adjustLocDetl(LocDetlAdjustParam param, Long userId, Long hostId);
+
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java
index 4aed8a5..f03eb75 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WorkServiceImpl.java
@@ -6,6 +6,7 @@
import com.zy.asrs.common.domain.enums.IoWorkType;
import com.zy.asrs.common.domain.enums.WorkNoType;
import com.zy.asrs.common.domain.param.FullStoreParam;
+import com.zy.asrs.common.domain.param.LocDetlAdjustParam;
import com.zy.asrs.common.domain.param.StockOutParam;
import com.zy.asrs.common.sys.service.StaDescService;
import com.zy.asrs.common.utils.Utils;
@@ -51,6 +52,8 @@
private StaDescService staDescService;
@Autowired
private LocDetlService locDetlService;
+ @Autowired
+ private AdjDetlService adjDetlService;
@Override
@Transactional
@@ -432,4 +435,126 @@
}
}
+ @Override
+ public void adjustLocDetl(LocDetlAdjustParam param, Long userId, Long hostId) {
+ param.integrate();
+ LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, param.getLocNo()).eq(LocMast::getHostId, hostId));
+ if (Cools.isEmpty(locMast)) {
+ throw new CoolException("搴撲綅涓嶅瓨鍦�");
+ }
+ if (!(locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O"))) {
+ throw new CoolException("褰撳墠搴撲綅涓嶅彲璋冩暣锛佸簱浣嶇姸鎬侊細" + locMast.getLocSts$());
+ }
+
+ Date now = new Date();
+ List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, param.getLocNo()).eq(LocDetl::getHostId, hostId));
+
+ List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList();
+
+ // 淇敼鏁伴噺
+ Iterator<LocDetl> iterator = locDetls.iterator();
+ while (iterator.hasNext()) {
+ LocDetl locDetl = iterator.next();
+
+ Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator();
+ while (iterator1.hasNext()) {
+ LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next();
+ if (adjust.getCount() == 0) { continue; }
+ if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) {
+ if (!locDetl.getAnfme().equals(adjust.getCount())) {
+ // todo 鐩樼偣璁板綍
+ // 淇敼搴撳瓨
+ if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), hostId)) {
+ throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
+ }
+ // 淇濆瓨璋冩暣璁板綍
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locDetl.getLocNo());
+ adjDetl.setMatnr(locDetl.getMatnr());
+ adjDetl.setBatch(locDetl.getBatch());
+ adjDetl.setOriQty(locDetl.getAnfme());
+ adjDetl.setAdjQty(adjust.getCount());
+ adjDetl.setModiTime(now);
+ adjDetl.setModiUser(userId);
+ adjDetl.setAppeTime(now);
+ adjDetl.setAppeUser(userId);
+ adjDetl.setHostId(hostId);
+ adjDetlService.save(adjDetl);
+ }
+ iterator.remove();
+ iterator1.remove();
+ }
+ }
+ }
+
+ // 鍒犻櫎搴撳瓨
+ for (LocDetl locDetl : locDetls) {
+ // todo 鐩樼偣璁板綍
+ if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch(), hostId)) {
+ throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
+ }
+ // 淇濆瓨璋冩暣璁板綍
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locDetl.getLocNo());
+ adjDetl.setMatnr(locDetl.getMatnr());
+ adjDetl.setBatch(locDetl.getBatch());
+ adjDetl.setOriQty(locDetl.getAnfme());
+ adjDetl.setAdjQty(0.0D);
+ adjDetl.setModiTime(now);
+ adjDetl.setModiUser(userId);
+ adjDetl.setAppeTime(now);
+ adjDetl.setAppeUser(userId);
+ adjDetl.setHostId(hostId);
+ adjDetlService.save(adjDetl);
+ }
+
+ // 娣诲姞搴撳瓨
+ for (LocDetlAdjustParam.LocDetlAdjust adjust : list) {
+ if (adjust.getCount() == 0.0D) { continue; }
+ Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, adjust.getMatnr()).eq(Mat::getHostId, hostId));
+ LocDetl locDetl = new LocDetl();
+ locDetl.sync(mat);
+ locDetl.setBatch(adjust.getBatch());
+ locDetl.setLocNo(locMast.getLocNo());
+ locDetl.setAnfme(adjust.getCount()); // 鏁伴噺
+ locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅
+ locDetl.setModiTime(now);
+ locDetl.setAppeUser(userId);
+ locDetl.setAppeTime(now);
+ locDetl.setHostId(hostId);
+ if (!locDetlService.save(locDetl)) {
+ throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�");
+ }
+ // 淇濆瓨璋冩暣璁板綍
+ AdjDetl adjDetl = new AdjDetl();
+ adjDetl.setLocNo(locMast.getLocNo());
+ adjDetl.setMatnr(adjust.getMatnr());
+ adjDetl.setBatch(adjust.getBatch());
+ adjDetl.setOriQty(0.0D);
+ adjDetl.setAdjQty(adjust.getCount());
+ adjDetl.setModiTime(now);
+ adjDetl.setModiUser(userId);
+ adjDetl.setAppeTime(now);
+ adjDetl.setAppeUser(userId);
+ adjDetl.setHostId(hostId);
+ adjDetlService.save(adjDetl);
+ }
+ // 淇敼搴撲綅鐘舵��
+ int count = locDetlService.count(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, locMast.getLocNo()).eq(LocDetl::getHostId, hostId));
+ if (locMast.getLocSts().equals("F")) {
+ if (count == 0) {
+ locMast.setLocSts("D");
+ }
+ }
+ if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) {
+ if (count > 0) {
+ locMast.setLocSts("F");
+ }
+ }
+ locMast.setModiUser(userId);
+ locMast.setModiTime(new Date());
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�");
+ }
+ }
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java
index f7723e3..e6f6716 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/WorkController.java
@@ -1,6 +1,7 @@
package com.zy.asrs.wms.controller;
import com.zy.asrs.common.domain.param.FullStoreParam;
+import com.zy.asrs.common.domain.param.LocDetlAdjustParam;
import com.zy.asrs.common.domain.param.StockOutParam;
import com.zy.asrs.common.web.BaseController;
import com.zy.asrs.common.wms.service.BasDevpService;
@@ -103,4 +104,11 @@
return R.ok();
}
+ @RequestMapping("/locDdetl/adjust/start")
+ @ManagerAuth(memo = "搴撳瓨璋冩暣")
+ public R locDetlAdjustStart(@RequestBody LocDetlAdjustParam param) {
+ workService.adjustLocDetl(param, getUserId(), getHostId());
+ return R.ok("搴撳瓨璋冩暣鎴愬姛");
+ }
+
}
--
Gitblit v1.9.1