From 475b547b27f0558d2137d1ca9f73ae14bd4b63f0 Mon Sep 17 00:00:00 2001
From: 18516761980 <4761516tqsxp>
Date: 星期二, 24 八月 2021 10:35:43 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/controller/MatOutController.java | 5
src/main/webapp/static/js/matOut/matOut.js | 2
src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java | 165 +++++++++++++++++++++++++++++++++++------
src/main/java/com/zy/asrs/service/MatOutService.java | 12 +++
4 files changed, 157 insertions(+), 27 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/MatOutController.java b/src/main/java/com/zy/asrs/controller/MatOutController.java
index b4ba76a..8b261e4 100644
--- a/src/main/java/com/zy/asrs/controller/MatOutController.java
+++ b/src/main/java/com/zy/asrs/controller/MatOutController.java
@@ -13,7 +13,7 @@
import org.springframework.web.bind.annotation.RestController;
/**
- * 鍏ュ簱浣滀笟鎺у埗鍣�(鏍规嵁閫氱煡妗�)
+ * 鍑哄簱浣滀笟鎺у埗鍣�(鏍规嵁閫氱煡妗�)
* Created by TQS on 2021/8/24
*/
@RestController
@@ -28,6 +28,7 @@
@RequestMapping("/mat/out/start")
@ManagerAuth(memo = "鍑哄簱鍚姩(閫氱煡妗�)")
public R matOutStart(@RequestBody StockOutParam stockOutParam) {
- return R.ok("鍑哄簱鍚姩鎴愬姛").add(matOutService.startupMatOut(stockOutParam, getUserId());
+ matOutService.startupMatOut(stockOutParam, getUserId());
+ return R.ok("鍑哄簱鍚姩鎴愬姛");
}
}
diff --git a/src/main/java/com/zy/asrs/service/MatOutService.java b/src/main/java/com/zy/asrs/service/MatOutService.java
index fb2631c..04031f0 100644
--- a/src/main/java/com/zy/asrs/service/MatOutService.java
+++ b/src/main/java/com/zy/asrs/service/MatOutService.java
@@ -1,6 +1,10 @@
package com.zy.asrs.service;
+import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.common.model.LocDetlDto;
+
+import java.util.List;
public interface MatOutService {
@@ -9,4 +13,12 @@
* @return 搴撲綅鍙�
*/
public void startupMatOut(StockOutParam param, Long userId);
+
+ /**
+ * 鍑哄簱浣滀笟
+ * @param staNo 鐩爣绔欑偣
+ * @param locDetls 寰呭嚭搴撲骇鍝�
+ * @param ioType 鍏ュ嚭搴撶被鍨�
+ */
+ void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, Integer ioType, Long userId);
}
diff --git a/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java
index 50e41ec..8bc2e2c 100644
--- a/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MatOutServiceImpl.java
@@ -1,43 +1,160 @@
package com.zy.asrs.service.impl;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
import com.core.common.Cools;
import com.core.exception.CoolException;
-import com.zy.asrs.entity.BasDevp;
-import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.*;
import com.zy.asrs.entity.param.StockOutParam;
-import com.zy.asrs.service.MatOutService;
+import com.zy.asrs.service.*;
+import com.zy.asrs.utils.VersionUtils;
import com.zy.common.model.LocDetlDto;
+import com.zy.common.model.OutLocDto;
+import com.zy.common.service.CommonService;
+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.List;
+import java.util.*;
@Service
public class MatOutServiceImpl implements MatOutService {
+ // 宸ヤ綔鍙风敓鎴愯鍒欓粯璁ょ被鍨�
+ private static final int DEFAULT_WORK_NO_TYPE = 0;
+ // 搴撲綅鎺掑彿鍒嗛厤榛樿绫诲埆
+ private static final int DEFAULT_ROW_NO_TYPE = 1;
+
+ @Autowired
+ BasDevpService basDevpService;
+ @Autowired
+ LocDetlService locDetlService;
+ @Autowired
+ LocMastService locMastService;
+ @Autowired
+ StaDescService staDescService;
+ @Autowired
+ private CommonService commonService;
+ @Autowired
+ private WrkDetlService wrkDetlService;
+ @Autowired
+ private WrkMastService wrkMastService;
@Override
@Transactional
public void startupMatOut(StockOutParam param, Long userId){
-// // 鐩爣绔欑偣鐘舵�佹娴�
-// BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
-// // 鑾峰彇搴撲綅鏄庣粏
-// List<LocDetlDto> locDetlDtos = new ArrayList<>();
-// for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
-// if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatNo(), paramLocDetl.getCount())) {
-// LocDetl sqlParam = new LocDetl();
-// sqlParam.setLocNo(paramLocDetl.getLocNo());
-// sqlParam.setMatNo(paramLocDetl.getMatNo());
-// LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam));
-// if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
-// }
-// }
-// if (!locDetlDtos.isEmpty()) {
-// // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
-// stockOut(staNo, locDetlDtos, null, userId);
-// } else {
-// throw new CoolException("搴撲綅浜у搧涓嶅瓨鍦�");
-// }
+ // 鐩爣绔欑偣鐘舵�佹娴�
+ BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+ // 鑾峰彇搴撲綅鏄庣粏
+ List<LocDetlDto> locDetlDtos = new ArrayList<>();
+ for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
+ if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatNo(), paramLocDetl.getCount())) {
+ LocDetl sqlParam = new LocDetl();
+ sqlParam.setLocNo(paramLocDetl.getLocNo());
+ sqlParam.setMatNo(paramLocDetl.getMatNo());
+ LocDetl one = locDetlService.selectOne(new EntityWrapper<>(sqlParam));
+ if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount()));
+ }
+ }
+ if (!locDetlDtos.isEmpty()) {
+ // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱
+ stockOut(staNo, locDetlDtos, null, userId);
+ } else {
+ throw new CoolException("搴撲綅浜у搧涓嶅瓨鍦�");
+ }
}
+
+ @Override
+ @Transactional
+ public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId) {
+ // 鍚堝苟鍚岀被椤�
+ Set<String> locNos = new HashSet<>();
+ locDetlDtos.forEach(dto -> locNos.add(dto.getLocDetl().getLocNo()));
+ List<OutLocDto> dtos = new ArrayList<>();
+ for (String locNo : locNos) {
+ List<LocDetlDto> list = new ArrayList<>();
+ Iterator<LocDetlDto> iterator = locDetlDtos.iterator();
+ while (iterator.hasNext()) {
+ LocDetlDto dto = iterator.next();
+ if (locNo.equals(dto.getLocDetl().getLocNo())) {
+ list.add(dto);
+ iterator.remove();
+ }
+ }
+ dtos.add(new OutLocDto(locNo, list));
+ }
+ // 鐢熸垚宸ヤ綔妗�
+ for (OutLocDto dto : dtos) {
+ // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱
+ if (ioType == null) {
+ ioType = dto.isAll() ? 101 : 103;
+ }
+ // 鑾峰彇搴撲綅
+ LocMast locMast = locMastService.selectById(dto.getLocNo());
+ // 鑾峰彇璺緞
+ Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>()
+ .eq("type_no", ioType)
+ .eq("stn_no", staNo.getDevNo())
+ .eq("crn_no", locMast.getCrnNo());
+ StaDesc staDesc = staDescService.selectOne(wrapper);
+ if (Cools.isEmpty(staDesc)) {
+ throw new CoolException("鍑哄簱璺緞涓嶅瓨鍦�");
+ }
+ // 鐢熸垚宸ヤ綔鍙�
+ int workNo = commonService.getWorkNo(DEFAULT_WORK_NO_TYPE);
+ // 鐢熸垚宸ヤ綔妗�
+ WrkMast wrkMast = new WrkMast();
+ wrkMast.setWrkNo(workNo);
+ wrkMast.setIoTime(new Date());
+ 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.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁
+ wrkMast.setAppeTime(new Date());
+ wrkMast.setModiUser(userId);
+ wrkMast.setModiTime(new Date());
+ if (!wrkMastService.insert(wrkMast)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo());
+ }
+ // 鐢熸垚宸ヤ綔妗f槑缁�
+ for (LocDetlDto detlDto : dto.getLocDetlDtos()) {
+ // 鍑哄簱鏃讹紝鏁伴噺涓�0鐨勭洿鎺ュ拷鐣�
+ if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(new Date());
+ Double qty = ioType==101?detlDto.getLocDetl().getQty():detlDto.getCount();
+ wrkDetl.setQty(qty); // 鏁伴噺
+ VersionUtils.setWrkDetl(wrkDetl, detlDto.getLocDetl()); // 鐗堟湰鎺у埗
+ wrkDetl.setAppeTime(new Date());
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(new Date());
+ wrkDetl.setModiUser(userId);
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+ }
+ // 淇敼搴撲綅鐘舵��: 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(new Date());
+ if (!locMastService.updateById(locMast)) {
+ throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo());
+ }
+ } else {
+ throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ }
+ }
+
}
diff --git a/src/main/webapp/static/js/matOut/matOut.js b/src/main/webapp/static/js/matOut/matOut.js
index 031b857..4abce2f 100644
--- a/src/main/webapp/static/js/matOut/matOut.js
+++ b/src/main/webapp/static/js/matOut/matOut.js
@@ -5,7 +5,7 @@
{fixed: 'left', field: 'count', title: '鏁伴噺(蹇呭~)', align: 'center', edit:'text', width: 120, style:'color: blue;font-weight: bold'}
,{field: 'billNo', title:'鍗曟嵁缂栧彿', align: 'center'}
,{field: 'seqNo', title:'搴忓彿', align: 'center', width:80}
- ,{field: 'qty', title:'閫氱煡鍏ュ簱閲�', align: 'center'}
+ ,{field: 'qty', title:'閫氱煡鍑哄簱閲�', align: 'center'}
,{field: 'outQty', title:'宸插嚭搴撻噺', align: 'center'}
];
arrRemove(detlCols, 'field', 'qty');
--
Gitblit v1.9.1