From 430ab98c6225a276bab44c5eebb304fc6206cb73 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期三, 25 九月 2024 16:03:48 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/ERP_override
---
north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java | 847 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 847 insertions(+), 0 deletions(-)
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java b/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
new file mode 100644
index 0000000..e415ab2
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/service/mm/FinishedGoodsInventoryService.java
@@ -0,0 +1,847 @@
+package com.example.erp.service.mm;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.example.erp.dto.mm.FinishedOperateLogDTO;
+import com.example.erp.entity.mm.FinishedGoodsInventory;
+import com.example.erp.entity.mm.FinishedOperateLog;
+import com.example.erp.entity.pp.FlowCard;
+import com.example.erp.entity.sd.DeliveryDetail;
+import com.example.erp.entity.sd.Order;
+import com.example.erp.entity.sd.OrderDetail;
+import com.example.erp.entity.userInfo.Log;
+import com.example.erp.entity.userInfo.SysError;
+import com.example.erp.mapper.mm.BasicWarehouseTypeMapper;
+import com.example.erp.mapper.mm.FinishedGoodsInventoryMapper;
+import com.example.erp.mapper.mm.FinishedOperateLogMapper;
+import com.example.erp.mapper.sd.OrderDetailMapper;
+import com.example.erp.mapper.sd.OrderMapper;
+import com.example.erp.service.userInfo.LogService;
+import com.example.erp.service.userInfo.SysErrorService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.transaction.interceptor.TransactionAspectSupport;
+
+import java.sql.SQLException;
+import java.sql.Wrapper;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.util.*;
+
+@Service
+@DS("mm")
+@Transactional(rollbackFor = Exception.class)
+public class FinishedGoodsInventoryService {
+ @Autowired
+ FinishedGoodsInventoryMapper finishedGoodsInventoryMapper;
+ @Autowired
+ FinishedOperateLogMapper finishedOperateLogMapper;
+ @Autowired
+ BasicWarehouseTypeMapper basicWarehouseTypeMapper;
+ @Autowired
+ OrderDetailMapper orderDetailMapper;
+ @Autowired
+ OrderMapper orderMapper;
+ @Autowired
+ SysErrorService sysErrorService;
+ @Autowired
+ LogService logService;
+
+ public Map<String, Object> defaultDateFinishedGoodsInventory(Integer pageNum, Integer pageSize, FinishedGoodsInventory finishedGoodsInventory) {
+ Integer offset = (pageNum - 1) * pageSize;
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", finishedGoodsInventoryMapper.defaultfinishedGoods(offset, pageSize, finishedGoodsInventory));
+ map.put("total", finishedGoodsInventoryMapper.getPageTotal(offset, pageSize, finishedGoodsInventory));
+ return map;
+ }
+
+ public Map<String, Object> getSelectWarehousing(Integer pageNum, Integer pageSize, FlowCard flowCard) {
+ Integer offset = (pageNum - 1) * pageSize;
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", finishedGoodsInventoryMapper.getSelectWarehousing(offset, pageSize, flowCard));
+ map.put("total", finishedGoodsInventoryMapper.getSelectWarehousingPageTotal(offset, pageSize, flowCard));
+
+ return map;
+ }
+
+ public String addSelectWarehousing(Map<String,Object> object) {
+ String saveState = "true";
+ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+ try {
+ //瀹氫箟鍓嶇浼犺緭鐨勬暟鎹�
+ String storageRegion = "";
+ String remark = "";
+ String container = "";
+ if (object.get("remark") != null) {
+ remark = object.get("remark").toString();
+ }
+ if (object.get("storageRegion") != null) {
+ storageRegion = object.get("storageRegion").toString();
+ }
+ if (object.get("container") != null) {
+ container = object.get("container").toString();
+ }
+
+ String userName = "";
+ String userId = "";
+ if (object.get("userName") != null) {
+ userName = object.get("userName").toString();
+ }
+ if (object.get("userId") != null) {
+ userId = object.get("userId").toString();
+ }
+ Log log = new Log();
+ log.setOperator(userName);
+ log.setOperatorId(userId);
+ log.setContent(object.toString());
+ log.setFunction("addSelectWarehousing鍏ュ簱");
+ logService.saveLog(log);
+
+ //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+ List<FlowCard> flowCardlist = JSONArray.parseArray(JSONObject.toJSONString(object.get("flowCard")), FlowCard.class);
+ if (!flowCardlist.isEmpty()){
+ for (FlowCard flowCard : flowCardlist) {
+ //鑾峰彇鍗曞彿
+ String oddNumber= orderNumberSetting("鍏ュ簱");
+ //娣诲姞鍑哄叆搴撹褰�
+ finishedOperateLogMapper.insertIntFinishedOperateLog(flowCard,userName,oddNumber,container);
+ Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber());
+ Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(flowCard.getOrder().getOrderId());
+ Integer ordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(flowCard.getOrder().getOrderId());
+ FlowCard flowCard1=finishedGoodsInventoryMapper.findFlowCard(flowCard);
+ //鍒ゆ柇搴撳瓨鏁版槸鍚﹀ぇ浜庢湭鍏ュ簱鏁�
+ if(flowCard1.getReceivedQuantity()+flowCard.getInventoryQuantity()<=flowCard1.getInventoryQuantity()){
+ /*System.out.println("璁㈠崟鎬绘暟:" + ordersum + "宸插叆搴撴暟閲忥細" + ordernumbersum + "鍑嗗鍏ュ簱鏁伴噺" + flowCard.getInventoryQuantity());*/
+ if (finishedGoodsInventorycount > 0) {
+ //淇敼搴撳瓨琛ㄥ叆搴撴暟閲�
+ finishedGoodsInventoryMapper.updateInventory(flowCard,storageRegion, remark);
+ //淇敼娴佺▼鍗¤〃鍏ュ簱鏁伴噺
+ finishedGoodsInventoryMapper.updateflowcard(flowCard);
+ //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),1);
+ //淇敼璁㈠崟鏄庣粏琛ㄥ叆搴撴暟閲�
+ finishedGoodsInventoryMapper.updateIntOrderNumberConut(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(), Long.valueOf(flowCard.getInventoryQuantity()));
+ //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍏ュ簱
+ if (ordersum == (ordernumbersum + flowCard.getInventoryQuantity())) {
+ //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),2);
+ }
+ } else {
+ if (finishedGoodsInventoryMapper.insertFinishedGoodsInventory(flowCard, storageRegion, remark)) {
+ //淇敼娴佺▼鍗¤〃鍏ュ簱鏁伴噺
+ finishedGoodsInventoryMapper.updateflowcard(flowCard);
+ //淇敼璁㈠崟鏄庣粏琛ㄥ叆搴撴暟閲�
+ finishedGoodsInventoryMapper.updateIntOrderNumberConut(flowCard.getOrder().getOrderId(),flowCard.getOrderNumber(), Long.valueOf(flowCard.getInventoryQuantity()));
+ if (ordersum == (ordernumbersum + flowCard.getInventoryQuantity())) {
+ //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),2);
+ }else{
+ //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(flowCard.getOrder().getOrderId(),1);
+ }
+
+
+ }
+ }
+ }else{
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ return "false1";
+ }
+
+
+ }
+ }else{
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ return "false2";
+ }
+
+ } catch (Exception e) {
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ //灏嗗紓甯镐紶鍏ユ暟鎹簱
+ SysError sysError = new SysError();
+ sysError.setError(e+Arrays.toString(e.getStackTrace()));
+ sysError.setFunc("addSelectWarehousing");
+ sysErrorService.insert(sysError);
+ saveState = "false";
+
+ }
+
+ return saveState;
+
+ }
+
+
+ public Map<String, Object> getSelectDeliveryDetail(Integer pageNum, Integer pageSize, OrderDetail orderDetail) {
+ Integer offset = (pageNum - 1) * pageSize;
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", finishedGoodsInventoryMapper.getSelectDeliveryDetail(offset, pageSize, orderDetail));
+ map.put("total", finishedGoodsInventoryMapper.getSelectDeliveryDetailPageTotal(offset, pageSize, orderDetail));
+ return map;
+ }
+
+
+ public String addDeliveryDetail(Map<String,Object> object) {
+ String saveState = "true";
+ //璁剧疆鍥炴粴鐐�
+ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+ try {
+ String userName = "";
+ String userId = "";
+ if (object.get("userName") != null) {
+ userName = object.get("userName").toString();
+ }
+ if (object.get("userId") != null) {
+ userId = object.get("userId").toString();
+ }
+ Log log = new Log();
+ log.setOperator(userName);
+ log.setOperatorId(userId);
+ log.setContent(object.toString());
+ log.setFunction("addDeliveryDetail鍑哄簱");
+ logService.saveLog(log);
+ //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+ List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), OrderDetail.class);
+ if (!orderDetaillist.isEmpty()){
+ for (OrderDetail orderDetail : orderDetaillist) {
+ //鑾峰彇鍗曞彿
+ String oddNumber= orderNumberSetting("鍑哄簱");
+ //娣诲姞鍑哄叆搴撹褰�
+ finishedOperateLogMapper.insertOutFinishedOperateLog(orderDetail,userName,oddNumber);
+ Integer finishedGoodsInventorycount = finishedGoodsInventoryMapper.findOrderNumberdcount(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber());
+
+
+ Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getDeliveryDetail().getOrderId());
+ Integer orderNumberdsum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getDeliveryDetail().getOrderId());
+
+ Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(orderDetail.getDeliveryDetail().getDeliveryId());
+ Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(orderDetail.getDeliveryDetail().getDeliveryId(),0);
+ if(deliverydetailsum==null){
+ deliverydetailsum=0;
+ }
+
+ DeliveryDetail deliveryDetail=finishedGoodsInventoryMapper.findDeliverydetail(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId());
+ /*System.out.println("璁㈠崟鎬绘暟:" + ordersum + "璁㈠崟搴撳瓨鏁帮細" + orderNumberdsum + "鍑嗗鍑哄簱鏁伴噺" +
+ orderDetail.getWarehouseNum()+ "鍙戣揣鏁伴噺" + orderDetail.getDeliveryDetail().getQuantity()+ "鍙戣揣鎬绘暟" +
+ deliverysum+ "宸插彂鏁伴噺" + deliverydetailsum);*/
+ //鍒ゆ柇鍙戣揣鍗曠殑搴撳瓨鏄惁瀛樺湪
+ if (finishedGoodsInventorycount > 0) {
+ //鍒ゆ柇鍙戣揣鍗曟槸鍚﹀凡鍑哄簱
+ if(deliveryDetail==null){
+ if(orderDetail.getWarehouseNum()>=orderDetail.getDeliveryDetail().getQuantity()){
+ //淇敼搴撳瓨琛ㄥ簱瀛樻暟閲�
+ finishedGoodsInventoryMapper.updateInventoryInventoryOut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
+ //淇敼鍙戣揣鏄庣粏琛ㄧ姸鎬�
+ finishedGoodsInventoryMapper.updateDeliveryDetailState(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getDeliveryId(),0);
+ //淇敼鍙戣揣琛ㄧ姸鎬�
+ finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),1);
+ //淇敼璁㈠崟鏄庣粏琛ㄥ彂璐ф暟閲�
+ finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getDeliveryDetail().getOrderId(),orderDetail.getDeliveryDetail().getOrderNumber(),orderDetail.getDeliveryDetail().getQuantity());
+ //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
+ finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),1);
+ //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍙戣揣
+ if (orderNumberdsum == orderDetail.getWarehouseNum()) {
+ //if (ordersum == (orderDeliveryQuantitySum + orderDetail.getWarehouseNum())) {
+ //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
+ finishedGoodsInventoryMapper.updateOrderDeliveryState(orderDetail.getDeliveryDetail().getOrderId(),2);
+ }
+ if (deliverysum==deliverydetailsum+orderDetail.getDeliveryDetail().getQuantity()) {
+ //淇敼鍙戣揣琛ㄧ姸鎬�
+ finishedGoodsInventoryMapper.updateDeliveryDeliveryState(orderDetail.getDeliveryDetail().getDeliveryId(),2);
+ }
+ }
+ }else{
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ return "false1";
+ }
+
+
+ }else{
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ return "false2";
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ //灏嗗紓甯镐紶鍏ユ暟鎹簱
+ SysError sysError = new SysError();
+ sysError.setError(e+Arrays.toString(e.getStackTrace()));
+ sysError.setFunc("addDeliveryDetail");
+ sysErrorService.insert(sysError);
+ saveState = "false";
+
+ }
+ return saveState;
+
+ }
+
+ public Map<String, Object> getSelectAllocate(Integer pageNum, Integer pageSize, OrderDetail orderDetail) {
+ Integer offset = (pageNum - 1) * pageSize;
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", finishedGoodsInventoryMapper.getSelectAllocate(offset, pageSize, orderDetail));
+ map.put("total", finishedGoodsInventoryMapper.getSelectAllocatePageTotal(offset, pageSize, orderDetail));
+ map.put("type", basicWarehouseTypeMapper.getBasicWarehouseTypeTakeOut());
+ map.put("types", basicWarehouseTypeMapper.getBasicWarehouseTypeRework());
+ return map;
+ }
+
+ public Boolean updateFinishedGoodsInventoryAllocate(Map<String,Object> object) {
+ boolean saveState = true;
+ //璁剧疆鍥炴粴鐐�
+ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+ try {
+ String userName = "";
+ String userId = "";
+ if (object.get("userName") != null) {
+ userName = object.get("userName").toString();
+ }
+ if (object.get("userId") != null) {
+ userId = object.get("userId").toString();
+ }
+ Log log = new Log();
+ log.setOperator(userName);
+ log.setOperatorId(userId);
+ log.setContent(object.toString());
+ log.setFunction("updateFinishedGoodsInventoryAllocate璋冩嫧");
+ logService.saveLog(log);
+ //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+ List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), OrderDetail.class);
+ if (!orderDetaillist.isEmpty()){
+ for (OrderDetail orderDetail : orderDetaillist) {
+ Integer oldordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getFinishedGoodsInventory().getOrderId());
+ Integer oldordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getFinishedGoodsInventory().getOrderId());
+
+ Integer newordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getOrderId());
+ Integer newordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getOrderId());
+
+ //鑾峰彇鍗曞彿
+ String oddNumber= orderNumberSetting("璋冩嫧");
+ //娣诲姞璋冩嫧璁板綍
+ finishedOperateLogMapper.insertFinishedOperateLogAllocate(orderDetail,userName,oddNumber);
+ //淇敼鍘熻鍗曠殑搴撳瓨鏁伴噺
+ finishedGoodsInventoryMapper.updateInventoryquantityAllocateOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
+ //淇敼璋冩嫧鍚庤鍗曠殑搴撳瓨鏁伴噺
+ finishedGoodsInventoryMapper.updateInventoryquantityAllocateInt(orderDetail.getOrderId(),orderDetail.getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
+ //淇敼鍘熻鍗曟槑缁嗚〃鍙戣揣鏁伴噺
+ finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
+ //淇敼璋冩嫧鏂拌鍗曟槑缁嗚〃鍙戣揣鏁伴噺
+ finishedGoodsInventoryMapper.updateIntOrderNumberConut(orderDetail.getOrderId(),orderDetail.getOrderNumber(), orderDetail.getQuantity());
+ if (newordersum==newordernumbersum+orderDetail.getQuantity()){
+ //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(orderDetail.getOrderId(),2);
+ }
+ if (Objects.equals(oldordersum, oldordernumbersum)){
+ //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(orderDetail.getFinishedGoodsInventory().getOrderId(),1);
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ //灏嗗紓甯镐紶鍏ユ暟鎹簱
+ SysError sysError = new SysError();
+ sysError.setError(e+Arrays.toString(e.getStackTrace()));
+ sysError.setFunc("updateFinishedGoodsInventoryAllocate");
+ sysErrorService.insert(sysError);
+ saveState = false;
+
+ }
+ return saveState;
+
+
+ }
+
+ public Map<String, Object> getSelectAllocateFinishedOperateLog(Integer pageNum, Integer pageSize,List<String> selectDate, FinishedOperateLog finishedOperateLog) {
+ Integer offset = (pageNum - 1) * pageSize;
+
+ String endDate = LocalDate.now().toString();
+ String startDate = LocalDate.now().minusDays(15).toString();
+ if(selectDate !=null && selectDate.size()==2){
+ if(!selectDate.get(0).isEmpty()){
+ startDate = selectDate.get(0);
+ }
+ if(!selectDate.get(1).isEmpty()){
+ endDate = selectDate.get(1);
+ }
+ }
+
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", finishedOperateLogMapper.getselectAllocateFinishedOperateLog(offset, pageSize,startDate,endDate, finishedOperateLog));
+ map.put("total", finishedOperateLogMapper.getselectAllocateFinishedOperateLogPageTotal(offset, pageSize,startDate,endDate, finishedOperateLog));
+ List<String> list = new ArrayList<>();
+ list.add(startDate);
+ list.add(endDate);
+ map.put("selectDate",list);
+ return map;
+ }
+
+ public Boolean updateFinishedGoodsInventoryTakeOut(Map<String,Object> object) {
+ boolean saveState = true;
+ //璁剧疆鍥炴粴鐐�
+ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+ try {
+ String userName = "";
+ String userId = "";
+ if (object.get("userName") != null) {
+ userName = object.get("userName").toString();
+ }
+ if (object.get("userId") != null) {
+ userId = object.get("userId").toString();
+ }
+
+ String operateType = "";
+ String remarks = "";
+ if (object.get("remarks") != null) {
+ remarks = object.get("remarks").toString();
+ }
+ if (object.get("operateType") != null) {
+ operateType = object.get("operateType").toString();
+ }
+ Log log = new Log();
+ log.setOperator(userName);
+ log.setOperatorId(userId);
+ log.setContent(object.toString());
+ log.setFunction("updateFinishedGoodsInventoryTakeOut棰嗗嚭");
+ logService.saveLog(log);
+ //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+ List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), OrderDetail.class);
+ if (!orderDetaillist.isEmpty()){
+ for (OrderDetail orderDetail : orderDetaillist) {
+ Integer oldordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getFinishedGoodsInventory().getOrderId());
+ Integer oldordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getFinishedGoodsInventory().getOrderId());
+
+ //鑾峰彇鍗曞彿
+ String oddNumber= orderNumberSetting("棰嗗嚭");
+ //娣诲姞棰嗗嚭璁板綍
+ finishedOperateLogMapper.insertFinishedOperateLogTakeOut(orderDetail,userName,oddNumber,operateType,remarks);
+ //淇敼搴撳瓨鏁伴噺
+ finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
+ //淇敼璁㈠崟鏄庣粏琛ㄦ暟閲�
+ finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
+ if (Objects.equals(oldordersum, oldordernumbersum)){
+ //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(orderDetail.getFinishedGoodsInventory().getOrderId(),1);
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ //灏嗗紓甯镐紶鍏ユ暟鎹簱
+ SysError sysError = new SysError();
+ sysError.setError(e+Arrays.toString(e.getStackTrace()));
+ sysError.setFunc("updateFinishedGoodsInventoryTakeOut");
+ sysErrorService.insert(sysError);
+ saveState = false;
+
+ }
+ return saveState;
+
+ }
+
+
+ public Map<String, Object> getSelectOperateRecord(Integer pageNum, Integer pageSize, List<String> selectDate, FinishedOperateLog finishedOperateLog) {
+ Integer offset = (pageNum-1)*pageSize;
+ String endDate = LocalDate.now().toString();
+ String startDate = LocalDate.now().minusDays(15).toString();
+ if(selectDate !=null && selectDate.size()==2){
+ if(!selectDate.get(0).isEmpty()){
+ startDate = selectDate.get(0);
+ }
+ if(!selectDate.get(1).isEmpty()){
+ endDate = selectDate.get(1);
+ }
+ }
+
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", finishedOperateLogMapper.getSelectOperateRecord(offset, pageSize,startDate, endDate, finishedOperateLog));
+ map.put("total", finishedOperateLogMapper.getSelectOperateRecordLogPageTotal(offset, pageSize,startDate, endDate, finishedOperateLog));
+ List<String> list = new ArrayList<>();
+ list.add(startDate);
+ list.add(endDate);
+ map.put("selectDate",list);
+ return map;
+ }
+
+
+ public Boolean updateFinishedGoodsInventoryRework(Map<String,Object> object) {
+ boolean saveState = true;
+ //璁剧疆鍥炴粴鐐�
+ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+ try {
+ String userName = "";
+ String userId = "";
+ if (object.get("userName") != null) {
+ userName = object.get("userName").toString();
+ }
+ if (object.get("userId") != null) {
+ userId = object.get("userId").toString();
+ }
+
+ String operateType = "";
+ String remarks = "";
+ if (object.get("remarks") != null) {
+ remarks = object.get("remarks").toString();
+ }
+ if (object.get("operateType") != null) {
+ operateType = object.get("operateType").toString();
+ }
+ //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+ List<OrderDetail> orderDetaillist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), OrderDetail.class);
+ if (!orderDetaillist.isEmpty()){
+ for (OrderDetail orderDetail : orderDetaillist) {
+ Integer oldordersum = finishedGoodsInventoryMapper.findOrderQuantity(orderDetail.getFinishedGoodsInventory().getOrderId());
+ Integer oldordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(orderDetail.getFinishedGoodsInventory().getOrderId());
+
+ //鑾峰彇鍗曞彿
+ String oddNumber= orderNumberSetting("杩斿伐");
+ //娣诲姞棰嗗嚭璁板綍
+ finishedOperateLogMapper.insertFinishedOperateLogRework(orderDetail,userName,oddNumber,operateType,remarks);
+ //淇敼搴撳瓨鏁伴噺
+ finishedGoodsInventoryMapper.updateInventoryquantityOut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
+ //淇敼璁㈠崟鏄庣粏琛ㄦ暟閲�
+ finishedGoodsInventoryMapper.updateOutOrderNumberConut(orderDetail.getFinishedGoodsInventory().getOrderId(),orderDetail.getFinishedGoodsInventory().getOrderNumber(), Math.toIntExact(orderDetail.getQuantity()));
+ if (Objects.equals(oldordersum, oldordernumbersum)){
+ //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(orderDetail.getFinishedGoodsInventory().getOrderId(),1);
+ }
+ }
+ }
+
+ } catch (Exception e) {
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ //灏嗗紓甯镐紶鍏ユ暟鎹簱
+ SysError sysError = new SysError();
+ sysError.setError(e+Arrays.toString(e.getStackTrace()));
+ sysError.setFunc("updateFinishedGoodsInventoryRework");
+ sysErrorService.insert(sysError);
+ saveState = false;
+
+ }
+ return saveState;
+
+ }
+
+
+ public Boolean updateFinishedGoodsInventoryToExamine(Map<String,Object> object,String type) {
+ boolean saveState = true;
+ //璁剧疆鍥炴粴鐐�
+ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+ try {
+ String userName = "";
+ String userId = "";
+ if (object.get("userName") != null) {
+ userName = object.get("userName").toString();
+ }
+ if (object.get("userId") != null) {
+ userId = object.get("userId").toString();
+ }
+ Log log = new Log();
+ log.setOperator(userName);
+ log.setOperatorId(userId);
+ log.setContent(object.toString());
+ //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+ List<FinishedOperateLog> finishedOperateLogslist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), FinishedOperateLog.class);
+ if (!finishedOperateLogslist.isEmpty()){
+ for (FinishedOperateLog finishedOperateLog : finishedOperateLogslist) {
+ if(Objects.equals(type, "瀹℃牳")){
+ //瀹℃牳淇敼棰嗗嚭璁板綍
+ finishedOperateLogMapper.updateToExamine(finishedOperateLog,userName,"宸插鏍�");
+ //瀹℃牳淇敼搴撳瓨鏁伴噺
+ finishedGoodsInventoryMapper.updateInventoryInventoryOut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity()));
+ log.setFunction("updateFinishedGoodsInventoryToExamine瀹℃牳");
+ } else if (Objects.equals(type, "鍙嶅")) {
+ //瀹℃牳淇敼棰嗗嚭璁板綍
+ finishedOperateLogMapper.updateToExamine(finishedOperateLog,userName,"鏈鏍�");
+ //瀹℃牳淇敼搴撳瓨鏁伴噺
+ finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),Math.toIntExact(finishedOperateLog.getQuantity()));
+ log.setFunction("updateFinishedGoodsInventoryToExamine鍙嶅");
+ }
+
+ }
+ }
+ logService.saveLog(log);
+
+ } catch (Exception e) {
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ //灏嗗紓甯镐紶鍏ユ暟鎹簱
+ SysError sysError = new SysError();
+ sysError.setError(e+Arrays.toString(e.getStackTrace()));
+ sysError.setFunc("updateFinishedGoodsInventoryToExamine");
+ sysErrorService.insert(sysError);
+ saveState = false;
+
+ }
+ return saveState;
+
+ }
+
+ public Boolean cancelFinishedGoodsInventoryToExamine(Map<String,Object> object) {
+ boolean saveState = true;
+ //璁剧疆鍥炴粴鐐�
+ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+ try {
+ String userName = "";
+ String userId = "";
+ if (object.get("userName") != null) {
+ userName = object.get("userName").toString();
+ }
+ if (object.get("userId") != null) {
+ userId = object.get("userId").toString();
+ }
+ Log log = new Log();
+ log.setOperator(userName);
+ log.setOperatorId(userId);
+ log.setContent(object.toString());
+ log.setFunction("cancelFinishedGoodsInventoryToExamine浣滃簾");
+ logService.saveLog(log);
+ //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+ List<FinishedOperateLog> finishedOperateLogslist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), FinishedOperateLog.class);
+ if (!finishedOperateLogslist.isEmpty()){
+ for (FinishedOperateLog finishedOperateLog : finishedOperateLogslist) {
+ finishedGoodsInventoryMapper.updateInventoryquantityInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(), Math.toIntExact(finishedOperateLog.getQuantity()));
+ finishedGoodsInventoryMapper.updateIntOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(), Long.valueOf(finishedOperateLog.getQuantity()));
+ finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"宸蹭綔搴�");
+
+ }
+ }
+
+ } catch (Exception e) {
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ //灏嗗紓甯镐紶鍏ユ暟鎹簱
+ SysError sysError = new SysError();
+ sysError.setError(e+Arrays.toString(e.getStackTrace()));
+ sysError.setFunc("cancelFinishedGoodsInventoryToExamine");
+ sysErrorService.insert(sysError);
+ saveState = false;
+
+ }
+ return saveState;
+
+ }
+
+
+ public Map<String, Object> getSelectStorageRecord(Integer pageNum, Integer pageSize, List<String> selectDate,String type, FinishedOperateLog finishedOperateLog) {
+ Integer offset = (pageNum-1)*pageSize;
+ String endDate = LocalDate.now().toString();
+ String startDate = LocalDate.now().minusDays(15).toString();
+ if(selectDate !=null && selectDate.size()==2){
+ if(!selectDate.get(0).isEmpty()){
+ startDate = selectDate.get(0);
+ }
+ if(!selectDate.get(1).isEmpty()){
+ endDate = selectDate.get(1);
+ }
+ }
+
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", finishedOperateLogMapper.getSelectStorageRecord(offset, pageSize,startDate, endDate,type, finishedOperateLog));
+ map.put("total", finishedOperateLogMapper.getSelectStorageRecordLogPageTotal(offset, pageSize,startDate, endDate,type, finishedOperateLog));
+ List<String> list = new ArrayList<>();
+ list.add(startDate);
+ list.add(endDate);
+ map.put("selectDate",list);
+ return map;
+ }
+
+ public Map<String, Object> getSelectFinishedOperateLogReport(Integer pageNum, Integer pageSize, List<String> selectDate, FinishedOperateLog finishedOperateLog) {
+ Integer offset = (pageNum-1)*pageSize;
+ String endDate = LocalDate.now().toString();
+ String startDate = LocalDate.now().minusDays(15).toString();
+ if(selectDate !=null && selectDate.size()==2){
+ if(!selectDate.get(0).isEmpty()){
+ startDate = selectDate.get(0);
+ }
+ if(!selectDate.get(1).isEmpty()){
+ endDate = selectDate.get(1);
+ }
+ }
+
+ Map<String, Object> map = new HashMap<>();
+ map.put("data", finishedOperateLogMapper.getSelectFinishedOperateLogReport(offset, pageSize,startDate, endDate, finishedOperateLog));
+ map.put("total", finishedOperateLogMapper.getSelectFinishedOperateLogReportPageTotal(offset, pageSize,startDate, endDate, finishedOperateLog));
+ List<String> list = new ArrayList<>();
+ list.add(startDate);
+ list.add(endDate);
+ map.put("selectDate",list);
+ return map;
+ }
+
+
+ public Boolean cancelFinishedGoodsInventoryStorage(Map<String,Object> object) {
+ boolean saveState = true;
+ //璁剧疆鍥炴粴鐐�
+ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+ try {
+ Log log = new Log();
+ log.setContent(object.toString());
+ //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+ List<FinishedOperateLog> finishedOperateLogslist = JSONArray.parseArray(JSONObject.toJSONString(object.get("orderDetail")), FinishedOperateLog.class);
+ if (!finishedOperateLogslist.isEmpty()){
+ for (FinishedOperateLog finishedOperateLog : finishedOperateLogslist) {
+ Integer ordersum = finishedGoodsInventoryMapper.findOrderQuantity(finishedOperateLog.getOrderId());
+ Integer ordernumbersum = finishedGoodsInventoryMapper.findOrderNumberdsum(finishedOperateLog.getOrderId());
+ Integer deliverysum = finishedGoodsInventoryMapper.findDeliveryQuantity(finishedOperateLog.getOperationOrderNumber());
+ Integer deliverydetailsum = finishedGoodsInventoryMapper.findDeliverydetailsum(finishedOperateLog.getOperationOrderNumber(),1);
+
+ if(Objects.equals(finishedOperateLog.getOperateType(), "鍏ュ簱")){
+ //淇敼璁板綍琛�
+ finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"宸蹭綔搴�");
+ //淇敼搴撳瓨琛ㄥ叆搴撴暟閲�
+ finishedGoodsInventoryMapper.updateInventoryOut(finishedOperateLog);
+ if(finishedOperateLog.getProcessId()!=null){
+ //淇敼娴佺▼鍗¤〃鍏ュ簱鏁伴噺
+ finishedGoodsInventoryMapper.updateflowcardOut(finishedOperateLog);
+ }
+
+ //淇敼璁㈠崟鏄庣粏琛ㄥ叆搴撴暟閲�
+ finishedGoodsInventoryMapper.updateOutOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity());
+ //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍏ュ簱
+ if (Objects.equals(ordersum, ordernumbersum)) {
+ //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),1);
+ }
+ if (ordernumbersum-finishedOperateLog.getQuantity()==0) {
+ //淇敼璁㈠崟琛ㄥ叆搴撶姸鎬�
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(finishedOperateLog.getOrderId(),0);
+ }
+ log.setFunction("cancelFinishedGoodsInventoryStorage鍏ュ簱");
+
+ }else if(Objects.equals(finishedOperateLog.getOperateType(), "鍑哄簱")){
+ //淇敼璁板綍琛�
+ finishedOperateLogMapper.updateFinishedOperateLogState(finishedOperateLog,"宸蹭綔搴�");
+ //淇敼搴撳瓨琛ㄥ簱瀛樻暟閲�
+ finishedGoodsInventoryMapper.updateInventoryInventoryInt(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getQuantity());
+ //淇敼鍙戣揣鏄庣粏琛ㄧ姸鎬�
+ finishedGoodsInventoryMapper.updateDeliveryDetailState(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(),finishedOperateLog.getOperationOrderNumber(),1);
+ //淇敼鍙戣揣琛ㄧ姸鎬�
+ finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),1);
+ //淇敼璁㈠崟鏄庣粏琛ㄥ簱鍐呮暟閲�
+ finishedGoodsInventoryMapper.updateIntOrderNumberConut(finishedOperateLog.getOrderId(),finishedOperateLog.getOperationNumber(), Long.valueOf(finishedOperateLog.getQuantity()));
+ //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
+ finishedGoodsInventoryMapper.updateOrderDeliveryState(finishedOperateLog.getOrderId(),1);
+ //鍒ゆ柇璁㈠崟鏄惁鍏ㄩ儴鍙戣揣
+ if (ordersum==finishedOperateLog.getQuantity()+ordernumbersum){
+ //淇敼璁㈠崟琛ㄥ彂璐х姸鎬�
+ finishedGoodsInventoryMapper.updateOrderDeliveryState(finishedOperateLog.getOrderId(),0);
+
+ }
+ if (deliverysum==finishedOperateLog.getQuantity()+deliverydetailsum) {
+ //淇敼鍙戣揣琛ㄧ姸鎬�
+ finishedGoodsInventoryMapper.updateDeliveryDeliveryState(finishedOperateLog.getOperationOrderNumber(),0);
+ }
+ log.setFunction("cancelFinishedGoodsInventoryStorage鍑哄簱");
+
+ }
+
+ }
+ }
+ logService.saveLog(log);
+
+ } catch (Exception e) {
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ //灏嗗紓甯镐紶鍏ユ暟鎹簱
+ SysError sysError = new SysError();
+ sysError.setError(e+Arrays.toString(e.getStackTrace()));
+ sysError.setFunc("cancelFinishedGoodsInventoryStorage");
+ sysErrorService.insert(sysError);
+ saveState = false;
+
+ }
+ return saveState;
+
+ }
+
+ public List<FinishedOperateLogDTO> exportFinishedOperateLogReport(List<LocalDate> dates) {
+ return finishedOperateLogMapper.exportFinishedOperateLogReport(dates);
+ }
+
+
+ public Boolean oneClickStorage(String orderId,String userName) {
+ boolean saveState = true;
+ Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+ Log log = new Log();
+ log.setContent(orderId);
+ log.setOperator(userName);
+ log.setFunction("oneClickStorage鍏ュ簱:"+orderId);
+ logService.saveLog(log);
+ try {
+ String oddNumber= orderNumberSetting("鍏ュ簱");
+ Order order = orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",orderId));
+ if(order.getWarehousing()!=2){
+ List<OrderDetail> orderDetailList=finishedGoodsInventoryMapper.getSelectOrderDetail(orderId);
+ for (OrderDetail orderDetail:orderDetailList){
+ FinishedGoodsInventory finishedGoodsInventory = finishedGoodsInventoryMapper.findOrderNumberd(orderDetail.getOrderId(),orderDetail.getOrderNumber());
+ if(finishedGoodsInventory!=null){
+ finishedOperateLogMapper.updateOrderFinishedOperateLog(orderDetail,userName,oddNumber);
+ //淇敼搴撳瓨琛ㄥ叆搴撴暟閲�
+ finishedGoodsInventoryMapper.updateOrderInventory(orderDetail);
+ }else{
+ finishedGoodsInventoryMapper.insertOrderFinishedGoodsInventory(orderDetail);
+ }
+ finishedOperateLogMapper.insertOrderFinishedOperateLog(orderDetail,userName,oddNumber);
+ finishedGoodsInventoryMapper.updateOrderNumberConut(orderDetail.getOrderId(),orderDetail.getOrderNumber(),orderDetail.getQuantity());
+ }
+ finishedGoodsInventoryMapper.updateOrderWarehousingState(orderId,2);
+ }
+
+
+ } catch (Exception e) {
+ TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+ //灏嗗紓甯镐紶鍏ユ暟鎹簱
+ SysError sysError = new SysError();
+ sysError.setError(e+Arrays.toString(e.getStackTrace()));
+ sysError.setFunc("oneClickStorage");
+ sysErrorService.insert(sysError);
+ saveState = false;
+
+ }
+
+ return saveState;
+
+ }
+
+
+
+
+
+
+
+ public String orderNumberSetting(String type) {
+ //鏍规嵁绫诲瀷鑷姩鐢熸垚涓嶅悓鐨勬搷浣滃崟鍙�
+ String alias="";
+ if(Objects.equals(type, "鍏ュ簱")){
+ alias="RK";
+ }else if(Objects.equals(type, "鍑哄簱")){
+ alias="CK";
+ }else if(Objects.equals(type, "璋冩嫧")){
+ alias="DB";
+ }else if(Objects.equals(type, "棰嗗嚭")){
+ alias="LC";
+ }else if(Objects.equals(type, "杩斿伐")){
+ alias="FG";
+ }
+ //鏌ヨ褰撳ぉ鐨勬渶澶ф暟閲�
+ Integer maximum=finishedOperateLogMapper.getmaximum(type);
+ //璁剧疆涓や綅涓嶅琛�0
+ String formattedNumber = String.format("%02d", maximum+1);
+ //鏍煎紡鍖栧綋鍓嶆棩鏈�
+ Date currentDate = new Date();
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
+ String formattedDate = dateFormat.format(currentDate);
+ String oddNumbers = alias+formattedDate+formattedNumber;
+ return oddNumbers;
+ }
+
+
+
+
+
+
+
+}
--
Gitblit v1.8.0