From 41ce33ca359ca6f78fa76a5352d76447424158e1 Mon Sep 17 00:00:00 2001
From: wang..123 <brook_w@163.com>
Date: 星期二, 15 三月 2022 10:56:31 +0800
Subject: [PATCH] #
---
src/main/java/com/zy/asrs/service/OutStockDanService.java | 26 +
src/main/java/com/zy/common/service/erp/ErpService.java | 4
src/main/webapp/views/outStockDan/outStockDan.html | 89 +++
src/main/java/com/zy/asrs/controller/OutStockDanController.java | 188 +++++++
src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java | 6
src/main/java/com/zy/asrs/mapper/OutStockDanMapper.java | 25 +
src/main/java/com/zy/asrs/service/LocNormalService.java | 2
src/main/webapp/views/outStockDan/outStockDetail1.html | 226 +++++++++
src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java | 8
src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java | 2
src/main/resources/mapper/OutStockDanMapper.xml | 130 +++++
src/main/webapp/static/js/outStockDan/outStockDan.js | 168 +++++++
src/main/java/com/zy/asrs/service/impl/OutStockDanServiceImpl.java | 306 ++++++++++++
src/main/java/com/zy/asrs/controller/OutStockController.java | 4
src/main/webapp/views/outStockDan/outStockNormalDetail1.html | 204 ++++++++
src/main/resources/application.yml | 2
16 files changed, 1,379 insertions(+), 11 deletions(-)
diff --git a/src/main/java/com/zy/asrs/controller/OutStockController.java b/src/main/java/com/zy/asrs/controller/OutStockController.java
index dc270c8..b9b6c03 100644
--- a/src/main/java/com/zy/asrs/controller/OutStockController.java
+++ b/src/main/java/com/zy/asrs/controller/OutStockController.java
@@ -95,8 +95,8 @@
*/
@RequestMapping(value = "/outStock/query/locNormalList")
@ManagerAuth
- public R queryMatWithLocNormal(String fbillNo, String mnemonic) {
- List<LocNormal> list = locNormalService.queryLocNorlMatnr(fbillNo, mnemonic);
+ public R queryMatWithLocNormal(String fbillNo, String mnemonic,String matnr) {
+ List<LocNormal> list = locNormalService.queryLocNorlMatnr(fbillNo, mnemonic,matnr);
return R.ok(list);
}
diff --git a/src/main/java/com/zy/asrs/controller/OutStockDanController.java b/src/main/java/com/zy/asrs/controller/OutStockDanController.java
new file mode 100644
index 0000000..a25db26
--- /dev/null
+++ b/src/main/java/com/zy/asrs/controller/OutStockDanController.java
@@ -0,0 +1,188 @@
+package com.zy.asrs.controller;
+
+import com.alibaba.fastjson.JSON;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.core.annotations.ManagerAuth;
+import com.core.common.Cools;
+import com.core.common.R;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.LocNormal;
+import com.zy.asrs.entity.LocNormalLog;
+import com.zy.asrs.entity.param.LocNormalStockOutParam;
+import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.service.LocNormalLogService;
+import com.zy.asrs.service.LocNormalService;
+import com.zy.asrs.service.OutStockDanService;
+import com.zy.asrs.service.WorkService;
+import com.zy.asrs.utils.VersionUtils;
+import com.zy.common.service.erp.ErpService;
+import com.zy.common.service.erp.entity.OutStockBillEntry;
+import com.zy.common.web.BaseController;
+import lombok.extern.slf4j.Slf4j;
+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.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+@Slf4j
+@RestController
+public class OutStockDanController extends BaseController {
+
+
+ @Autowired
+ private OutStockDanService outStockDanService;
+ @Autowired
+ private WorkService workService;
+ @Autowired
+ private LocNormalService locNormalService;
+ @Autowired
+ private ErpService erpService;
+ @Autowired
+ private LocNormalLogService locNormalLogService;
+
+
+ /**
+ *
+ * @param curr
+ * @param limit
+ * @param param
+ * @return
+ */
+ @RequestMapping(value = "/outStock/query/list1")
+ @ManagerAuth
+ public R outStockQueryList(@RequestParam(defaultValue = "1")Integer curr,
+ @RequestParam(defaultValue = "10")Integer limit,
+ @RequestParam Map<String, Object> param){
+ return R.ok(outStockDanService.queryOutStock(toPage(curr, limit, param, OutStockBillEntry.class)));
+ }
+
+ /**
+ * 妫�绱㈢鍚堥�氱煡鍗曠殑绔嬪簱搴撳瓨鐗╂枡
+ * @param fbillNo
+ * @return
+ */
+ @RequestMapping(value = "/outStock/query/locList1")
+ @ManagerAuth
+ public R queryMatWithLoc(String fbillNo,String matnr,String mnemonic) {
+ List<LocDetl> list = outStockDanService.queryMatWithLoc(fbillNo,matnr,mnemonic);
+ return R.ok(list);
+ }
+
+ @RequestMapping(value = "/plate/outStock/start1")
+ @ManagerAuth(memo = "鍑哄簱浣滀笟")
+ public R fullStoreTakeStart(@RequestBody StockOutParam param) {
+ outStockDanService.startupFullTakeStore(param, getUserId());
+ return R.ok("鍑哄簱鍚姩鎴愬姛");
+ }
+
+ /**
+ * 妫�绱㈢鍚堥�氱煡鍗曠殑骞充粨搴撳瓨鐗╂枡
+ * @param fbillNo
+ * @return
+ */
+ @RequestMapping(value = "/outStock/query/locNormalList1")
+ @ManagerAuth
+ public R queryMatWithLocNormal(String fbillNo, String mnemonic,String matnr) {
+ List<LocNormal> list = locNormalService.queryLocNorlMatnr(fbillNo, mnemonic,matnr);
+ return R.ok(list);
+ }
+
+
+ /**
+ * 骞充粨瀵规帴erp鍑哄簱
+ * @param
+ * @return
+ */
+ @RequestMapping(value = "/outStock/locNormal1")
+ @ManagerAuth
+ @Transactional
+ public R outStockLocNormal(@RequestBody LocNormalStockOutParam param) {
+ Long modiUser = getUserId();
+ Date modiTime = new Date();
+
+ Integer FInterI = outStockDanService.queryOutStockFInterID(param.getSupplier()); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
+ List<OutStockBillEntry> entryList = outStockDanService.selectList(new EntityWrapper<OutStockBillEntry>().eq("FInterID",FInterI));
+ for(OutStockBillEntry one : entryList){
+ String Fnumber = one.getFnumber();
+ BigDecimal qty = new BigDecimal(0);
+ for (LocNormal locNormals:param.getList()) {
+ if(locNormals.getMatnr().equals(Fnumber)){
+ qty = qty.add(locNormals.getAnfme());
+ }
+ }
+ if(qty.compareTo(one.getFQty()) == 1){
+ return R.error("鍑哄簱鏁伴噺澶т簬閫氱煡妗f暟閲廩FInterID=" + FInterI + ",Fnumber=" + Fnumber + "]");
+ }
+ }
+
+ for (LocNormal locNormals:param.getList()) {
+ LocNormal locNormal = locNormalService.selectOne(new EntityWrapper<LocNormal>().eq("id", locNormals.getId()));
+ if (!Cools.isEmpty(locNormal)) {
+ if (locNormal.getAnfme().compareTo(locNormals.getAnfme()) == 1) {
+ LocNormal logLocNormal = new LocNormal();
+ logLocNormal.setAnfme(locNormals.getAnfme());
+ logLocNormal.setMatnr(locNormal.getMatnr());
+ logLocNormal.setMaktx(locNormal.getMaktx());
+ logLocNormal.setLgnum(locNormal.getLgnum());
+ logLocNormal.setType(locNormal.getType());
+ logLocNormal.setMnemonic(locNormal.getMnemonic());
+ logLocNormal.setSupplier(locNormal.getSupplier());
+ logLocNormal.setWarehouse(locNormal.getWarehouse());
+ logLocNormal.setWarehouseName(locNormal.getWarehouseName());
+ logLocNormal.setBrand(locNormal.getBrand());
+ logLocNormal.setAltme(locNormal.getAltme());
+ logLocNormal.setBname(locNormal.getBname());
+ logLocNormal.setMemo(locNormal.getMemo());
+ logLocNormal.setState("2");
+ // 鐢熸垚鍑哄簱璁板綍
+// locNormalService.insert(logLocNormal);
+ // 鏇存柊鍘熷厛骞充粨璁板綍
+ locNormalService.updateLocNormal(locNormal.getMatnr(), locNormal.getAnfme().subtract(locNormals.getAnfme()), modiUser, modiTime, locNormal.getId());
+ // 鐢熸垚骞充粨鍑哄叆搴撹褰�
+ LocNormalLog locLog = new LocNormalLog();
+ VersionUtils.setLocNormalLog(locLog, locNormals);
+ locLog.setAnfme(locNormals.getAnfme().doubleValue());
+ locLog.setIoType(2);
+ locLog.setCreateTime(new Date());
+ locLog.setCreateUser(modiUser);
+ if (!locNormalLogService.insert(locLog)) {
+ String logStr = JSON.toJSONString(locLog);
+ log.info("骞充粨鍑哄簱璁板綍鎻掑叆澶辫触,鏁版嵁:" + logStr);
+ }
+ } else {
+ // 鎶婂搴旂墿鏂欏钩浠撳簱瀛樺嚭搴�
+ locNormalService.outLocNormal(locNormals.getMatnr(), modiUser, modiTime, locNormals.getId());
+ }
+ }
+
+// Integer FInterI = outStockDanService.queryOutStockFInterID(param.getSupplier()); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
+
+ //鏇存柊ASRS鍑哄簱閫氱煡妗f槑缁嗗嚭搴撴暟閲�
+ Wrapper wrapper = new EntityWrapper<OutStockBillEntry>().eq("FInterID",FInterI).eq("Fnumber",locNormals.getMatnr());
+ OutStockBillEntry outStockBillEntry = outStockDanService.selectOne(wrapper);
+ outStockBillEntry.setFAuxCommitQty(outStockBillEntry.getFAuxCommitQty().add(locNormals.getAnfme()));
+ outStockBillEntry.setFAmount(outStockBillEntry.getFAmount().add(locNormals.getAnfme())); //鍊熺敤famount瀛楁锛屾帶鍒朵笅鍙戝嚭搴撲换鍔℃暟閲�
+ outStockBillEntry.setFAuxQty(outStockBillEntry.getFAuxQty().subtract(locNormals.getAnfme()));
+ if(!outStockDanService.update(outStockBillEntry,wrapper)){
+ throw new CoolException("鏇存柊鍑哄簱閫氱煡妗f槑缁嗗け璐FInterID="+FInterI+",Fnumber="+locNormals.getMatnr()+"]");
+ }
+
+ // erp涓棿琛ㄦ洿鏂版暟鎹�
+ if (!erpService.incrementCPakOut(FInterI, locNormals.getMatnr(), locNormals.getAnfme().doubleValue(), param.getSupplier())) {
+ log.error("鏇存柊ERP鎴愬搧鍑哄簱鏁版嵁[matnr={},FBillNo={}]澶辫触", locNormals.getMatnr(), param.getSupplier());
+ throw new CoolException("鏇存柊ERP鎴愬搧鍑哄簱鏁版嵁[matnr=" + locNormals.getMatnr() + ",FBillNo=" + param.getSupplier() + "]澶辫触");
+ }
+
+ }
+ return R.ok("骞充粨鍑哄簱鎴愬姛");
+ }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/OutStockDanMapper.java b/src/main/java/com/zy/asrs/mapper/OutStockDanMapper.java
new file mode 100644
index 0000000..87d0345
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/OutStockDanMapper.java
@@ -0,0 +1,25 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.LocDetl;
+import com.zy.common.service.erp.entity.OutStockBillEntry;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
+@Mapper
+@Repository
+public interface OutStockDanMapper extends BaseMapper<OutStockBillEntry> {
+
+ List<OutStockBillEntry> queryOutStock(Map<String, Object> map);
+
+ Integer queryOutStockCount(Map<String, Object> map);
+
+ List<LocDetl> queryMatWithLoc(String matnr,@Param("mnemonic") String mnemonic);
+
+ List<OutStockBillEntry> queryMatnrWithBillNo(@Param("FBillNo") String fbillNo);
+
+ Integer queryOutStockFInterID(String supplier);
+}
diff --git a/src/main/java/com/zy/asrs/service/LocNormalService.java b/src/main/java/com/zy/asrs/service/LocNormalService.java
index 958cf45..58b8f76 100644
--- a/src/main/java/com/zy/asrs/service/LocNormalService.java
+++ b/src/main/java/com/zy/asrs/service/LocNormalService.java
@@ -38,7 +38,7 @@
public void pdaLocNormalMove(List<LocNormal> list);
- public List<LocNormal> queryLocNorlMatnr(String fbillNo, String mnemonic);
+ public List<LocNormal> queryLocNorlMatnr(String fbillNo, String mnemonic,String matnr);
}
diff --git a/src/main/java/com/zy/asrs/service/OutStockDanService.java b/src/main/java/com/zy/asrs/service/OutStockDanService.java
new file mode 100644
index 0000000..da589b3
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/OutStockDanService.java
@@ -0,0 +1,26 @@
+package com.zy.asrs.service;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.LocDetl;
+import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.common.service.erp.entity.OutStockBillEntry;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public interface OutStockDanService extends IService<OutStockBillEntry> {
+
+ Page<OutStockBillEntry> queryOutStock(Page<OutStockBillEntry> page);
+
+ List<LocDetl> queryMatWithLoc(String fbillNo,String matnr,String mnemonic);
+
+ Integer queryOutStockFInterID(String supplier);
+
+ boolean incrementCPakOut(Integer FInterID, String Fnumber, Double increment, String FBillNo);
+
+ /**
+ * 鍑哄簱浣滀笟
+ */
+ void startupFullTakeStore(StockOutParam param, Long userId);
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
index 956cba2..9438b0d 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocNormalServiceImpl.java
@@ -510,12 +510,16 @@
}
@Override
- public List<LocNormal> queryLocNorlMatnr(String fbillNo, String mnemonic) {
+ public List<LocNormal> queryLocNorlMatnr(String fbillNo, String mnemonic,String matnr) {
List<OutStockBillEntry> matList = outStockMapper.queryMatnrWithBillNo(fbillNo);
List<LocNormal> locNormal = new ArrayList<>();
List<LocNormal> locNormalResult = new ArrayList<>();
for (Integer i = 0; i < matList.size(); i++) {
- locNormal = baseMapper.queryLocNorlMatnr(matList.get(i).getFnumber(), mnemonic) ;
+ if(matList.get(i).getFnumber().equals(matnr)){
+ locNormal = baseMapper.queryLocNorlMatnr(matnr, mnemonic);
+ }else {
+ continue;
+ }
if (locNormal.size() > 0) {
for (LocNormal e:locNormal) {
LocNormal obj = new LocNormal();
diff --git a/src/main/java/com/zy/asrs/service/impl/OutStockDanServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OutStockDanServiceImpl.java
new file mode 100644
index 0000000..31d53df
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/OutStockDanServiceImpl.java
@@ -0,0 +1,306 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
+import com.baomidou.mybatisplus.plugins.Page;
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.core.common.Cools;
+import com.core.exception.CoolException;
+import com.zy.asrs.entity.*;
+import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.mapper.OutStockDanMapper;
+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 com.zy.common.service.erp.entity.OutStockBillEntry;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.text.MessageFormat;
+import java.util.*;
+
+@Slf4j
+@Service("outStockDanService")
+public class OutStockDanServiceImpl extends ServiceImpl<OutStockDanMapper, OutStockBillEntry> implements OutStockDanService {
+
+ // 宸ヤ綔鍙风敓鎴愯鍒欓粯璁ょ被鍨�
+ private static final int DEFAULT_WORK_NO_TYPE = 0;
+ @Autowired
+ private WrkMastService wrkMastService;
+ @Autowired
+ private BasDevpService basDevpService;
+ @Autowired
+ private LocDetlService locDetlService;
+ @Autowired
+ private LocMastService locMastService;
+ @Autowired
+ private StaDescService staDescService;
+ @Autowired
+ private CommonService commonService;
+ @Autowired
+ private WrkDetlService wrkDetlService;
+ @Autowired
+ private LocNormalService locNormalService;
+ @Autowired
+ private JdbcTemplate jdbcTemplate;
+ @Autowired
+ private OutStockDanService outStockDanService;
+
+ @Override
+ public Page<OutStockBillEntry> queryOutStock(Page<OutStockBillEntry> page) {
+ page.setRecords(baseMapper.queryOutStock(page.getCondition()));
+ page.setTotal(baseMapper.queryOutStockCount(page.getCondition()));
+ return page;
+ }
+
+ @Override
+ public List<LocDetl> queryMatWithLoc(String fbillNo,String matnr,String mnemonic) {
+
+ List<OutStockBillEntry> matList = baseMapper.queryMatnrWithBillNo(fbillNo);
+ List<LocDetl> tempLocList = new ArrayList<LocDetl>();
+ List<LocDetl> locList = new ArrayList<LocDetl>();
+ for (Integer i = 0; i < matList.size(); i++) {
+ /*鑷姩鏍规嵁鐗╂枡缂栫爜閫夊彇鏈�浼樺嚭璐ч『搴忥紙鍏堣繘鍏堝嚭锛岄潬澶栬揣鐗╁厛鍑猴級*/
+ if(matList.get(i).getFnumber().equals(matnr)){
+ tempLocList = baseMapper.queryMatWithLoc(matList.get(i).getFnumber(),mnemonic);
+ }else {
+ continue;
+ }
+ BigDecimal needNum = matList.get(i).getFAuxQty();
+ BigDecimal locNum = BigDecimal.ZERO;
+ if (tempLocList.size() > 0) {
+ for (Integer j = 0; j < tempLocList.size(); j ++) {
+ //locNum = locNum.add(new BigDecimal(tempLocList.get(j).getAnfme()));
+ /* 璁$畻闇�瑕佺殑鏁伴噺锛岀鍚堟暟閲忓悗缁撴潫寰幆 */
+// if (needNum.compareTo(locNum) == 1) {
+// locList.add(tempLocList.get(j));
+// } else {
+// locList.add(tempLocList.get(j));
+// break;
+// }
+ locList.add(tempLocList.get(j));
+ }
+ }
+ }
+ return locList;
+ }
+
+ @Override
+ public Integer queryOutStockFInterID(String supplier) {
+ return baseMapper.queryOutStockFInterID(supplier);
+ }
+
+ /* 鎴愬搧澧為噺鍑哄簱 */
+ @Override
+ public boolean incrementCPakOut(Integer FInterID, String Fnumber, Double increment, String FBillNo) {
+ String sql = "update OutStockbillEntry set FAuxCommitQty = (FAuxCommitQty + {0,number,#}) where 1=1 and Fnumber = ''{1}'' and FInterID = {2,number,#}";
+ sql = MessageFormat.format(sql, increment, Fnumber, FInterID);
+ if (jdbcTemplate.update(sql) > 0) {
+ sql = "select * from OutStockbillEntry where 1=1 and Fnumber = ''{0}'' and FInterID = {1,number,#}";
+ sql = MessageFormat.format(sql, Fnumber, FInterID);
+ List<OutStockBillEntry> select = this.selectList(new EntityWrapper<OutStockBillEntry>().eq("Fnumber", Fnumber).eq("FInterID", FInterID));
+ OutStockBillEntry outStockBillEntry = select.get(0);
+ boolean complete = false;
+ if (outStockBillEntry.getFQty().compareTo(BigDecimal.ZERO) == 1) {
+ if (outStockBillEntry.getFAuxCommitQty().compareTo(outStockBillEntry.getFQty()) > -1) {
+ complete = true;
+ }
+ } else {
+ if (outStockBillEntry.getFAuxCommitQty().compareTo(outStockBillEntry.getFAuxQty()) > -1) {
+ complete = true;
+ }
+ }
+ if (complete) {
+ List<OutStockBillEntry> select1 = this.selectList(new EntityWrapper<OutStockBillEntry>().eq("FInterID", FInterID));
+ if(select1.size()<=1){
+ if (!completeCPakOut(FBillNo) ) {
+ log.error("{}鍑哄簱鍗曟爣璁板畬鎴愬け璐�", FBillNo);
+ }
+ }
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /* 鎴愬搧鍑哄簱鍗曟爣璁板畬鎴� */
+ private boolean completeCPakOut(String FBillNo){
+ String sql = "update OutStockbill set Fflag_finish = 1 where FBillNo = ''{0}''";
+ sql = MessageFormat.format(sql, FBillNo);
+ return jdbcTemplate.update(sql) > 0;
+ }
+
+ @Override
+ @Transactional
+ public void startupFullTakeStore(StockOutParam param, Long userId) {
+ //鍒ゆ柇鍑哄簱鐔熺粌鏄惁澶т簬搴撳瓨鏁伴噺
+ for (StockOutParam.LocDetl detl : param.getLocDetls()) {
+// LocDetl locDetl = locDetlService.selectById(detl.getLocNo());
+ LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no",detl.getLocNo()));
+ if(locDetl != null){
+ if(detl.getCount() > locDetl.getAnfme()){
+ throw new CoolException("鍑哄簱鏁伴噺瓒呰繃浜嗗簱瀛樻暟閲廩locNo=" + detl.getLocNo() + "]");
+ }
+ }
+ }
+ //鍒ゆ柇鍑哄簱鏁伴噺鏄惁澶т簬閫氱煡妗f暟閲�
+ Integer FInterI = outStockDanService.queryOutStockFInterID(param.getFbillNo()); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
+ List<OutStockBillEntry> entryList = outStockDanService.selectList(new EntityWrapper<OutStockBillEntry>().eq("FInterID",FInterI));
+ for(OutStockBillEntry one : entryList){
+ String Fnumber = one.getFnumber();
+ BigDecimal qty = new BigDecimal(0);
+ for (StockOutParam.LocDetl detl : param.getLocDetls()) {
+ if(detl.getMatnr().equals(Fnumber)){
+ qty = qty.add(BigDecimal.valueOf(detl.getCount()));
+ }
+ }
+ if(qty.compareTo(one.getFQty()) == 1){
+ throw new CoolException("鍑哄簱鏁伴噺澶т簬閫氱煡妗f暟閲廩FInterID=" + FInterI + ",Fnumber=" + Fnumber + "]");
+ }
+ }
+ // 鐩爣绔欑偣鐘舵�佹娴�
+ BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite());
+ // 鑾峰彇搴撲綅鏄庣粏
+ List<LocDetlDto> locDetlDtos = new ArrayList<>();
+ for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) {
+ if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) {
+ LocDetl sqlParam = new LocDetl();
+ sqlParam.setLocNo(paramLocDetl.getLocNo());
+ sqlParam.setMatnr(paramLocDetl.getMatnr());
+ 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, param.getFbillNo());
+ } else {
+ throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�");
+ }
+ }
+
+ // @Override
+ @Transactional
+ public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, Integer ioType, Long userId, String fbillNo) {
+ // 鍚堝苟鍚岀被椤�
+ 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.setBarcode(locMast.getBarcode()); // 鏉$爜
+ 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()) {
+ // 濡傛灉涓烘崱鏂欏嚭搴撻渶瑕佸垽鏂墭鐩樼爜鏄惁涓虹┖
+ if (ioType == 103) {
+ String zpallet = detlDto.getLocDetl().getZpallet();
+ if (Cools.isEmpty(zpallet)) {
+ throw new CoolException("鎷f枡鍑哄簱蹇呴』鍚湁鎵樼洏鐮�");
+ }
+ }
+ // 鍑哄簱鏃讹紝鏁伴噺涓�0鐨勭洿鎺ュ拷鐣�
+ if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;}
+ WrkDetl wrkDetl = new WrkDetl();
+ wrkDetl.setWrkNo(workNo);
+ wrkDetl.setIoTime(new Date());
+ Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount();
+ wrkDetl.setAnfme(anfme); // 鏁伴噺
+ VersionUtils.setWrkDetl(wrkDetl, detlDto.getLocDetl()); // 鐗堟湰鎺у埗
+ wrkDetl.setAppeTime(new Date());
+ wrkDetl.setAppeUser(userId);
+ wrkDetl.setModiTime(new Date());
+ wrkDetl.setModiUser(userId);
+ wrkDetl.setSupplier(fbillNo);
+ wrkDetl.setMemo(detlDto.getLocDetl().getMemo());
+ if (!wrkDetlService.insert(wrkDetl)) {
+ throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�");
+ }
+
+ //鏇存柊鍑哄簱閫氱煡妗amount瀛楁锛岄槻姝㈤噸澶嶄笅鍙戜换鍔� 2021-09-28 TQS ADD
+ Integer FInterI = outStockDanService.queryOutStockFInterID(fbillNo); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
+ Wrapper wrapper1 = new EntityWrapper<OutStockBillEntry>().eq("FInterID",FInterI).eq("Fnumber",detlDto.getLocDetl().getMatnr());
+ OutStockBillEntry outStockBillEntry = outStockDanService.selectOne(wrapper1);
+ outStockBillEntry.setFAmount(outStockBillEntry.getFAmount().add(BigDecimal.valueOf(anfme))); //鍊熺敤famount瀛楁锛屾帶鍒朵笅鍙戝嚭搴撲换鍔℃暟閲�
+ outStockBillEntry.setFAuxQty(outStockBillEntry.getFAuxQty().subtract(BigDecimal.valueOf(anfme)));
+ if(!outStockDanService.update(outStockBillEntry,wrapper1)){
+ throw new CoolException("鏇存柊鍑哄簱閫氱煡妗f槑缁咶Amount澶辫触[FInterID="+FInterI+",Fnumber="+detlDto.getLocDetl().getMatnr()+"]");
+ }
+ }
+ // 淇敼搴撲綅鐘舵��: 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() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��");
+ }
+ ioType=null;
+ }
+ // todo:luxiaotao
+ // 鍚屼竴鍒楃殑鍚屾椂鍑哄簱锛屽垯浼樺厛鍑烘祬搴撲綅
+ }
+
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
index 3eff23f..6bc6046 100644
--- a/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OutStockServiceImpl.java
@@ -113,7 +113,7 @@
}
if (complete) {
List<OutStockBillEntry> select1 = this.selectList(new EntityWrapper<OutStockBillEntry>().eq("FInterID", FInterID));
- if(select1.size()==1){
+ if(select1.size()<=1){
if (!completeCPakOut(FBillNo) ) {
log.error("{}鍑哄簱鍗曟爣璁板畬鎴愬け璐�", FBillNo);
}
diff --git a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
index bd7f28d..4a04fc8 100644
--- a/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/WorkLogHandler.java
@@ -48,6 +48,8 @@
private OutStockService outStockService;
@Autowired
private JdbcTemplate jdbcTemplate;
+ @Autowired
+ private OutStockDanService outStockDanService;
@Transactional
public ReturnT<Exception> start(WrkMast wrkMast) {
@@ -85,12 +87,12 @@
List<WrkDetl> wrkDetls = wrkDetlService.selectList(wrapper.eq("wrk_no", wrkMast.getWrkNo()).and().isNotNull("supplier"));
for (WrkDetl wrkDetl: wrkDetls) {
if (!Cools.isEmpty(wrkDetl)) {
- Integer FInterI = outStockService.queryOutStockFInterID(wrkDetl.getSupplier()); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
+ Integer FInterI = outStockDanService.queryOutStockFInterID(wrkDetl.getSupplier()); // 鑾峰彇鍑哄簱鍗曚富琛ㄤ富閿�
if (!Cools.isEmpty(FInterI)) {
if (!erpService.incrementCPakOut(FInterI, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getSupplier())) {
exceptionHandle("[xtyasrs_dual]鏇存柊ERP鎴愬搧鍑哄簱鏁版嵁[matnr={0},FBillNo={1}]澶辫触", wrkDetl.getMatnr(),wrkDetl.getSupplier());
}
- if (!outStockService.incrementCPakOut(FInterI, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getSupplier())) {
+ if (!outStockDanService.incrementCPakOut(FInterI, wrkDetl.getMatnr(), wrkDetl.getAnfme(), wrkDetl.getSupplier())) {
exceptionHandle("[xtyasrs]鏇存柊ERP鎴愬搧鍑哄簱鏁版嵁[matnr={0},FBillNo={1}]澶辫触", wrkDetl.getMatnr(),wrkDetl.getSupplier());
}
}
diff --git a/src/main/java/com/zy/common/service/erp/ErpService.java b/src/main/java/com/zy/common/service/erp/ErpService.java
index bdb282e..9f3803f 100644
--- a/src/main/java/com/zy/common/service/erp/ErpService.java
+++ b/src/main/java/com/zy/common/service/erp/ErpService.java
@@ -452,10 +452,10 @@
}
}
if (complete) {
- sql = "select * from OutStockbillEntry where 1=1 and FInterID = {1,number,#} and FAuxCommitQty != FQty";
+ sql = "select * from OutStockbillEntry where 1=1 and FInterID = {1,number,#}";
sql = MessageFormat.format(sql, Fnumber, FInterID);
List<OutStockBillEntry> select1 = erpSqlServer.select(sql, OutStockBillEntry.class);
- if(select1.size()<1){
+ if(select1.size()<=1){
if (!completeCPakOut(FBillNo) ) {
log.error("{}鍑哄簱鍗曟爣璁板畬鎴愬け璐�", FBillNo);
}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index e44999a..2b912a0 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -45,7 +45,7 @@
erp:
db:
driver_class_name: com.microsoft.sqlserver.jdbc.SQLServerDriver
- ur: jdbc:sqlserver://192.168.0.253:1433;databasename=xtyasrs_dual
+ ur: jdbc:sqlserver://localhost:1433;databasename=xtyasrs_dual
# ur: jdbc:sqlserver://192.168.4.208:1433;databasename=xtyasrs_dual
username: sa
password: sa@123
diff --git a/src/main/resources/mapper/OutStockDanMapper.xml b/src/main/resources/mapper/OutStockDanMapper.xml
new file mode 100644
index 0000000..1e28c93
--- /dev/null
+++ b/src/main/resources/mapper/OutStockDanMapper.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.zy.asrs.mapper.OutStockDanMapper">
+
+ <!-- OutStockBillEntry鏄犲皠缁撴灉 -->
+ <resultMap id="OutStockResultMap" type="com.zy.common.service.erp.entity.OutStockBillEntry">
+ <result column="FBrNo" property="FBrNo"/>
+ <result column="FInterID" property="FInterID"/>
+ <result column="FEntryID" property="FEntryID"/>
+ <result column="FOrderInterID" property="FOrderInterID"/>
+ <result column="FAuxQty" property="FAuxQty"/>
+ <result column="FCommitQty" property="FCommitQty"/>
+ <result column="FAuxPrice" property="FAuxPrice"/>
+ <result column="FDate" property="FDate"/>
+ <result column="FNote" property="FNote"/>
+ <result column="Fnumber" property="Fnumber"/>
+ <result column="FSourceBillNo" property="FSourceBillNo"/>
+ <result column="FBillNo" property="FBillNo"/>
+ <result column="FAdd" property="FAdd"/>
+ <result column="Fname" property="Fname" />
+ <result column="Fmodel" property="Fmodel" />
+ <result column="Fflag_finish" property="FflagFinish" />
+ </resultMap>
+
+ <!-- asr_loc_detl鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.zy.asrs.entity.LocDetl">
+ <result column="loc_no" property="locNo" />
+ <result column="matnr" property="matnr" />
+ <result column="maktx" property="maktx" />
+ <result column="lgnum" property="lgnum" />
+ <result column="type" property="type" />
+ <result column="mnemonic" property="mnemonic" />
+ <result column="supplier" property="supplier" />
+ <result column="warehouse" property="warehouse" />
+ <result column="brand" property="brand" />
+ <result column="anfme" property="anfme" />
+ <result column="altme" property="altme" />
+ <result column="zpallet" property="zpallet" />
+ <result column="bname" property="bname" />
+ <result column="memo" property="memo" />
+ <result column="modi_user" property="modiUser" />
+ <result column="modi_time" property="modiTime" />
+ <result column="appe_user" property="appeUser" />
+ <result column="appe_time" property="appeTime" />
+ <result column="mat_status" property="matStatus" />
+ </resultMap>
+
+
+
+ <sql id="stockOutCondition">
+ <if test="FBillNo!=null and FBillNo!='' ">
+ and b.FBillNo like '%' + #{FBillNo} + '%'
+ </if>
+ </sql>
+
+ <select id="queryOutStock" resultMap="OutStockResultMap">
+ select * from
+ (
+ select ROW_NUMBER() over (order by a.FInterID,a.FEntryID) as row,a.FBrNo,a.FInterID,a.FEntryID,
+ a.FOrderInterID,a.FAuxQty,a.FCommitQty,a.FAuxPrice,a.FDate,a.FNote, a.Fnumber, a.FSourceBillNo, b.FBillNo,
+ b.FAdd,b.Fflag_finish, a.Fname, a.Fmodel
+ from OutStockBillEntry a left join OutStockBill b on a.FInterID = b.FInterID
+ where 1=1
+ and b.Fflag_finish != 1 and a.FQty > a.FAmount
+ <if test="FSourceBillNo!=null and FSourceBillNo!='' ">
+ and a.FSourceBillNo = #{FSourceBillNo}
+ </if>
+ <if test="FBillNo != null and FBillNo != ''">
+ and b.FBillNo = #{FBillNo}
+ </if>
+ ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})
+ </select>
+
+ <select id="queryOutStockCount" parameterType="java.util.Map" resultType="java.lang.Integer">
+ select
+ count(1)
+ from OutStockBillEntry a
+ left join OutStockBill b on a.FInterID = b.FInterID
+ where 1=1
+ and b.Fflag_finish != 1 and a.FQty > a.FAmount
+ <if test="FSourceBillNo!=null and FSourceBillNo!='' ">
+ and a.FSourceBillNo = #{FSourceBillNo}
+ </if>
+ <if test="FBillNo != null and FBillNo != ''">
+ and b.FBillNo = #{FBillNo}
+ </if>
+ </select>
+
+ <select id="queryMatnrWithBillNo" resultMap="OutStockResultMap">
+ select * from (select ROW_NUMBER() over (order by a.FInterID,a.FEntryID) as row,a.FBrNo,a.FInterID,a.FEntryID,
+ a.FOrderInterID,a.FAuxQty,a.FCommitQty,a.FAuxPrice,a.FDate,a.FNote, a.Fnumber, a.FSourceBillNo, b.FBillNo,
+ b.FAdd
+ from OutStockBillEntry a left join OutStockBill b on a.FInterID = b.FInterID
+ where b.FBillNo = #{FBillNo}
+ ) t where 1 = 1
+ </select>
+
+ <select id="queryMatWithLoc" resultMap="BaseResultMap">
+ select * from asr_loc_detl a left join asr_loc_mast b on a.loc_no = b.loc_no
+ where 1=1
+ and b.loc_sts = 'F'
+ and a.matnr = #{matnr}
+ <if test="mnemonic != null and mnemonic != ''">
+ and a.mnemonic = #{mnemonic}
+ </if>
+ order by
+ DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time)
+ desc,
+ case
+ when (left(a.loc_no, 2) = '01') then 0
+ when (left(a.loc_no, 2) = '02') then 1
+ when (left(a.loc_no, 2) = '03') then 1
+ when (left(a.loc_no, 2) = '04') then 0
+ when (left(a.loc_no, 2) = '05') then 0
+ when (left(a.loc_no, 2) = '06') then 1
+ when (left(a.loc_no, 2) = '07') then 1
+ when (left(a.loc_no, 2) = '08') then 0
+ when (left(a.loc_no, 2) = '09') then 0
+ when (left(a.loc_no, 2) = '10') then 1
+ when (left(a.loc_no, 2) = '11') then 1
+ when (left(a.loc_no, 2) = '12') then 0
+ else 0
+ end
+ desc
+ </select>
+
+ <select id="queryOutStockFInterID" resultType="integer">
+ select FInterID from OutStockBill where FBillNo = #{supplier}
+ </select>
+</mapper>
diff --git a/src/main/webapp/static/js/outStockDan/outStockDan.js b/src/main/webapp/static/js/outStockDan/outStockDan.js
new file mode 100644
index 0000000..5fa7dc0
--- /dev/null
+++ b/src/main/webapp/static/js/outStockDan/outStockDan.js
@@ -0,0 +1,168 @@
+var pageCurr;
+var tableMerge;
+var orderData;
+var outStockDetail;
+
+function getCol() {
+ var cols = [];
+ cols.push(
+ {field: 'fbillNo', align: 'center', title: '鍗曟嵁缂栧彿', width: 150}
+ , {field: 'fsourceBillNo', align: 'center', title: '鐢熶骇鍗曞彿', width: 150}
+ , {field: 'fnumber', align: 'center', title: '鐗╂枡缂栧彿', width: 140}
+ , {field: 'fname', align: 'center', title: '鐗╂枡鍚嶇О'}
+ , {field: 'fmodel', align: 'center', title: '瑙勬牸', width: 200}
+ , {field: 'fentryID', align: 'center', title: '鍒嗗綍鍙�', width: 80}
+ , {field: 'forderInterID', align: 'center', title: '鍗曟嵁缂栧彿', hide: true}
+ , {field: 'fauxQty', align: 'center', title: '鏁伴噺', width: 100}
+ // , {field: 'fcommitQty', align: 'center', title: '鍙戣揣鏁伴噺'}
+ , {field: 'fauxPrice', align: 'center', title: '鍗曚环', width: 100}
+ , {field: 'fdate', align: 'center', title: '鏃ユ湡', hide: true}
+ , {field: 'fnote', align: 'center', title: '澶囨敞', hide: true}
+ , {field: 'fadd', align: 'center', title: '鍦板潃', hide: true}
+ , { title: '鎿嶄綔', align: 'center', toolbar: '#operate', width: 160}
+ );
+ return cols;
+}
+
+layui.use(['table', 'laydate', 'form', 'upload'], function () {
+ var table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+ var upload = layui.upload;
+ tableMerge = layui.tableMerge;
+
+ // 鏁版嵁娓叉煋
+ tableIns = table.render({
+ elem: '#salesOrder',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl + '/outStock/query/list1',
+ page: true,
+ limit: 16,
+ limits: [16, 50, 100, 200, 500],
+ even: true,
+ toolbar: '#toolbar',
+ cellMinWidth: 50,
+ cols: [getCol()],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'code': res.code,
+ 'msg': res.msg,
+ 'count': res.data.total,
+ 'data': res.data.records
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl + "/";
+ }
+ pageCurr = curr;
+ layui.tableMerge.render(this);
+ }
+ });
+
+ // 鎼滅储鏍忛噸缃簨浠�
+ form.on('submit(reset)', function (data) {
+ pageCurr = 1;
+ clearFormVal($('#search-box'));
+ tableReload(false);
+ });
+
+ // 鎼滅储鏍忔悳绱簨浠�
+ form.on('submit(search)', function (data) {
+ pageCurr = 1;
+ tableReload(false);
+ });
+
+
+ // 鏃堕棿閫夋嫨鍣�
+ layDate.render({
+ elem: '.layui-laydate-range'
+ , type: 'datetime'
+ , range: true
+ });
+
+ table.on('tool(salesOrder)', function (obj) {
+ var data = obj.data; //鑾峰緱褰撳墠琛屾暟鎹�
+ var layEvent = obj.event; //鑾峰緱 lay-event 瀵瑰簲鐨勫�硷紙涔熷彲浠ユ槸琛ㄥご鐨� event 鍙傛暟瀵瑰簲鐨勫�硷級
+ orderData = data;
+ // 濡傛灉鏄偣鍑绘搷浣滄寜閽�
+ if (layEvent == 'btnOut') {
+ outStockDetail = layer.open(
+ {
+ type: 2,
+ title: '绔嬪簱鍑哄簱-鍗曟嵁缂栧彿[' + orderData.fbillNo + ']',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: 'outStockDetail1.html',
+ success: function (layero, index) {
+
+ }
+ }
+ );
+ }
+ if (layEvent == 'btnNormalOut') {
+ outStockDetail = layer.open(
+ {
+ type: 2,
+ title: '骞充粨鍑哄簱-鍗曟嵁缂栧彿[' + orderData.fbillNo + ']',
+ maxmin: true,
+ area: [top.detailWidth, top.detailHeight],
+ shadeClose: false,
+ content: 'outStockNormalDetail1.html',
+ success: function (layero, index) {
+
+ }
+ }
+ );
+ }
+ });
+});
+
+function getOrderData() {
+ return orderData;
+}
+
+/* 琛ㄦ牸鏁版嵁閲嶈浇 */
+function tableReload(child) {
+ var searchData = {};
+ $.each($('#search-box [name]').serializeArray(), function () {
+ searchData[this.name] = this.value;
+ });
+
+ (child ? parent.tableIns : tableIns).reload({
+ where: searchData,
+ page: {
+ curr: pageCurr
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl + "/";
+ }
+ pageCurr = curr;
+ tableMerge.render(this);
+ }
+ });
+}
+
+/* 鍏抽棴鏄庣粏 */
+function closeDetail(msg) {
+ layer.close(outStockDetail);
+ layer.msg(msg);
+}
+
+/* 鐩戝惉鍥炶溅浜嬩欢 */
+$('body').keydown(function () {
+ if (event.keyCode === 13) {
+ $("#search").click();
+ }
+});
diff --git a/src/main/webapp/views/outStockDan/outStockDan.html b/src/main/webapp/views/outStockDan/outStockDan.html
new file mode 100644
index 0000000..ae4531d
--- /dev/null
+++ b/src/main/webapp/views/outStockDan/outStockDan.html
@@ -0,0 +1,89 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="utf-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <link rel="stylesheet" href="../../static/css/print.css" media="all">
+</head>
+<style>
+ #search-box {
+ padding: 30px 30px 10px 30px;
+ }
+
+ #search-box .layui-inline {
+ margin-right: 5px;
+ }
+
+ #data-search-btn {
+ margin-top: 10px;
+ }
+
+ #data-search-btn.layui-btn-container .layui-btn {
+ margin-right: 20px;
+ }
+
+ .contain td {
+ border: 1px solid #000;
+ /*line-height: 46px;*/
+ }
+
+</style>
+<body>
+
+<div>
+ <!-- 鎼滅储鏍� -->
+ <div id="search-box" class="layui-form layui-card-header">
+ <div class="layui-inline">
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="FBillNo" placeholder="璇疯緭鍏ュ崟鎹紪鍙�" autocomplete="off">
+ </div>
+ <div class="layui-input-inline">
+ <input class="layui-input" type="text" name="FSourceBillNo" placeholder="璇疯緭鍏ョ敓浜у崟鍙�" autocomplete="off">
+ </div>
+ </div>
+
+ <!--<!– 鏃ユ湡鑼冨洿 –>-->
+ <!--<div class="layui-inline" style="width: 300px">-->
+ <!--<div class="layui-input-inline">-->
+ <!--<input class="layui-input layui-laydate-range" name="orderTime" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">-->
+ <!--</div>-->
+ <!--</div>-->
+
+
+ <div id="data-search-btn" class="layui-btn-container layui-form-item">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储
+ </button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="reset">閲嶇疆
+ </button>
+ </div>
+ </div>
+
+ <!-- 琛ㄦ牸 -->
+ <div class="layui-form">
+ <table class="layui-hide" id="salesOrder" lay-filter="salesOrder"></table>
+ </div>
+
+</div>
+
+<script type="text/html" id="operate">
+ <button class="layui-btn layui-btn-danger layui-btn-xs" lay-event="btnOut">鍑虹珛搴�</button>
+ <button class="layui-btn layui-btn-normal layui-btn-xs" lay-event="btnNormalOut">鍑哄钩搴�</button>
+</script>
+
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/layuiadmin/modules/tableMerge.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/outStockDan/outStockDan.js"></script>
+
+</body>
+</html>
+
diff --git a/src/main/webapp/views/outStockDan/outStockDetail1.html b/src/main/webapp/views/outStockDan/outStockDetail1.html
new file mode 100644
index 0000000..d63b1a0
--- /dev/null
+++ b/src/main/webapp/views/outStockDan/outStockDetail1.html
@@ -0,0 +1,226 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <link rel="stylesheet" href="../../static/css/print.css" media="all">
+
+</head>
+<body>
+
+<div style="padding-top: 8px; padding-left: 8px">
+ <div class="layui-form-item">
+ <div class="layui-input-inline">
+ <input id="mnemonic" placeholder="璇疯緭鍏ョ敓浜у崟鍙�" class="layui-input" lay-verify="mnemonic" autocomplete="off">
+ </div>
+ <div id="data-search-btn" style="display: inline-block; margin: 0" class="layui-btn-container layui-form-item">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit onclick="onSearch1()">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit onclick="reload1()">閲嶇疆</button>
+ </div>
+ </div>
+
+</div>
+
+<div>
+ <div class="layui-form" style="padding: 8px">
+ <span id="staNoSpan">鍑哄簱鍙o細</span>
+ <div style="display: inline-block; width: 200px">
+ <select id="staNoSelect" lay-verify="required">
+ <option value="">璇烽�夋嫨绔欑偣</option>
+ </select>
+ </div>
+ <button class="layui-btn layui-btn-sm" style="display: inline-block" id="btn-outbound" lay-event="outbound"
+ onclick="outbound()">鍚姩鍑哄簱
+ </button>
+ </div>
+ <table class="layui-hide" id="stockOut" lay-filter="stockOut"></table>
+</div>
+
+<script type="text/template" id="takeSiteSelectTemplate">
+ {{#each data}}
+ <option value="{{siteId}}">{{desc}}</option>
+ {{/each}}
+</script>
+
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script>
+ var orderData = parent.getOrderData();
+ var locData = [];
+ var form;
+ var table;
+ var totalQty = parent.getOrderData().fauxQty;
+
+ function getCol() {
+ var cols = [
+ {type: 'checkbox'}
+ ,{field: '', align: 'center', title: '', width: 50, type: 'numbers'}
+ , {field: 'locNo$', align: 'center', title: '搴撲綅鍙�'}
+ , {field: 'matnr', align: 'center',title: '鐗╂枡缂栫爜'}
+ ,{field: 'maktx', align: 'center',title: '鐗╂枡鍚嶇О', width: 500}
+ ,{field: 'lgnum', align: 'center',title: '瑙勬牸'}
+ ,{field: 'type', align: 'center',title: '鐗╂枡绫诲埆'}
+ ,{field: 'mnemonic', align: 'center',title: '鐢熶骇鍗曞彿'}
+ ,{field: 'supplier', align: 'center',title: '閫氱煡鍗曞彿'}
+ ,{field: 'anfme', align: 'center',title: '鏁伴噺', edit: 'text', style: 'color: blue; font-weight: bold'}
+ // ,{field: 'altme', align: 'center',title: '鍗曚綅'}
+ ,{field: 'zpallet', align: 'center',title: '鎵樼洏鏉$爜'}
+ ];
+ cols.push({field: 'modiUser$', align: 'center', title: '淇敼浜哄憳', hide: true}
+ , {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿', hide: true})
+ return cols;
+ }
+
+ layui.use(['table', 'laydate', 'form'], function () {
+ table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ form = layui.form;
+ // 鏁版嵁娓叉煋
+ locDetlTableIns = table.render({
+ elem: '#stockOut',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl + '/outStock/query/locList1?fbillNo=' + orderData.fbillNo+'&matnr='+orderData.fnumber,
+ // data:{fbillNo:orderData.fbillNo},
+ page: true,
+ limit: 9999,
+ limits: [9999],
+ even: true,
+// cellMinWidth: 50,
+ cols: [getCol()],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'data': res.data,
+ 'code': res.code,
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl + "/";
+ }
+ locData = res.data;
+ }
+ });
+
+ $.ajax({
+ url: baseUrl + "/available/take/site",
+ headers: {'token': localStorage.getItem('token')},
+ method: 'POST',
+ async: false,
+ success: function (res) {
+ if (res.code === 200) {
+ var tpl = $("#takeSiteSelectTemplate").html();
+ var template = Handlebars.compile(tpl);
+ var html = template(res);
+ $('#staNoSelect').append(html);
+ form.render('select');
+ } else if (res.code === 403) {
+ top.location.href = baseUrl + "/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ });
+ });
+
+ /* 鍚姩鍑哄簱 */
+ function outbound() {
+ debugger
+ var checkStatus = table.checkStatus('stockOut');
+ var data = checkStatus.data;
+
+ if (data.length == 0) {
+ layer.msg('璇峰厛娣诲姞搴撲綅鐗╂枡');
+ return;
+ } else {
+ var staNo = $("#staNoSelect").val();
+ if (staNo === "" || staNo === null){
+ layer.msg("璇烽�夋嫨鍑哄簱鍙�");
+ return;
+ }
+ var locDetls = [];
+ var outQty=0;
+ data.forEach(function(elem) {
+ if (elem.anfme > 0) {
+ locDetls.push({locNo: elem.locNo, matnr: elem.matnr, count: elem.anfme});
+ }
+ outQty = outQty + parseInt(elem.anfme);
+ });
+ if(outQty > totalQty){
+ layer.msg("閫夋嫨鍑哄簱鏁伴噺瓒呰繃浜嗛�氱煡鍑哄簱閲�");
+ return;
+ }
+ var obj = {
+ locDetls: locDetls,
+ outSite: staNo,
+ fbillNo: orderData.fbillNo,
+ }
+ // let param = {
+ // outSite: staNo,
+ // locDetls: locDetls,
+ // fbillNo: orderData.fbillNo,
+ // }
+
+ // 璋冪敤鍑哄簱鎺ュ彛
+ $.ajax({
+ url: baseUrl+"/plate/outStock/start1",
+ headers: {'token': localStorage.getItem('token')},
+ data: JSON.stringify(obj),
+ contentType:'application/json;charset=UTF-8',
+ method: 'POST',
+ success: function (res) {
+ if (res.code === 200){
+ parent.closeDetail(res.msg);
+ parent.tableReload();
+ } else if (res.code === 403){
+ top.location.href = baseUrl+"/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ });
+ }
+ }
+ function onSearch1() {
+ var mnemonic = $("#mnemonic").val();
+ locDetlTableIns.reload({
+ where: {
+ mnemonic: mnemonic,
+ }
+ });
+ }
+
+ function reload1() {
+ var mnemonic = ""
+ $("#mnemonic").val(mnemonic);
+ locDetlTableIns.reload({
+ where: {
+ mnemonic: mnemonic,
+ }
+ });
+ }
+ $('body').keydown(function () {
+ if (event.keyCode === 13) {
+ onSearch1();
+ }
+ });
+</script>
+</html>
\ No newline at end of file
diff --git a/src/main/webapp/views/outStockDan/outStockNormalDetail1.html b/src/main/webapp/views/outStockDan/outStockNormalDetail1.html
new file mode 100644
index 0000000..86ae3b8
--- /dev/null
+++ b/src/main/webapp/views/outStockDan/outStockNormalDetail1.html
@@ -0,0 +1,204 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <title></title>
+ <meta name="renderer" content="webkit">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
+ <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all">
+ <link rel="stylesheet" href="../../static/css/cool.css" media="all">
+ <link rel="stylesheet" href="../../static/css/common.css" media="all">
+ <link rel="stylesheet" href="../../static/css/print.css" media="all">
+
+</head>
+<body>
+<div>
+ <div style="padding-top: 8px; padding-left: 8px">
+ <div class="layui-form-item">
+ <div class="layui-input-inline">
+ <input id="mnemonic" placeholder="璇疯緭鍏ョ敓浜у崟鍙�" class="layui-input" lay-verify="mnemonic" autocomplete="off">
+ </div>
+ <div id="data-search-btn" style="display: inline-block; margin: 0" class="layui-btn-container layui-form-item">
+ <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit onclick="onSearch()">鎼滅储</button>
+ <button id="reset" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit onclick="reload()">閲嶇疆</button>
+ </div>
+ </div>
+
+ </div>
+ <div class="layui-form" style="padding-top: 8px; padding-left: 8px">
+ <button style="margin-bottom: 0px" class="layui-btn layui-btn-sm layui-form-item" style="display: inline-block"
+ id="outbound" lay-submit
+ lay-event="outbound" onclick="outbound()">鍚姩鍑哄簱
+ </button>
+ </div>
+ <table class="layui-hide" id="stockOut" lay-filter="stockOut" style="margin-top: 0px"></table>
+</div>
+
+</body>
+<script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
+<script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
+<script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
+<script>
+ var orderData = parent.getOrderData();
+ var locData = [];
+ var table;
+ var sourceData = [];
+
+ function getCol() {
+ var cols = [
+ {type: 'checkbox'}
+ , {field: 'warehouseName', align: 'center', title: '搴撳尯鍚嶇О'}
+ , {field: 'warehouse', align: 'center', title: '搴撲綅缂栧彿'}
+ , {field: 'anfme', align: 'center', title: '鏁伴噺', edit: 'text'}
+ ];
+ cols.push.apply(cols, locNormalCols);
+ cols.push({field: 'modiUser$', align: 'center', title: '淇敼浜哄憳', hide: true}
+ , {field: 'modiTime$', align: 'center', title: '淇敼鏃堕棿', hide: true})
+ return cols;
+ }
+
+ layui.use(['table', 'laydate', 'form'], function () {
+ table = layui.table;
+ var $ = layui.jquery;
+ var layer = layui.layer;
+ var layDate = layui.laydate;
+ var form = layui.form;
+ // 鏁版嵁娓叉煋
+ locDetlTableIns = table.render({
+ elem: '#stockOut',
+ headers: {token: localStorage.getItem('token')},
+ url: baseUrl + '/outStock/query/locNormalList1?fbillNo=' + orderData.fbillNo+'&matnr='+orderData.fnumber,
+ //+'&mnemonic='+orderData.fsourceBillNo
+ page: true,
+ limit: 9999,
+ limits: [9999],
+ even: true,
+// cellMinWidth: 50,
+ cols: [getCol()],
+ request: {
+ pageName: 'curr',
+ pageSize: 'limit'
+ },
+ parseData: function (res) {
+ return {
+ 'data': res.data,
+ 'code': res.code,
+ }
+ },
+ response: {
+ statusCode: 200
+ },
+ done: function (res, curr, count) {
+ if (res.code === 403) {
+ top.location.href = baseUrl + "/";
+ }
+ if (res.code === 200) {
+ locData = res.data;
+ sourceData = [];
+ if (res.data && res.data.length > 0) {
+ res.data.map(function (item) {
+ var obj = {
+ anfme: item.anfme,
+ id: item.id,
+ matnr: item.matnr,
+ supplier: item.supplier,
+ mnemonic: item.mnemonic,
+ warehouse: item.warehouse,
+ warehouseName: item.warehouseName,
+ maktx: item.maktx,
+ lgnum: item.lgnum,
+ type: item.type,
+ }
+ sourceData.push(obj);
+ });
+ }
+ }
+ }
+ });
+
+ // 椤甸潰淇敼
+ table.on('edit(stockOut)', function (obj) {
+ if (obj.field === 'anfme') {
+ if (isNaN(obj.value)) {
+ layer.msg("璇疯緭鍏ユ暟瀛�");
+ locDetlTableIns.reload();
+ }
+ // 鍗曞厓鏍肩紪杈戜箣鍓嶇殑鍊艰繘琛屾瘮杈�
+ for (var i = 0; i < sourceData.length; i++) {
+ if (obj.data.id == sourceData[i].id) {
+ if (Number(obj.value) > sourceData[i].anfme) {
+ layer.msg("鏁伴噺涓嶅彲澶т簬搴撳瓨閲�");
+ locDetlTableIns.reload();
+ }
+ }
+ }
+ if (obj.value <= 0) {
+ layer.msg("鏁伴噺涓嶅彲灏忎簬绛変簬闆�");
+ locDetlTableIns.reload();
+ }
+ }
+ });
+ });
+
+ /* 鍚姩鍑哄簱 */
+ function outbound() {
+ var checkStatus = table.checkStatus('stockOut');
+ var checkData = checkStatus.data;
+ var obj = {
+ list: checkData,
+ supplier: orderData.fbillNo,
+ }
+ if (checkData.length > 0) {
+ $.ajax({
+ url: baseUrl + "/outStock/locNormal1",
+ headers: {'token': localStorage.getItem('token')},
+ contentType: 'application/json;charset=UTF-8',
+ data: JSON.stringify(obj),
+ method: 'POST',
+ traditional: true,
+ success: function (res) {
+ if (res.code === 200) {
+ parent.closeDetail(res.msg);
+ parent.tableReload();
+ } else if (res.code === 403) {
+ top.location.href = baseUrl + "/";
+ } else {
+ layer.msg(res.msg)
+ }
+ }
+ })
+ } else {
+ layer.msg("璇烽�夋嫨闇�瑕佸嚭搴撶墿鏂�");
+ return;
+ }
+ }
+
+ function onSearch() {
+ var mnemonic = $("#mnemonic").val();
+ locDetlTableIns.reload({
+ where: {
+ mnemonic: mnemonic,
+ }
+ });
+ }
+
+ function reload() {
+ var mnemonic = ""
+ $("#mnemonic").val(mnemonic);
+ locDetlTableIns.reload({
+ where: {
+ mnemonic: mnemonic,
+ }
+ });
+ }
+
+ $('body').keydown(function () {
+ if (event.keyCode === 13) {
+ onSearch();
+ }
+ });
+</script>
+</html>
\ No newline at end of file
--
Gitblit v1.9.1