From 4467a17cc4d92a5cbcbe1a617d7dad588461ceed Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期四, 04 一月 2024 16:33:42 +0800
Subject: [PATCH] #
---
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WrkMast.java | 6
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlMapper.java | 2
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/MobileAdjustParam.java | 20 +
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/MobileService.java | 18 +
zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MobileController.java | 269 ++++++++++++++++++++++
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetl.java | 7
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/WrkDetlMapper.java | 8
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkDetlService.java | 6
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/entity/MobileAdjustResult.java | 20 +
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WrkMastLog.java | 6
zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/WrkDto.java | 26 ++
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkMastService.java | 2
zy-asrs-common/src/main/resources/mapper/wms/OrderDetlMapper.xml | 7
zy-asrs-common/src/main/resources/mapper/wms/WrkDetlMapper.xml | 42 +++
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderService.java | 3
zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/param/CombParam.java | 3
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java | 225 ++++++++++++++++++
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkDetlServiceImpl.java | 19 +
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkMastServiceImpl.java | 10
zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderServiceImpl.java | 5
20 files changed, 701 insertions(+), 3 deletions(-)
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/WrkDto.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/WrkDto.java
new file mode 100644
index 0000000..e353eb5
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/dto/WrkDto.java
@@ -0,0 +1,26 @@
+package com.zy.asrs.common.domain.dto;
+
+import com.zy.asrs.common.wms.entity.WrkDetl;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Created by vincent on 2022/5/13
+ */
+@Data
+public class WrkDto {
+
+ private Integer wrkNo;
+
+ private List<WrkDetl> wrkDetls = new ArrayList<>();
+
+ public WrkDto() {
+ }
+
+ public WrkDto(Integer wrkNo, WrkDetl wrkDetl) {
+ this.wrkNo = wrkNo;
+ this.wrkDetls .add(wrkDetl);
+ }
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/entity/MobileAdjustResult.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/entity/MobileAdjustResult.java
new file mode 100644
index 0000000..6175d5a
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/entity/MobileAdjustResult.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.common.domain.entity;
+
+import com.zy.asrs.common.wms.entity.WrkDetl;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2022/4/13
+ */
+@Data
+public class MobileAdjustResult {
+
+ private Integer staNo;
+
+ private Integer wrkNo;
+
+ private List<WrkDetl> wrkDetls;
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/MobileAdjustParam.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/MobileAdjustParam.java
new file mode 100644
index 0000000..11610a4
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/domain/param/MobileAdjustParam.java
@@ -0,0 +1,20 @@
+package com.zy.asrs.common.domain.param;
+
+import com.zy.asrs.common.wms.entity.WrkDetl;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2022/4/13
+ */
+@Data
+public class MobileAdjustParam {
+
+ private Integer staNo;
+
+ private Integer wrkNo;
+
+ private List<WrkDetl> wrkDetls;
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/param/CombParam.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/param/CombParam.java
index 9af7847..13642e6 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/param/CombParam.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/openapi/entity/param/CombParam.java
@@ -22,9 +22,6 @@
//缁勬墭鐗╂枡
private List<CombMat> combMats;
- //浠撳簱ID
- private Long hostId;
-
@Data
public static class CombMat {
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetl.java
index 9cc0db0..417cba5 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/OrderDetl.java
@@ -478,6 +478,13 @@
return null;
}
+ public Double getEnableQty() {
+ if (null != this.anfme && this.qty != null) {
+ return this.anfme - this.qty;
+ }
+ return null;
+ }
+
public void sync(Object source) {
Synchro.Copy(source, this);
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WrkMast.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WrkMast.java
index 042e7ab..80e9f1a 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WrkMast.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WrkMast.java
@@ -180,6 +180,12 @@
@ApiModelProperty(value= "鎺堟潈鍟嗘埛")
private Long hostId;
+ @ApiModelProperty(value= "oveMk")
+ private String oveMk;
+
+ @ApiModelProperty(value= "invWh")
+ private String invWh;
+
public WrkMast() {}
public WrkMast(Integer wrkNo,Long wrkSts,Integer ioType,Double ioPri,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String picking,String exitMk,Integer pltType,String emptyMk,Date ioTime,Integer ctnType,String modiUser,Date modiTime,String appeUser,Date appeTime,Date errorTime,String errorMemo,String manuType,String memo,String barcode,String fullPlt,Long hostId) {
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WrkMastLog.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WrkMastLog.java
index f328b2b..d996070 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WrkMastLog.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/entity/WrkMastLog.java
@@ -179,6 +179,12 @@
@ApiModelProperty(value= "鎺堟潈鍟嗘埛")
private Long hostId;
+ @ApiModelProperty(value= "oveMk")
+ private String oveMk;
+
+ @ApiModelProperty(value= "invWh")
+ private String invWh;
+
public WrkMastLog() {}
public WrkMastLog(Long id,Integer wrkNo,Long wrkSts,Integer ioType,Double ioPri,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String picking,String exitMk,Integer pltType,String emptyMk,Date ioTime,Integer ctnType,String modiUser,Date modiTime,String appeUser,Date appeTime,Date errorTime,String errorMemo,String manuType,String memo,String barcode,String fullPlt,Long hostId) {
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlMapper.java
index 76ed994..56add91 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlMapper.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/OrderDetlMapper.java
@@ -15,6 +15,8 @@
@Repository
public interface OrderDetlMapper extends BaseMapper<OrderDetl> {
+ List<OrderDetl> selectWorkingDetls(Long orderId);
+
OrderDetl selectItem(@Param("orderId") Long orderId, @Param("matnr") String matnr, @Param("batch") String batch);
IPage<OrderDetl> getPakoutPage(Page<OrderDetl> page ,Map<String, Object> map);
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/WrkDetlMapper.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/WrkDetlMapper.java
index b6cff65..72b45c6 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/WrkDetlMapper.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/mapper/WrkDetlMapper.java
@@ -18,4 +18,12 @@
List<WrkDetl> selectAndLogByOrderNo(String orderNo, Long hostId);
+ List<WrkDetl> selectPakoutQuery(@Param("staNo") Integer staNo, @Param("matnr") String matnr, @Param("hostId") Long hostId);
+
+ int updateInspect(@Param("wrkNo") Integer wrkNo, @Param("matnr") String matnr, @Param("batch") String batch, @Param("hostId") Long hostId);
+
+ int deleteItem(@Param("wrkNo") Integer wrkNo, @Param("matnr") String matnr, @Param("batch") String batch, @Param("hostId") Long hostId);
+
+ int updateAnfme(@Param("anfme") Double anfme, @Param("wrkNo") Integer wrkNo, @Param("matnr") String matnr, @Param("batch") String batch, @Param("hostId") Long hostId);
+
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/MobileService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/MobileService.java
new file mode 100644
index 0000000..5a3c79b
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/MobileService.java
@@ -0,0 +1,18 @@
+package com.zy.asrs.common.wms.service;
+
+import com.zy.asrs.common.domain.param.MobileAdjustParam;
+import com.zy.asrs.common.openapi.entity.param.CombParam;
+
+public interface MobileService {
+
+ /**
+ * 缁勬墭
+ */
+ void comb(CombParam param, Long userId, Long hostId);
+
+ /**
+ * 鐩樼偣
+ */
+ void adjust(MobileAdjustParam param, Long userId, Long hostId);
+
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderService.java
index 83c9bb0..13b876c 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/OrderService.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.zy.asrs.common.wms.entity.Order;
+import com.zy.asrs.common.wms.entity.OrderDetl;
import com.zy.asrs.common.wms.entity.WrkDetl;
import com.zy.asrs.common.wms.entity.WrkMast;
@@ -9,6 +10,8 @@
public interface OrderService extends IService<Order> {
+ List<OrderDetl> selectWorkingDetls(Long orderId);
+
void updateOrder1(Long orderId,Long userId);
Order selectByNo(String orderNo, Long hostId);
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkDetlService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkDetlService.java
index 05d51da..aecceaa 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkDetlService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkDetlService.java
@@ -13,4 +13,10 @@
List<WrkDetl> selectAndLogByOrderNo(String orderNo, Long hostId);
+ List<WrkDetl> selectPakoutQuery(Integer staNo, String matnr, Long hostId);
+
+ boolean updateInspect(Integer wrkNo, String matnr, String batch, Long hostId);
+
+ boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch, Long hostId);
+
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkMastService.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkMastService.java
index e867856..dd3ad57 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkMastService.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/WrkMastService.java
@@ -11,4 +11,6 @@
List<WrkMast> selectToBeHistoryData();
+ WrkMast selectByBarcode(String barcode, Long hostId);
+
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java
new file mode 100644
index 0000000..9aaacf0
--- /dev/null
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/MobileServiceImpl.java
@@ -0,0 +1,225 @@
+package com.zy.asrs.common.wms.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.common.domain.dto.DetlDto;
+import com.zy.asrs.common.domain.param.MobileAdjustParam;
+import com.zy.asrs.common.openapi.entity.param.CombParam;
+import com.zy.asrs.common.wms.entity.*;
+import com.zy.asrs.common.wms.service.*;
+import com.zy.asrs.framework.common.BaseRes;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.exception.CoolException;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+/**
+ * 绉诲姩绔湇鍔℃牳蹇冪被
+ */
+@Slf4j
+@Service
+public class MobileServiceImpl implements MobileService {
+
+ @Autowired
+ private WaitPakinService waitPakinService;
+ @Autowired
+ private MatService matService;
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private OrderDetlService orderDetlService;
+ @Autowired
+ private BasDevpService basDevpService;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private WrkDetlService wrkDetlService;
+
+ @Override
+ @Transactional
+ public void comb(CombParam param, Long userId, Long hostId) {
+ if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) {
+ throw new CoolException(BaseRes.PARAM);
+ }
+ // 鍒ゆ柇鏄惁鏈夌浉鍚屾潯鐮佺殑鏁版嵁
+ if (waitPakinService.count(new LambdaQueryWrapper<WaitPakin>().
+ eq(WaitPakin::getZpallet, param.getBarcode()).eq(WaitPakin::getIoStatus, "N")) > 0) {
+ throw new CoolException(param.getBarcode() + "鏁版嵁姝e湪杩涜鍏ュ簱");
+ }
+ Date now = new Date();
+
+ // 鏃犲崟缁勬墭
+ if (Cools.isEmpty(param.getOrderNo())) {
+
+ // 鐢熸垚鍏ュ簱閫氱煡妗�
+ List<DetlDto> detlDtos = new ArrayList<>();
+ param.getCombMats().forEach(elem -> {
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ if (DetlDto.has(detlDtos, detlDto)) {
+ DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ assert one != null;
+ one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+ } else {
+ detlDtos.add(detlDto);
+ }
+ });
+
+
+ for (DetlDto detlDto : detlDtos) {
+ Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, detlDto.getMatnr()).eq(Mat::getHostId, hostId));
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+ }
+ WaitPakin waitPakin = new WaitPakin();
+ waitPakin.sync(mat);
+ waitPakin.setBatch(detlDto.getBatch());
+ waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
+ waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ if (!waitPakinService.save(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ }
+ // 鍏宠仈缁勬墭
+ } else {
+ Order order = orderService.selectByNo(param.getOrderNo(), hostId);
+ if (order.getSettle() > 2) {
+ throw new CoolException("鍗曟嵁缂栧彿宸茶繃鏈�");
+ }
+ // 鐢熸垚鍏ュ簱閫氱煡妗�
+ List<DetlDto> detlDtos = new ArrayList<>();
+ param.getCombMats().forEach(elem -> {
+
+ // 璁㈠崟鏄庣粏鏁伴噺鏍¢獙
+ OrderDetl orderDetl = orderDetlService.selectItem(order.getId(), elem.getMatnr(), elem.getBatch());
+ if (elem.getAnfme() > orderDetl.getEnableQty()) {
+ throw new CoolException(orderDetl.getMatnr() + "鍏ュ簱鏁伴噺涓嶅悎娉�");
+ }
+ // 淇敼璁㈠崟鏄庣粏鏁伴噺
+ if (!orderDetlService.increase(order.getId(), hostId, elem.getMatnr(), elem.getBatch(), elem.getAnfme())) {
+ throw new CoolException("淇敼鍗曟嵁鏄庣粏鏁伴噺澶辫触");
+ }
+
+ DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme());
+ if (DetlDto.has(detlDtos, detlDto)) {
+ DetlDto one = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch());
+ assert one != null;
+ one.setAnfme(one.getAnfme() + detlDto.getAnfme());
+ } else {
+ detlDtos.add(detlDto);
+ }
+ });
+ for (DetlDto detlDto : detlDtos) {
+ Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, detlDto.getMatnr()).eq(Mat::getHostId, hostId));
+ if (Cools.isEmpty(mat)) {
+ throw new CoolException(detlDto.getMatnr() + "鍟嗗搧妗f涓嶅瓨鍦�");
+ }
+ WaitPakin waitPakin = new WaitPakin();
+ waitPakin.sync(mat);
+ waitPakin.setOrderNo(order.getOrderNo()); // 鍗曟嵁缂栧彿
+ waitPakin.setBatch(detlDto.getBatch()); // 搴忓垪鐮�
+ waitPakin.setZpallet(param.getBarcode()); // 鎵樼洏鐮�
+ waitPakin.setIoStatus("N"); // 鍏ュ嚭鐘舵��
+ waitPakin.setAnfme(detlDto.getAnfme()); // 鏁伴噺
+ waitPakin.setStatus("Y"); // 鐘舵��
+ waitPakin.setAppeUser(userId);
+ waitPakin.setAppeTime(now);
+ waitPakin.setModiUser(userId);
+ waitPakin.setModiTime(now);
+ if (!waitPakinService.save(waitPakin)) {
+ throw new CoolException("淇濆瓨鍏ュ簱閫氱煡妗eけ璐�");
+ }
+ }
+ orderService.updateSettle(order.getId(), 2L, userId, hostId);
+ }
+
+ }
+
+ @Override
+ public void adjust(MobileAdjustParam param, Long userId, Long hostId) {
+ BasDevp basDevp = basDevpService.getOne(new LambdaQueryWrapper<BasDevp>().eq(BasDevp::getDevNo, param.getStaNo()).eq(BasDevp::getHostId, hostId));
+ if (null == basDevp || basDevp.getWrkNo() == null) {
+ throw new CoolException(param.getStaNo() + "鐩樼偣绔欐棤鏁�");
+ }
+ if (!param.getWrkNo().equals(basDevp.getWrkNo())) {
+ throw new CoolException(param.getStaNo() + "鐩樼偣绔欐洿鏂帮紝璇烽噸鏂版绱�");
+ }
+ WrkMast wrkMast = wrkMastService.getOne(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getWrkNo, param.getWrkNo()).eq(WrkMast::getHostId, hostId));
+ if (wrkMast.getWrkSts() < 10) {
+ throw new CoolException("鐩樼偣鏃犳晥锛屼换鍔″凡鐩樼偣鍐嶅叆搴�");
+ }
+ Date now = new Date();
+ List<WrkDetl> wrkDetls = wrkDetlService.list(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getWrkNo, wrkMast.getWrkNo()).eq(WrkDetl::getHostId, hostId));
+
+ List<WrkDetl> list = param.getWrkDetls();
+
+ // 淇敼鏁伴噺
+ Iterator<WrkDetl> iterator = wrkDetls.iterator();
+ while (iterator.hasNext()) {
+ WrkDetl wrkDetl = iterator.next();
+ Iterator<WrkDetl> iterator1 = list.iterator();
+ while (iterator1.hasNext()) {
+ WrkDetl wrkDetl1 = iterator1.next();
+ if (wrkDetl1.getAnfme() == 0) {
+ iterator1.remove();
+ }
+ if (wrkDetl.getMatnr().equals(wrkDetl1.getMatnr()) && Cools.eq(wrkDetl.getBatch(), wrkDetl1.getBatch())) {
+ if (!wrkDetl.getAnfme().equals(wrkDetl1.getAnfme())) {
+ // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
+ // 淇敼鏄庣粏
+ if (!wrkDetlService.updateAnfme(wrkDetl1.getAnfme(), wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId)) {
+ throw new CoolException(wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�");
+ }
+ }
+ iterator.remove();
+ iterator1.remove();
+ }
+ }
+ }
+
+ // 鍒犻櫎鏄庣粏
+ for (WrkDetl wrkDetl : wrkDetls) {
+ // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
+ if (!wrkDetlService.updateAnfme(-1.0D, wrkMast.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId)) {
+ throw new CoolException("鍒犻櫎" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "搴忓垪鐮佷换鍔℃槑缁嗗け璐�");
+ }
+ }
+
+ // 娣诲姞鏄庣粏
+ for (WrkDetl wrkDetl : list) {
+ if (wrkDetl.getAnfme() == 0.0D) { continue; }
+ // todo 鐩樼偣璁板綍銆佷繚瀛樿皟鏁磋褰�
+ String orderNo = wrkDetl.getOrderNo();
+ Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, wrkDetl.getMatnr()).eq(Mat::getHostId, hostId));
+ wrkDetl.sync(mat);
+ wrkDetl.setOrderNo(orderNo);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ if (!wrkDetlService.save(wrkDetl)) {
+ throw new CoolException("娣诲姞" + wrkMast.getWrkNo() + "鐩樼偣浠诲姟锛�" + wrkDetl.getMatnr() + "鍟嗗搧锛�" + wrkDetl.getBatch() + "搴忓垪鐮佷换鍔℃槑缁嗗け璐�");
+ }
+ }
+
+ // 淇敼鐩樼偣浠诲姟涓绘。鐘舵��
+ wrkMast.setFullPlt(wrkDetlService.count(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getWrkNo, wrkMast.getWrkNo()).eq(WrkDetl::getHostId, hostId)) != 0 ? "Y" : "N");
+ wrkMast.setModiTime(now);
+ wrkMast.setModiUser(String.valueOf(userId));
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("淇敼鐩樼偣浠诲姟涓绘。澶辫触");
+ }
+
+ }
+}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderServiceImpl.java
index 61e4b7d..1428c9a 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/OrderServiceImpl.java
@@ -36,6 +36,11 @@
private DocTypeService docTypeService;
@Override
+ public List<OrderDetl> selectWorkingDetls(Long orderId) {
+ return orderDetlMapper.selectWorkingDetls(orderId);
+ }
+
+ @Override
public void updateOrder1(Long orderId,Long userId) {
this.baseMapper.updateOrder1(orderId, userId);
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkDetlServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkDetlServiceImpl.java
index da46700..ba3aafb 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkDetlServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkDetlServiceImpl.java
@@ -25,4 +25,23 @@
public List<WrkDetl> selectAndLogByOrderNo(String orderNo, Long hostId) {
return this.baseMapper.selectAndLogByOrderNo(orderNo, hostId);
}
+
+ @Override
+ public List<WrkDetl> selectPakoutQuery(Integer staNo, String matnr, Long hostId) {
+ return this.baseMapper.selectPakoutQuery(staNo, matnr, hostId);
+ }
+
+ @Override
+ public boolean updateInspect(Integer wrkNo, String matnr, String batch, Long hostId) {
+ return this.baseMapper.updateInspect(wrkNo, matnr, batch, hostId) > 0;
+ }
+
+ @Override
+ public boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch, Long hostId) {
+ if (anfme <= 0) {
+ return this.baseMapper.deleteItem(wrkNo, matnr, batch, hostId) > 0;
+ } else {
+ return baseMapper.updateAnfme(anfme, wrkNo, matnr, batch, hostId) > 0;
+ }
+ }
}
diff --git a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkMastServiceImpl.java b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkMastServiceImpl.java
index 23c9f88..fa411da 100644
--- a/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkMastServiceImpl.java
+++ b/zy-asrs-common/src/main/java/com/zy/asrs/common/wms/service/impl/WrkMastServiceImpl.java
@@ -1,9 +1,11 @@
package com.zy.asrs.common.wms.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.common.wms.mapper.WrkMastMapper;
import com.zy.asrs.common.wms.entity.WrkMast;
import com.zy.asrs.common.wms.service.WrkMastService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.zy.asrs.framework.common.Cools;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -21,4 +23,12 @@
return this.baseMapper.selectToBeHistoryData();
}
+ @Override
+ public WrkMast selectByBarcode(String barcode, Long hostId) {
+ List<WrkMast> wrkMasts = this.list(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getBarcode, barcode).eq(WrkMast::getHostId, hostId));
+ if (Cools.isEmpty(wrkMasts)) {
+ return null;
+ }
+ return wrkMasts.get(0);
+ }
}
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/OrderDetlMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/OrderDetlMapper.xml
index e9eefa3..e8a6247 100644
--- a/zy-asrs-common/src/main/resources/mapper/wms/OrderDetlMapper.xml
+++ b/zy-asrs-common/src/main/resources/mapper/wms/OrderDetlMapper.xml
@@ -17,6 +17,13 @@
</if>
</sql>
+ <select id="selectWorkingDetls" resultType="com.zy.asrs.common.wms.entity.OrderDetl">
+ select * from wms_order_detl
+ where 1=1
+ and order_id = #{orderId}
+ and qty < anfme
+ </select>
+
<select id="selectItem" resultType="com.zy.asrs.common.wms.entity.OrderDetl">
select * from wms_order_detl
where 1=1
diff --git a/zy-asrs-common/src/main/resources/mapper/wms/WrkDetlMapper.xml b/zy-asrs-common/src/main/resources/mapper/wms/WrkDetlMapper.xml
index 33a25e8..c2c758a 100644
--- a/zy-asrs-common/src/main/resources/mapper/wms/WrkDetlMapper.xml
+++ b/zy-asrs-common/src/main/resources/mapper/wms/WrkDetlMapper.xml
@@ -54,4 +54,46 @@
and (awml.manu_type is null or awml.manu_type != '鎵嬪姩鍙栨秷')
</select>
+ <select id="selectPakoutQuery" resultType="com.zy.asrs.common.wms.entity.WrkDetl">
+ select
+ awd.*
+ from wms_wrk_detl awd
+ left join asr_wrk_mast awm on awd.wrk_no = awm.wrk_no
+ where 1=1
+ and awm.wrk_sts = 199
+ and (awd.inspect is null or awd.inspect = 0)
+ and awm.sta_no = #{staNo}
+ and awd.matnr + '-' + awd.batch = #{matnr}
+ </select>
+
+ <update id="updateInspect">
+ update wms_wrk_detl
+ set inspect = 1
+ where 1=1
+ and wrk_no = #{wrkNo}
+ and matnr = #{matnr}
+ and host_id = #{hostId}
+ <include refid="batchSeq"></include>
+ </update>
+
+ <delete id="deleteItem">
+ delete from wms_wrk_detl
+ where 1=1
+ and wrk_no = #{wrkNo}
+ and matnr = #{matnr}
+ and host_id = #{hostId}
+ <include refid="batchSeq"></include>
+ </delete>
+
+ <update id="updateAnfme">
+ update wms_wrk_detl
+ set anfme = #{anfme}
+ , modi_time = getdate()
+ where 1=1
+ and wrk_no = #{wrkNo}
+ and matnr = #{matnr}
+ and host_id = #{hostId}
+ <include refid="batchSeq"></include>
+ </update>
+
</mapper>
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MobileController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MobileController.java
new file mode 100644
index 0000000..979c419
--- /dev/null
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/controller/MobileController.java
@@ -0,0 +1,269 @@
+package com.zy.asrs.wms.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.zy.asrs.common.domain.dto.WrkDto;
+import com.zy.asrs.common.domain.entity.MobileAdjustResult;
+import com.zy.asrs.common.domain.param.MobileAdjustParam;
+import com.zy.asrs.common.openapi.entity.param.CombParam;
+import com.zy.asrs.common.web.BaseController;
+import com.zy.asrs.common.wms.entity.*;
+import com.zy.asrs.common.wms.service.*;
+import com.zy.asrs.framework.annotations.ManagerAuth;
+import com.zy.asrs.framework.common.Cools;
+import com.zy.asrs.framework.common.R;
+import com.zy.asrs.framework.exception.CoolException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.*;
+
+/**
+ * 绉诲姩绔帴鍙f帶鍒跺櫒
+ */
+@RestController
+@RequestMapping("mobile")
+public class MobileController extends BaseController {
+
+ @Autowired
+ private MobileService mobileService;
+ @Autowired
+ private OrderService orderService;
+ @Autowired
+ private DocTypeService docTypeService;
+ @Autowired
+ private WrkDetlService wrkDetlService;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private BasDevpService basDevpService;
+
+ /**
+ * 鏍规嵁鍗曞彿妫�绱㈠崟鎹暟鎹�
+ */
+ @RequestMapping("/order/search/orderNo/auth")
+ @ManagerAuth
+ public R orderSearchByBarcode(@RequestParam String orderNo){
+ Order order = orderService.selectByNo(orderNo, getHostId());
+ if (order == null) {
+ return R.ok();
+ }
+ DocType docType = docTypeService.getById(order.getDocType());
+ if (docType.getPakin() == null || docType.getPakin() != 1) {
+ return R.ok();
+ }
+ if (order.getSettle() > 2) {
+ return R.ok();
+ }
+ List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId());
+ if (Cools.isEmpty(orderDetls)) {
+ return R.ok();
+ }
+ return R.ok().add(orderDetls);
+ }
+
+ @RequestMapping("/comb/auth")
+ @ManagerAuth(memo = "缁勬墭")
+ public R comb(@RequestBody CombParam combParam){
+ mobileService.comb(combParam, getUserId(), getHostId());
+ return R.ok("缁勬墭鎴愬姛");
+ }
+
+ @RequestMapping("/pakout/query/auth")
+ @ManagerAuth
+ @Deprecated
+ public R pakoutQuery(@RequestParam(required = false) String barcode,
+ @RequestParam(required = false) Integer staNo,
+ @RequestParam(required = false) String matnr){
+ if (Cools.isEmpty(barcode) && Cools.isEmpty(matnr)) {
+ return R.ok();
+ }
+ Long hostId = getHostId();
+ if (!Cools.isEmpty(barcode)) {
+ List<WrkDetl> wrkDetls = wrkDetlService.list(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getZpallet, barcode).eq(WrkDetl::getHostId, hostId));
+ return R.ok().add(wrkDetls);
+ }
+ if (!Cools.isEmpty(matnr)) {
+ if (!Cools.isEmpty(staNo)) {
+ List<WrkDetl> wrkDetls = wrkDetlService.selectPakoutQuery(staNo, matnr, hostId);
+ return R.ok().add(wrkDetls);
+ }
+ }
+ return R.ok();
+ }
+
+ /**
+ * 鍑哄簱纭 - 鎵墭鐩樼爜
+ * 1.鍏ㄦ澘 杩斿洖 101
+ * 2.鎷f枡 杩斿洖 103
+ */
+ @RequestMapping("/pakout/confirm/barcode/auth")
+ @ManagerAuth
+ public R pakoutQueryByBarcode(@RequestParam(required = false) String barcode){
+ if (Cools.isEmpty(barcode)) {
+ return R.ok();
+ }
+ Long hostId = getHostId();
+ WrkMast wrkMast = wrkMastService.selectByBarcode(barcode, hostId);
+ if (wrkMast != null) {
+ List<WrkDetl> wrkDetls = wrkDetlService.list(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getWrkNo, wrkMast.getWrkNo()).eq(WrkDetl::getHostId, hostId));
+ // 鍘婚櫎宸插嚭搴撶‘璁ょ殑鏄庣粏
+ wrkDetls.removeIf(wrkDetl -> wrkDetl.getInspect() != null && wrkDetl.getInspect() != 0);
+ return R.ok().add(Cools.add("wrkNo", wrkMast.getWrkNo()).add("ioType", wrkMast.getIoType()).add("list", wrkDetls));
+ }
+ return R.ok();
+ }
+
+ /**
+ * 鍑哄簱纭 - 鎷f枡鍑哄簱 - 閫夋嫨鍏蜂綋鏉$爜鍟嗗搧
+ */
+ @RequestMapping("/pakout/confirm/pick/auth")
+ @ManagerAuth
+ public R pakoutQueryByBarcode(@RequestParam(required = false) Integer wrkNo
+ , @RequestParam(required = false) String matnr){
+ if (Cools.isEmpty(wrkNo)) {
+ return R.ok();
+ }
+ if (Cools.isEmpty(matnr)) {
+ return R.ok();
+ }
+ Long hostId = getHostId();
+ WrkMast wrkMast = wrkMastService.getOne(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getWrkNo, wrkNo).eq(WrkMast::getHostId, hostId));
+ if (wrkMast == null) {
+ return R.ok();
+ }
+ String orderNo = null;
+ List<WrkDetl> wrkDetls = wrkDetlService.list(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getWrkNo, wrkMast.getWrkNo()).eq(WrkDetl::getHostId, hostId));
+ for (WrkDetl wrkDetl : wrkDetls) {
+ if (Cools.isEmpty(orderNo)) {
+ orderNo = wrkDetl.getOrderNo();
+ }
+ if ((wrkDetl.getMatnr() + "-" + wrkDetl.getBatch()).equals(matnr)) {
+ return R.ok().add(wrkDetl);
+ }
+ }
+ // 鏇挎崲 鏄庣粏
+ List<LocDetl> locDetls = locDetlService.list(new LambdaQueryWrapper<LocDetl>().eq(LocDetl::getLocNo, wrkMast.getSourceLocNo()).eq(LocDetl::getHostId, hostId));
+ for (LocDetl locDetl : locDetls) {
+ if ((locDetl.getMatnr() + "-" + locDetl.getBatch()).equals(matnr)) {
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.sync(locDetl);
+ wrkDetl.setOrderNo(orderNo);
+ wrkDetl.setIoTime(wrkMast.getIoTime());
+ wrkDetl.setWrkNo(wrkNo);
+ return R.ok().add(wrkDetl);
+ }
+ }
+ return R.error("绯荤粺閿欒锛屾潯鐮佷笉瀛樺湪");
+ }
+
+ @RequestMapping("/pakout/confirm/auth")
+ @ManagerAuth
+ @Transactional
+ public R pakoutConfirm(@RequestBody List<WrkDetl> list) {
+ if (Cools.isEmpty(list)) {
+ return R.ok();
+ }
+ Long hostId = getHostId();
+ Set<Integer> wrkNos = new HashSet<>();
+ List<WrkDto> dtos = new ArrayList<>();
+ for (WrkDetl wrkDetl : list) {
+ if (wrkNos.contains(wrkDetl.getWrkNo())) {
+ for (WrkDto dto : dtos) {
+ if (dto.getWrkNo().equals(wrkDetl.getWrkNo())) {
+ dto.getWrkDetls().add(wrkDetl);
+ break;
+ }
+ }
+ } else {
+ wrkNos.add(wrkDetl.getWrkNo());
+ dtos.add(new WrkDto(wrkDetl.getWrkNo(), wrkDetl));
+ }
+ }
+
+ for (WrkDto dto : dtos) {
+ WrkMast wrkMast = wrkMastService.getOne(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getWrkNo, dto.getWrkNo()).eq(WrkMast::getHostId, hostId));
+ if (wrkMast != null) {
+ // 101
+ if (wrkMast.getIoType() == 101) {
+ for (WrkDetl wrkDetl : dto.getWrkDetls()) {
+ wrkDetlService.updateInspect(wrkDetl.getWrkNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), hostId);
+ }
+ }
+ // 103
+ if (wrkMast.getIoType() == 103) {
+ if (!wrkDetlService.remove(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getWrkNo, wrkMast.getWrkNo()).eq(WrkDetl::getHostId, hostId))) {
+ throw new CoolException("鎷f枡鍑哄簱纭澶辫触");
+ }
+ for (WrkDetl wrkDetl : dto.getWrkDetls()) {
+ wrkDetl.setInspect(1);
+ if (!wrkDetlService.save(wrkDetl)) {
+ throw new CoolException("鎷f枡鍑哄簱纭澶辫触");
+ }
+ }
+ }
+ }
+ }
+
+ for (Integer wrkNo : wrkNos) {
+ WrkMast wrkMast = wrkMastService.getOne(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getWrkNo, wrkNo).eq(WrkMast::getHostId, hostId));
+ if (wrkMast.getWrkSts() == 14 && (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N"))) {
+ List<WrkDetl> wrkDetls = wrkDetlService.list(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getWrkNo, wrkNo).eq(WrkDetl::getHostId, hostId));
+ boolean complete = true;
+ for (WrkDetl wrkDetl : wrkDetls) {
+ if (wrkDetl.getInspect() == null || wrkDetl.getInspect() == 0) {
+ complete = false;
+ break;
+ }
+ }
+ if (complete) {
+ wrkMast.setInvWh("Y");
+ wrkMast.setModiTime(new Date());
+ if (!wrkMastService.updateById(wrkMast)) {
+ throw new CoolException("淇敼宸ヤ綔妗�" + wrkNo + "澶辫触");
+ }
+ }
+ }
+ }
+ return R.ok("瀹屾垚纭");
+ }
+
+ // 鐩樼偣 ----------------------------------------------------------------------------------------------------
+
+ @RequestMapping("/checkDetl/auth")
+ @ManagerAuth
+ public R getCheckDetl(@RequestParam(required = false) Integer staNo) {
+ if (null == staNo || staNo == 0) {
+ return R.ok();
+ }
+ Long hostId = getHostId();
+ BasDevp basDevp = basDevpService.getOne(new LambdaQueryWrapper<BasDevp>().eq(BasDevp::getDevNo, staNo).eq(BasDevp::getHostId, hostId));
+ if (null != basDevp && basDevp.getWrkNo() != null) {
+ WrkMast wrkMast = wrkMastService.getOne(new LambdaQueryWrapper<WrkMast>().eq(WrkMast::getWrkNo, basDevp.getWrkNo()).eq(WrkMast::getHostId, hostId));
+ if (wrkMast != null && wrkMast.getIoType() == 107) {
+ List<WrkDetl> wrkDetls = wrkDetlService.list(new LambdaQueryWrapper<WrkDetl>().eq(WrkDetl::getWrkNo, wrkMast.getWrkNo()).eq(WrkDetl::getHostId, hostId));
+ if (!Cools.isEmpty(wrkDetls)) {
+ MobileAdjustResult result = new MobileAdjustResult();
+ result.setStaNo(staNo);
+ result.setWrkNo(wrkMast.getWrkNo());
+ result.setWrkDetls(wrkDetls);
+ return R.ok().add(result);
+ }
+ }
+ }
+ return R.ok();
+ }
+
+ @RequestMapping("/adjust/auth")
+ @ManagerAuth(memo = "鐩樼偣")
+ public R adjust(@RequestBody MobileAdjustParam combParam){
+ mobileService.adjust(combParam, getUserId(), getHostId());
+ return R.ok("鐩樼偣鎴愬姛");
+ }
+
+}
--
Gitblit v1.9.1