From 0a1dceaa6478ec0081c38721be88fa6d807c6094 Mon Sep 17 00:00:00 2001
From: zhang <zc857179121@qq.com>
Date: 星期三, 17 九月 2025 14:26:34 +0800
Subject: [PATCH] 1
---
src/main/java/com/zy/asrs/service/WorkService.java | 3
src/main/resources/mapper/OrderDetlMapper.xml | 20 ++++
src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java | 2
src/main/java/com/zy/asrs/service/OrderDetlService.java | 3
src/main/java/com/zy/asrs/controller/OpenController.java | 2
src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java | 9 +
src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java | 5 +
src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | 124 ++++++++++++++++++++++++
src/main/java/com/zy/asrs/controller/OutController.java | 51 +++++++--
src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java | 15 +-
src/main/java/com/zy/asrs/entity/param/UnQualifiedOrderConfirmParam.java | 17 +++
src/main/java/com/zy/asrs/service/OpenService.java | 2
12 files changed, 230 insertions(+), 23 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OpenController.java b/src/main/java/com/zy/asrs/controller/OpenController.java
index 26f077f..28a92e6 100644
--- a/src/main/java/com/zy/asrs/controller/OpenController.java
+++ b/src/main/java/com/zy/asrs/controller/OpenController.java
@@ -508,7 +508,7 @@
@PostMapping("/unQualifiedOrder/auth/v1")
@AppAuth(memo = "涓嶅悎鏍煎搧閫�搴撳崟鍗曟嵁涓嬪彂")
public synchronized R unqualifiedOrder(@RequestHeader(required = false) String appkey,
- @RequestBody ReturnOrderConfirmParam param,
+ @RequestBody UnQualifiedOrderConfirmParam param,
HttpServletRequest request) {
auth(appkey, param, request);
openService.unQualifiedOrder(param);
diff --git a/src/main/java/com/zy/asrs/controller/OutController.java b/src/main/java/com/zy/asrs/controller/OutController.java
index 81a5510..76c4d62 100644
--- a/src/main/java/com/zy/asrs/controller/OutController.java
+++ b/src/main/java/com/zy/asrs/controller/OutController.java
@@ -83,12 +83,22 @@
return R.parse("璁㈠崟鏁版嵁涓虹┖");
}
- // 鎸夊寘瑁呯粍鍙峰垎缁勫鐞�
- Map<String, List<OrderDetl>> brandGroup = orderDetls.stream()
- .collect(Collectors.groupingBy(o -> {
- String brand = o.getBrand();
- return brand != null ? brand : "璺ㄥ贩閬�";
- }));
+ Map<String, List<OrderDetl>> brandGroup;
+ if (order.getDocType() == 27) {
+ // 鎸夊寘瑁呯粍鍙峰垎缁勫鐞�
+ brandGroup = orderDetls.stream()
+ .collect(Collectors.groupingBy(o -> {
+ String brand = o.getModel();
+ return brand != null ? brand : "璺ㄥ贩閬�";
+ }));
+ } else {
+ // 鎸夊寘瑁呯粍鍙峰垎缁勫鐞�
+ brandGroup = orderDetls.stream()
+ .collect(Collectors.groupingBy(o -> {
+ String brand = o.getBrand();
+ return brand != null ? brand : "璺ㄥ贩閬�";
+ }));
+ }
List<LocDto> locDtos = new ArrayList<>();
@@ -97,11 +107,18 @@
for (Map.Entry<String, List<OrderDetl>> entry : brandGroup.entrySet()) {
String brand = entry.getKey();
List<OrderDetl> brandOrderDetls = entry.getValue();
+ List<LocDetl> locDetls;
+ if (order.getDocType() == 27) {
+ locDetls = locDetlService.selectList(
+ new EntityWrapper<LocDetl>().eq("model", brand)
+ );
+ } else {
+ // 鏌ヨ繖涓寘瑁呯粍瀵瑰簲鐨勬墍鏈夊簱瀛�
+ locDetls = locDetlService.selectList(
+ new EntityWrapper<LocDetl>().eq("brand", brand)
+ );
+ }
- // 鏌ヨ繖涓寘瑁呯粍瀵瑰簲鐨勬墍鏈夊簱瀛�
- List<LocDetl> locDetls = locDetlService.selectList(
- new EntityWrapper<LocDetl>().eq("brand", brand)
- );
if (locDetls.isEmpty()) continue;
// 鑾峰彇鍑哄簱鍙�
@@ -133,7 +150,7 @@
locDto.setUnit(locDetl.getUnit());
locDto.setModel(locDetl.getModel());
locDto.setThreeCode(locDetl.getThreeCode());
- locDto.setBrand(brand);
+ locDto.setBrand(locDetl.getBrand());
locDto.setOrderNo(firstDetl.getOrderNo());
locDto.setStaNos(staNos);
locDto.setOrderDetlId(firstDetl.getId());
@@ -269,9 +286,15 @@
ioWorkType = IoWorkType.ALL_OUT;
}
}
- workService.stockOut(staNo, locDetlDtos,
- ioWorkType,
- getUserId(), optionValue);
+ if (order.getDocType() == 27) {
+ workService.stockOut2(staNo, locDetlDtos,
+ ioWorkType,
+ getUserId(), optionValue);
+ }else {
+ workService.stockOut(staNo, locDetlDtos,
+ ioWorkType,
+ getUserId(), optionValue);
+ }
} else {
throw new CoolException("鎵�閫夊簱浣嶇姸鎬佷笉涓篎/D锛屽簱浣嶅彿锛�" +
locMast.getLocNo() + "锛屽綋鍓嶇姸鎬侊細" +
diff --git a/src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java b/src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java
index 7f8650c..49749b8 100644
--- a/src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java
+++ b/src/main/java/com/zy/asrs/entity/param/ReturnOrderConfirmParam.java
@@ -10,7 +10,7 @@
private String packageGroupNo; // 澶氫釜鍖呰缁勫彿
private List<VolumeNumber> volumeNumbers; // 澶氫釜鍖呰缁勫彿
-
+ private String memo;//澶囨敞
@Data
public static class VolumeNumber {
private String volumeNumber;
diff --git a/src/main/java/com/zy/asrs/entity/param/UnQualifiedOrderConfirmParam.java b/src/main/java/com/zy/asrs/entity/param/UnQualifiedOrderConfirmParam.java
new file mode 100644
index 0000000..ecdbafb
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/param/UnQualifiedOrderConfirmParam.java
@@ -0,0 +1,17 @@
+package com.zy.asrs.entity.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class UnQualifiedOrderConfirmParam {
+ private String orderNumber; //缁勮揣鍗曞彿
+ private List<VolumeNumber> volumeNumbers; // 澶氫釜鍖呰缁勫彿
+
+ private String memo;//澶囨敞
+ @Data
+ public static class VolumeNumber {
+ private String volumeNumber;
+ }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
index 02c7cb2..0d1b4ca 100644
--- a/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/OrderDetlMapper.java
@@ -42,6 +42,9 @@
void updateOrderDetlByGroupNo(@Param("orderNo") String orderNo,@Param("brand") String brand, @Param("count") double count);
+ void updateOrderDetlByModel(@Param("orderNo") String orderNo,@Param("model") String model, @Param("count") double count);
+
+
void updateOrderDetlQtyByGroupNo(@Param("orderNo") String orderNo,@Param("brand") String brand);
/**
@@ -66,5 +69,11 @@
List<OrderDetl> selectByBrand(@Param("brand") String brand);
+ List<OrderDetl> selectByModel(@Param("model") String model);
+
+
OrderDetl selectByOrderNoAndPkgGroupNoAndVolumeNo(@Param("orderNo") String orderNo,@Param("brand") String brand,@Param("model") String model);
+
+ OrderDetl selectByOrderNoAndVolumeNo(@Param("orderNo") String orderNo,@Param("model") String model);
+
}
diff --git a/src/main/java/com/zy/asrs/service/OpenService.java b/src/main/java/com/zy/asrs/service/OpenService.java
index 1429f4a..965968d 100644
--- a/src/main/java/com/zy/asrs/service/OpenService.java
+++ b/src/main/java/com/zy/asrs/service/OpenService.java
@@ -161,5 +161,5 @@
R returnOrder(ReturnOrderConfirmParam param);
- R unQualifiedOrder(ReturnOrderConfirmParam param);
+ R unQualifiedOrder(UnQualifiedOrderConfirmParam param);
}
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index 475cf80..5c2bb09 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -39,4 +39,7 @@
boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty);
List<OrderDetl> selectByBrand(String brand);
+
+ List<OrderDetl> selectByModel(String model);
+
}
diff --git a/src/main/java/com/zy/asrs/service/WorkService.java b/src/main/java/com/zy/asrs/service/WorkService.java
index 5a9d859..eeb7439 100644
--- a/src/main/java/com/zy/asrs/service/WorkService.java
+++ b/src/main/java/com/zy/asrs/service/WorkService.java
@@ -44,6 +44,9 @@
*/
void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId,String groupOrderNumber);
+ void stockOut2(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId,String groupOrderNumber);
+
+
void stockOut(BasDevp staNo, TaskDto taskDto, Long userId);
/**
diff --git a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
index 3f81f37..a496365 100644
--- a/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OpenServiceImpl.java
@@ -2365,6 +2365,7 @@
order.setCreateTime(new Date());
order.setSettle(1L);
order.setDocType(26L);
+ order.setMemo(param.getMemo());
orderMapper.insert(order);
} else {
// 1.2 瀛樺湪锛屾洿鏂板崟鎹姸鎬�
@@ -2394,6 +2395,7 @@
detl.setAnfme(1.0);
detl.setBrand(param.getPackageGroupNo()); // 鍖呰缁勫彿
detl.setModel(vn.getVolumeNumber()); // 鍗峰彿
+ detl.setMemo(param.getMemo());
orderDetlMapper.insert(detl);
} else {
throw new RuntimeException("璇ュ崟鎹殑鍗峰彿宸插瓨鍦�," + vn.getVolumeNumber());
@@ -2405,7 +2407,7 @@
@Override
@Transactional
- public R unQualifiedOrder(ReturnOrderConfirmParam param) {
+ public R unQualifiedOrder(UnQualifiedOrderConfirmParam param) {
if (Cools.isEmpty(param.getOrderNumber())) {
param.setOrderNumber("UQCK" + DateUtils.convert(new Date(), DateUtils.yyyyMMdd));
}
@@ -2422,6 +2424,7 @@
order.setCreateTime(new Date());
order.setSettle(1L);
order.setDocType(27L);
+ order.setMemo(param.getMemo());
orderMapper.insert(order);
} else {
// 1.2 瀛樺湪锛屾洿鏂板崟鎹姸鎬�
@@ -2433,14 +2436,14 @@
// 2. 涓�涓�瀵瑰簲閬嶅巻
- List<ReturnOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
+ List<UnQualifiedOrderConfirmParam.VolumeNumber> volList = param.getVolumeNumbers();
for (int i = 0; i < volList.size(); i++) {
- ReturnOrderConfirmParam.VolumeNumber vn = volList.get(i);
+ UnQualifiedOrderConfirmParam.VolumeNumber vn = volList.get(i);
// 鏌ヨ鏄惁宸插瓨鍦ㄨ detl
- OrderDetl detl = orderDetlMapper.selectByOrderNoAndPkgGroupNoAndVolumeNo(
- param.getOrderNumber(), param.getPackageGroupNo(), vn.getVolumeNumber()
+ OrderDetl detl = orderDetlMapper.selectByOrderNoAndVolumeNo(
+ param.getOrderNumber(), vn.getVolumeNumber()
);
if (detl == null) {
@@ -2449,8 +2452,8 @@
detl.setOrderNo(param.getOrderNumber());
detl.setCreateTime(new Date());
detl.setAnfme(1.0);
- detl.setBrand(param.getPackageGroupNo()); // 鍖呰缁勫彿
detl.setModel(vn.getVolumeNumber()); // 鍗峰彿
+ detl.setMemo(param.getMemo());
orderDetlMapper.insert(detl);
} else {
throw new RuntimeException("璇ュ崟鎹殑鍗峰彿宸插瓨鍦�," + vn.getVolumeNumber());
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index 4598dff..91ab62a 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -96,4 +96,9 @@
public List<OrderDetl> selectByBrand(String brand) {
return this.baseMapper.selectByBrand(brand);
}
+
+ @Override
+ public List<OrderDetl> selectByModel(String model) {
+ return this.baseMapper.selectByModel(model);
+ }
}
diff --git a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
index 1d43354..3d5ec22 100644
--- a/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -582,6 +582,130 @@
@Override
@Transactional
+ public void stockOut2(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId, String groupOrderNumber) {
+ Date now = new Date();
+ // 鍚堝苟鍚岀被椤�
+ Set<String> locNos = new HashSet<>();
+ List<OutLocDto> dtos = new ArrayList<>();
+ for (LocDetlDto locDetlDto : locDetlDtos) {
+ String locNo = locDetlDto.getLocDetl().getLocNo();
+ if (locNos.contains(locNo)) {
+ for (OutLocDto dto : dtos) {
+ if (dto.getLocNo().equals(locNo)) {
+ dto.getLocDetlDtos().add(locDetlDto);
+ break;
+ }
+ }
+ } else {
+ locNos.add(locNo);
+ dtos.add(new OutLocDto(locNo, locDetlDto));
+ }
+ }
+ Integer ioType = null;
+ // 鐢熸垚宸ヤ綔妗�
+ for (OutLocDto dto : dtos) {
+ // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+ if (ioWorkType == null) {
+ ioType = dto.isAll() ? 101 : 103;
+ } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) {
+ ioType = 107;
+ } else if (ioWorkType.equals(IoWorkType.ALL_OUT)) {
+ ioType = 101;
+ }
+ assert ioType != null;
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+
+ Integer outSta = staNo.getDevNo();
+// //2鍙峰爢鍨涙満鍏ㄦ澘鍑哄簱绔欐寚瀹氫负204绔欙紝鎷f枡绔欐寚瀹氫负202
+// if(locMast.getCrnNo()==2){
+// outSta = ioType == 101 ? 204 : 202;
+// }
+
+ // 鑾峰彇璺緞
+ StaDesc staDesc = staDescService.queryCrnStn(ioType, locMast.getCrnNo(), outSta);
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType));
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(now);
+ wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
+ wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬�
+ wrkMast.setIoPri(13D); // 浼樺厛绾э細13
+ wrkMast.setCrnNo(locMast.getCrnNo());
+ wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯
+ wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔�
+ wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣�
+ wrkMast.setFullPlt("Y"); // 婊℃澘锛歒
+ wrkMast.setPicking("N"); // 鎷f枡
+ wrkMast.setExitMk("N"); // 閫�鍑�
+ wrkMast.setEmptyMk("N"); // 绌烘澘
+ wrkMast.setLinkMis("N");
+ wrkMast.setSheetNo("0");
+ wrkMast.setMemo(groupOrderNumber);
+ if (staDesc.getStnNo() < 118 || staDesc.getStnNo() > 121) {
+ wrkMast.setSheetNo("3");
+ }
+ wrkMast.setBarcode(locMast.getBarcode());
+ wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(now);
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(now);
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細" + dto.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
+ if (detlDto.getCount() == null || detlDto.getCount() <= 0.0D) {
+ continue;
+ }
+ WrkDetl wrkDetl = new WrkDetl();
+ List<OrderDetl> orderDetl = orderDetlService.selectByModel(detlDto.getLocDetl().getModel());
+ wrkDetl.sync(detlDto.getLocDetl());
+ for (OrderDetl orderDetlDto : orderDetl) {
+ if (orderDetlDto.getSupp() != null) {
+ wrkDetl.setSupp(orderDetlDto.getSupp());
+ }
+ if (orderDetlDto.getMemo() != null) {
+ wrkDetl.setMemo(orderDetlDto.getMemo());
+ }
+ }
+ wrkDetl.setOrderNo(detlDto.getOrderNo()); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙�
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(now);
+ Double anfme = ioType == 101 ? detlDto.getLocDetl().getAnfme() : detlDto.getCount();
+ wrkDetl.setAnfme(anfme); // 鏁伴噺
+ wrkDetl.setAppeTime(now);
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(now);
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ // 淇敼璁㈠崟鏄庣粏
+ orderDetlMapper.updateOrderDetlByModel(detlDto.getOrderNo(), detlDto.getLocDetl().getModel(), 1);
+ // 淇敼璁㈠崟鐘舵��
+ orderMapper.updateSettleByOrderNo(detlDto.getOrderNo(), 2L, userId);
+ }
+
+ // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓�
+ locMast = locMastService.selectById(dto.getLocNo());
+ if (locMast.getLocSts().equals("F")) {
+ locMast.setLocSts(ioType == 101 ? "R" : "P");
+ locMast.setModiUser(userId);
+ locMast.setModiTime(now);
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細" + dto.getLocNo());
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
+ }
+
+ @Override
+ @Transactional
public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) {
Date now = new Date();
List<LocDto> locDtos = taskDto.getLocDtos();
diff --git a/src/main/resources/mapper/OrderDetlMapper.xml b/src/main/resources/mapper/OrderDetlMapper.xml
index 169eb4d..9961bbb 100644
--- a/src/main/resources/mapper/OrderDetlMapper.xml
+++ b/src/main/resources/mapper/OrderDetlMapper.xml
@@ -247,6 +247,13 @@
where 1=1
and order_no= #{orderNo} and brand = #{brand}
</update>
+
+ <update id="updateOrderDetlByModel">
+ update man_order_detl
+ set work_qty = #{count}
+ where 1=1
+ and order_no= #{orderNo} and model = #{model}
+ </update>
<update id="updateOrderDetlQtyByGroupNo">
update man_order_detl
set qty = 1
@@ -273,6 +280,12 @@
where brand = #{brand}
</select>
+ <select id="selectByModel" resultMap="BaseResultMap">
+ select *
+ from man_order_detl
+ where model = #{model}
+ </select>
+
<select id="selectByOrderNoAndPkgGroupNoAndVolumeNo" resultMap="BaseResultMap">
select *
from man_order_detl
@@ -281,4 +294,11 @@
and model = #{model}
</select>
+ <select id="selectByOrderNoAndVolumeNo" resultMap="BaseResultMap">
+ select *
+ from man_order_detl
+ where order_no = #{orderNo}
+ and model = #{model}
+ </select>
+
</mapper>
--
Gitblit v1.9.1