From d5bb894f9be2e0a3b62d475b60b44f2ab138528c Mon Sep 17 00:00:00 2001 From: guoyujie <guoyujie@ng.com> Date: 星期四, 12 六月 2025 16:48:35 +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/MaterialInventoryService.java | 1107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 1,107 insertions(+), 0 deletions(-) diff --git a/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java b/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java new file mode 100644 index 0000000..46dc82b --- /dev/null +++ b/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java @@ -0,0 +1,1107 @@ +package com.example.erp.service.mm; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.example.erp.common.Constants; +import com.example.erp.dto.mm.FinishedOperateLogDTO; +import com.example.erp.entity.mm.*; +import com.example.erp.entity.pp.*; +import com.example.erp.entity.sd.Delivery; +import com.example.erp.entity.sd.DeliveryDetail; +import com.example.erp.entity.sd.OrderDetail; +import com.example.erp.entity.sd.OrderProcessDetail; +import com.example.erp.entity.userInfo.Log; +import com.example.erp.entity.userInfo.SysError; +import com.example.erp.exception.ServiceException; +import com.example.erp.mapper.mm.BasicWarehouseTypeMapper; +import com.example.erp.mapper.mm.MaterialInventoryMapper; +import com.example.erp.mapper.mm.MaterialLogMapper; +import com.example.erp.mapper.mm.MaterialStoreMapper; +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.time.LocalDateTime; +import java.util.List; +import java.util.ArrayList; + +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.*; +import java.util.stream.Collectors; + +@Service +@DS("mm") +@Transactional(rollbackFor = Exception.class) +public class MaterialInventoryService { + @Autowired + MaterialInventoryMapper materialInventoryMapper; + @Autowired + MaterialStoreMapper materialStoreMapper; + @Autowired + BasicWarehouseTypeMapper basicWarehouseTypeMapper; + @Autowired + SysErrorService sysErrorService; + @Autowired + LogService logService; + @Autowired + MaterialLogMapper materialLogMapper; + + public String saveMaterialOutbound(Map<String,Object> object) { + String saveState = "true"; + //璁剧疆鍥炴粴鐐� + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + String materialOutboundId = ""; + String oddNumber; + if (object.get("materialOutboundId") != null) { + materialOutboundId = object.get("materialOutboundId").toString(); + } + Log log = new Log(); + log.setOperatorId(object.get("userId").toString()); + log.setOperator(object.get("userName").toString()); + log.setContent(object.toString()); + try { + MaterialOutbound materialOutbound = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), MaterialOutbound.class); + List<MaterialOutboundDetail> materialOutboundDetailList = JSONArray.parseArray(JSONObject.toJSONString(object.get("materialOutboundDetail")), MaterialOutboundDetail.class); + //鏌ヨ鍑哄簱鍗曟槸鍚﹀瓨鍦� + Integer MaterialOutboundConut = materialInventoryMapper.getMaterialOutboundCount(materialOutboundId); + if (MaterialOutboundConut != 0) { + + List<MaterialOutboundDetail> materialOutboundDetailLists = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId); + if (!materialOutboundDetailLists.isEmpty()) { + for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) { + //杩樺師鐗╂枡搴撳瓨鏁� + materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); + if(materialOutboundDetail.getUseId()!=null){ + //杩樺師浼樺寲宸ョ▼搴撳瓨鏁� + materialInventoryMapper.updateMaterialInventoryAvailableOptInt(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); + }/*else{ + //杩樺師鐗╂枡搴撳瓨鏁� + materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); + }*/ + + } + } + //鍒犻櫎鏉愭枡鍑哄簱鏄庣粏鐨勬暟鎹� + materialInventoryMapper.deleteMaterialOutboundDetail(materialOutboundId); + materialInventoryMapper.updateMaterialOutbound(materialOutbound, materialOutboundId); + materialInventoryMapper.deleteMaterialLog(materialOutboundId); + oddNumber = materialOutboundId; + log.setFunction("saveMaterialOutbound淇敼:"+oddNumber); + } else { + //鑾峰彇鍗曞彿 + oddNumber = orderNumberSetting("鍑哄簱"); + //鏂板鏉愭枡鍑哄簱琛ㄦ暟鎹� + materialInventoryMapper.insertMaterialOutbound(materialOutbound, oddNumber); + log.setFunction("saveMaterialOutbound鏂板:"+oddNumber); + } + + //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼 + + if (!materialOutboundDetailList.isEmpty()) { + for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) { + MaterialInventory materialInventory = materialInventoryMapper.getMaterialInventoryById(materialOutboundDetail.getId()); + if(materialInventory.getAvailableQuantity()>=materialOutboundDetail.getOutboundQuantity()){ + Integer materialOutboundDetailMaximum = materialInventoryMapper.getMaterialOutboundDetailMaximum(oddNumber); + //鏂板鏉愭枡鍑哄簱鏄庣粏鏁版嵁 + materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1); + //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲� + materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); + String projectNo=""; + if(materialOutboundDetail.getUseId()!=null){ + projectNo = materialInventoryMapper.selectProjectNo(materialOutboundDetail.getUseId()); + //淇敼浼樺寲宸ョ▼琛ㄥ嚭搴撴暟閲� + materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); + + }/*else{ + //淇敼鐗╂枡搴撳瓨琛ㄥ嚭搴撴暟閲� + materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity()); + }*/ + String json=""; + MaterialStore materialStore=materialStoreMapper.getSelectMaterialStoreById(Long.valueOf(materialOutboundDetail.getMaterialCode())); + json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1); + MaterialLog materialLog=new MaterialLog(); + materialLog.setOperationOrderNumber(oddNumber); + materialLog.setOperationNumber(materialOutboundDetailMaximum + 1); + materialLog.setOperateType("鐗╂枡鍑哄簱"); + materialLog.setMaterialCode(Long.valueOf(materialOutboundDetail.getMaterialCode())); + materialLog.setMaterialName(convertString(json,"\"name\"")); + materialLog.setProducer(materialInventory.getProducer()); + materialLog.setUnit(convertString(json,"\"unit\"")); + materialLog.setWidth(convertDouble(json,"\"width\"")); + materialLog.setHeight(convertDouble(json,"\"height\"")); + materialLog.setThickness(convertDouble(json,"\"thickness\"")); + materialLog.setQuantity(materialOutboundDetail.getOutboundQuantity()); + materialLog.setSinglePieceArea(materialOutboundDetail.getSinglePieceArea()); + materialLog.setInventoryId(materialOutboundDetail.getId()); + materialLog.setInventoryArea(materialInventory.getInventoryArea()); + materialLog.setRemarks(materialOutboundDetail.getRemarks()); + materialLog.setProjectNo(projectNo); + materialLog.setOperator(object.get("userName").toString()); + materialLog.setOperateTime(LocalDate.now()); + materialLogMapper.insert(materialLog); + }else{ + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + return "false1"; + } + + + + + } + + } + logService.saveLog(log); + + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + //灏嗗紓甯镐紶鍏ユ暟鎹簱 + SysError sysError = new SysError(); + sysError.setError(e+Arrays.toString(e.getStackTrace())); + sysError.setFunc("saveMaterialOutbound"); + sysErrorService.insert(sysError); + saveState = "false"; + + } + return saveState; + + } + + public String saveMaterialInventory(Map<String,Object> object) { + String saveState = "true"; + //璁剧疆鍥炴粴鐐� + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + try { + Double singlePieceArea = 0.0; + Double totalArea = 0.0; + Long materialCode = 0L; + if (object.get("singlePieceArea") != null) { + singlePieceArea = Double.valueOf(object.get("singlePieceArea").toString()); + } + if (object.get("totalArea") != null) { + totalArea = Double.valueOf(object.get("totalArea").toString()); + } + if (object.get("materialCode") != null) { + materialCode = Long.valueOf(object.get("materialCode").toString()); + } + Log log = new Log(); + log.setOperatorId(object.get("userId").toString()); + log.setOperator(object.get("userName").toString()); + log.setContent(object.toString()); + + MaterialInventory materialInventory = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), MaterialInventory.class); + + + //鏌ヨ鐗╂枡鏄惁瀛樺湪 + List<MaterialInventory> MaterialInventoryCount; + if (materialInventory.getDateOfManufacture()!=null){ + MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(materialCode,materialInventory.getDateOfManufacture()); + }else{ + MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCountNull(materialCode); + } + + if(MaterialInventoryCount.size()==1){ + materialInventory.setId(MaterialInventoryCount.get(0).getId()); + if (materialInventory.getDateOfManufacture()!=null){ + materialInventoryMapper.updateMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory); + }else{ + materialInventoryMapper.updateMaterialInventoryNull(materialCode,singlePieceArea,totalArea,materialInventory); + } + log.setFunction("saveMaterialInventory淇敼"); + }else if(MaterialInventoryCount.isEmpty()) { + materialInventoryMapper.insertMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory); + log.setFunction("saveMaterialInventory鏂板"); + }else { + return "false1"; + } + + String json=""; + MaterialStore materialStore=materialStoreMapper.getSelectMaterialStoreById(materialCode); + json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1); + MaterialLog materialLog=new MaterialLog(); + if(materialInventory.getDateOfManufacture()!=null){ + materialLog.setOperationOrderNumber(materialInventory.getDateOfManufacture().toString()); + } + materialLog.setOperateType("鐗╂枡鏂板"); + materialLog.setMaterialCode(materialCode); + materialLog.setMaterialName(convertString(json,"\"name\"")); + materialLog.setProducer(materialInventory.getProducer()); + materialLog.setUnit(convertString(json,"\"unit\"")); + materialLog.setWidth(convertDouble(json,"\"width\"")); + materialLog.setHeight(convertDouble(json,"\"height\"")); + materialLog.setThickness(convertDouble(json,"\"thickness\"")); + materialLog.setQuantity(materialInventory.getInventoryQuantity()); + materialLog.setSinglePieceArea(singlePieceArea); + materialLog.setInventoryId(materialInventory.getId()); + materialLog.setInventoryArea(materialInventory.getInventoryArea()); + materialLog.setRemarks(materialInventory.getRemarks()); + materialLog.setOperator(object.get("userName").toString()); + materialLog.setOperateTime(LocalDate.now()); + materialLogMapper.insert(materialLog); + logService.saveLog(log); + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + //灏嗗紓甯镐紶鍏ユ暟鎹簱 + SysError sysError = new SysError(); + sysError.setError(e+Arrays.toString(e.getStackTrace())); + sysError.setFunc("saveMaterialInventory"); + sysErrorService.insert(sysError); + saveState = "false"; + + } + return saveState; + + } + + public Map<String, Object> getSelectMaterialInventoryDate(Integer pageNum, Integer pageSize, List<String> selectDate, MaterialInventory materialInventory) { + 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", materialInventoryMapper.getSelectMaterialInventoryDate(offset, pageSize,startDate, endDate, materialInventory)); + map.put("total", materialInventoryMapper.getSelectMaterialInventoryDatePageTotal(offset, pageSize,startDate, endDate, materialInventory)); + List<String> list = new ArrayList<>(); + list.add(startDate); + list.add(endDate); + map.put("selectDate",list); + return map; + } + + public Map<String, Object> getSelectMaterialInventoryEngineeringDate(Integer pageNum, Integer pageSize, List<String> selectDate, MaterialInventory materialInventory) { + 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", materialInventoryMapper.getSelectMaterialInventoryEngineeringDate(offset, pageSize,startDate, endDate, materialInventory)); + map.put("total", materialInventoryMapper.getSelectMaterialInventoryEngineeringDatePageTotal(offset, pageSize,startDate, endDate, materialInventory)); + List<String> list = new ArrayList<>(); + list.add(startDate); + list.add(endDate); + map.put("selectDate",list); + return map; + } + + public Map<String, Object> getSelectMaterialInventory(Integer pageNum, Integer pageSize, MaterialInventory materialInventory) { + Integer offset = (pageNum - 1) * pageSize; + + Map<String, Object> map = new HashMap<>(); + List<Long> ids=new ArrayList<>();; + if(materialInventory.getStockId()!=null && !materialInventory.getStockId().isEmpty()){ + List<String> result = StrUtil.split(materialInventory.getStockId(), '|'); + ids=result.stream().map(Long::valueOf).collect(Collectors.toList()); + } + map.put("data", materialInventoryMapper.getSelectMaterialInventory(offset, pageSize, materialInventory,ids)); + map.put("total", materialInventoryMapper.getSelectMaterialInventoryPageTotal(offset, pageSize, materialInventory,ids)); + return map; + } + + public Map<String, Object> getSelectMaterialInventoryEngineering(Integer pageNum, Integer pageSize, OptimizeUse optimizeUse) { + Integer offset = (pageNum - 1) * pageSize; + Map<String, Object> map = new HashMap<>(); + List<Long> ids=new ArrayList<>();; + if(optimizeUse.getRawStockCode()!=null && !optimizeUse.getRawStockCode().isEmpty()){ + List<String> result = StrUtil.split(optimizeUse.getRawStockCode(), '|'); + ids=result.stream().map(Long::valueOf).collect(Collectors.toList()); + } + map.put("data", materialInventoryMapper.getSelectMaterialInventoryEngineering(offset, pageSize, optimizeUse,ids)); + map.put("total", materialInventoryMapper.getSelectMaterialInventoryEngineeringPageTotal(offset, pageSize, optimizeUse,ids)); + return map; + } + + public Boolean deleteMaterialOutbound(Map<String,Object> object) { + boolean saveState = true; + //璁剧疆鍥炴粴鐐� + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + try { + String materialOutboundId = ""; + if (object.get("materialOutboundId") != null) { + materialOutboundId = object.get("materialOutboundId").toString(); + } + if(materialOutboundId!=null){ + List<MaterialOutboundDetail> materialOutboundDetailLists = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId); + if (!materialOutboundDetailLists.isEmpty()) { + for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) { + //杩樺師鐗╂枡搴撳瓨鏁� + materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); + if(materialOutboundDetail.getUseId()!=null){ + //杩樺師浼樺寲宸ョ▼搴撳瓨鏁� + materialInventoryMapper.updateMaterialInventoryAvailableOptInt(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity()); + } + } + } + + materialInventoryMapper.deleteMaterialOutboundDetail(materialOutboundId); + materialInventoryMapper.deleteMaterialOutbound(materialOutboundId); + materialInventoryMapper.deleteMaterialLog(materialOutboundId); + } + Log log = new Log(); + log.setContent(object.toString()); + log.setOperatorId(object.get("userId").toString()); + log.setOperator(object.get("userName").toString()); + log.setFunction("deleteMaterialOutbound鍒犻櫎:"+materialOutboundId); + logService.saveLog(log); + + + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + //灏嗗紓甯镐紶鍏ユ暟鎹簱 + SysError sysError = new SysError(); + sysError.setError(e+Arrays.toString(e.getStackTrace())); + sysError.setFunc("deleteMaterialOutbound"); + sysErrorService.insert(sysError); + saveState = false; + + } + return saveState; + + } + + public Boolean deleteReturnToStorage(Map<String,Object> object) { + boolean saveState = true; + //璁剧疆鍥炴粴鐐� + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + try { + String returningId = ""; + if (object.get("returningId") != null) { + returningId = object.get("returningId").toString(); + } + if(returningId!=null){ + + List<ReturningWarehouseDetail> returningWarehouseDetailLists = materialInventoryMapper.getIsNotReturningWarehouseDetail(returningId); + if (!returningWarehouseDetailLists.isEmpty()) { + for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailLists) { + //杩樺師鐗╂枡搴撳瓨鏁� + materialInventoryMapper.updateMaterialInventoryAvailableOut(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity()); + } + } + + materialInventoryMapper.deleteReturningWarehouseDetail(returningId); + materialInventoryMapper.deleteReturningWarehouse(returningId); + materialInventoryMapper.deleteMaterialLog(returningId); + } + Log log = new Log(); + log.setContent(object.toString()); + log.setOperatorId(object.get("userId").toString()); + log.setOperator(object.get("userName").toString()); + log.setFunction("deleteReturnToStorage:"+returningId); + logService.saveLog(log); + + + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + //灏嗗紓甯镐紶鍏ユ暟鎹簱 + SysError sysError = new SysError(); + sysError.setError(e+Arrays.toString(e.getStackTrace())); + sysError.setFunc("deleteMaterialOutbound"); + sysErrorService.insert(sysError); + saveState = false; + + } + return saveState; + + } + + public Map<String, Object> getSelectMaterialOutboundDate(Integer pageNum, Integer pageSize, List<String> selectDate, MaterialOutbound materialOutbound) { + 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", materialInventoryMapper.getSelectMaterialOutboundDate(offset, pageSize,startDate, endDate, materialOutbound)); + map.put("total", materialInventoryMapper.getSelectMaterialOutboundDatePageTotal(offset, pageSize,startDate, endDate, materialOutbound)); + List<String> list = new ArrayList<>(); + list.add(startDate); + list.add(endDate); + map.put("selectDate",list); + return map; + } + + public Map<String, Object> getSelectMaterialOutbound(Integer pageNum, Integer pageSize, MaterialOutboundDetail materialOutboundDetail) { + Integer offset = (pageNum - 1) * pageSize; + Map<String, Object> map = new HashMap<>(); + List<MaterialOutboundDetail> materialOutboundDetailList= materialInventoryMapper.SelectMaterialOutboundDetail(offset, pageSize, materialOutboundDetail); + if(materialOutboundDetailList.get(0).getUseId()==null){ + map.put("materialOutbound", materialInventoryMapper.getSelectMaterialOutbound(offset, pageSize, materialOutboundDetail)); + map.put("data", materialInventoryMapper.getSelectMaterialOutboundDetail(offset, pageSize, materialOutboundDetail)); + map.put("total", materialInventoryMapper.getSelectMaterialOutboundDetailPageTotal(offset, pageSize, materialOutboundDetail)); + }else{ + map.put("materialOutbound", materialInventoryMapper.getSelectMaterialOutbound(offset, pageSize, materialOutboundDetail)); + map.put("data", materialInventoryMapper.getSelectMaterialOutboundEngineering(offset, pageSize, materialOutboundDetail)); + map.put("total", materialInventoryMapper.getSelectMaterialOutboundDetailPageTotal(offset, pageSize, materialOutboundDetail)); + } + + return map; + } + + + + public Boolean updateMaterialOutboundToExamine(Map<String,Object> object) { + boolean saveState = true; + //璁剧疆鍥炴粴鐐� + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + try { + String materialOutboundId = ""; + String reviewed = ""; + int type =0; + if (object.get("materialOutboundId") != null) { + materialOutboundId = object.get("materialOutboundId").toString(); + } + + if (object.get("type") != null) { + type = Integer.parseInt(object.get("type").toString()); + } + if (object.get("reviewed") != null) { + reviewed = object.get("reviewed").toString(); + } + Log log = new Log(); + log.setOperator(reviewed); + log.setContent(object.toString()); + log.setFunction("updateMaterialOutboundToExamine锛�"+type); + logService.saveLog(log); + + if (type==1){ + List<MaterialOutboundDetail> materialOutboundDetailList = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId); + if (!materialOutboundDetailList.isEmpty()) { + for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) { + if(materialOutboundDetail.getUseId()!=null){ + //淇敼鐗╂枡搴撳瓨鏁伴噺 + materialInventoryMapper.updateMaterialInventoryInventoryPlanQuantityOut(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); + }else{ + materialInventoryMapper.updateMaterialInventoryInventoryOut(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); + } + + } + } + materialInventoryMapper.updateMaterialOutboundToExamine(materialOutboundId,type,reviewed); + }else{ + List<MaterialOutboundDetail> materialOutboundDetailList = materialInventoryMapper.getIsNotMaterialOutboundDetail(materialOutboundId); + if (!materialOutboundDetailList.isEmpty()) { + for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailList) { + if(materialOutboundDetail.getUseId()!=null){ + //淇敼鐗╂枡搴撳瓨鏁伴噺 + materialInventoryMapper.updateMaterialInventoryInventoryPlanQuantityInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); + }else{ + materialInventoryMapper.updateMaterialInventoryInventoryInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity()); + } + + + + } + } + materialInventoryMapper.updateMaterialOutboundCounterExamination(materialOutboundId,type,reviewed); + } + + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + //灏嗗紓甯镐紶鍏ユ暟鎹簱 + SysError sysError = new SysError(); + sysError.setError(e+Arrays.toString(e.getStackTrace())); + sysError.setFunc("updateMaterialOutboundToExamine"); + sysErrorService.insert(sysError); + saveState = false; + + } + return saveState; + + + + } + + public Boolean saveReturningWarehouse(Map<String,Object> object) { + boolean saveState = true; + //璁剧疆鍥炴粴鐐� + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + try { + String returningId = ""; + String oddNumber; + if (object.get("returningId") != null) { + returningId = object.get("returningId").toString(); + } + Log log = new Log(); + log.setOperatorId(object.get("userId").toString()); + log.setOperator(object.get("userName").toString()); + log.setContent(object.toString()); + + ReturningWarehouse returningWarehouse = JSONObject.parseObject(JSONObject.toJSONString(object.get("title")), ReturningWarehouse.class); + List<ReturningWarehouseDetail> returningWarehouseDetailList = JSONArray.parseArray(JSONObject.toJSONString(object.get("returningWarehouseDetail")), ReturningWarehouseDetail.class); + //鏌ヨ鍑哄簱鍗曟槸鍚﹀瓨鍦� + Integer ReturningWarehouseConut = materialInventoryMapper.getReturningWarehouseCount(returningId); + if (ReturningWarehouseConut != 0) { + + List<ReturningWarehouseDetail> returningWarehouseDetailLists = materialInventoryMapper.getIsNotReturningWarehouseDetail(returningId); + if (!returningWarehouseDetailLists.isEmpty()) { + for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailLists) { + //杩樺師鐗╂枡搴撳瓨鏁� + materialInventoryMapper.updateMaterialInventoryAvailableOut(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity()); + } + } + //鍒犻櫎鏉愭枡鍑哄簱鏄庣粏鐨勬暟鎹� + materialInventoryMapper.deleteReturningWarehouseDetail(returningId); + oddNumber = returningId; + log.setFunction("saveReturningWarehouse淇敼锛�"+oddNumber); + } else { + //鑾峰彇鍗曞彿 + oddNumber = orderNumberSetting("杩斿簱"); + //鏂板鏉愭枡鍑哄簱琛ㄦ暟鎹� + materialInventoryMapper.insertReturningWarehouse(returningWarehouse, oddNumber); + log.setFunction("saveReturningWarehouse鏂板锛�"+oddNumber); + } + + + //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼 + if (!returningWarehouseDetailList.isEmpty()) { + for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailList) { + + Integer returningWarehouseDetailMaximum = materialInventoryMapper.getReturningWarehouseDetailMaximum(oddNumber); + //鏂板鏉愭枡鍑哄簱鏄庣粏鏁版嵁 + materialInventoryMapper.insertReturningWarehouseDetail(returningWarehouseDetail, oddNumber, returningWarehouseDetailMaximum + 1); + + double singlePieceArea=0.0; + double totalArea=0.0; + String json=""; + MaterialStore materialStore=materialStoreMapper.getSelectMaterialStoreById(returningWarehouseDetail.getId()); + json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1); + + + double width= convertDouble(json,"\"width\""); + double height= convertDouble(json,"\"height\""); + DecimalFormat decimalFormat = new DecimalFormat("#0.00"); + singlePieceArea= Double.parseDouble(decimalFormat.format(width * height / 100000)); + totalArea= Double.parseDouble(decimalFormat.format(singlePieceArea * returningWarehouseDetail.getReturnQuantity())); + + + //鏌ヨ鐗╂枡鏄惁瀛樺湪 + List<MaterialInventory> MaterialInventoryCount; + if (returningWarehouseDetail.getDateOfManufacture()!=null){ + MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(returningWarehouseDetail.getId(),returningWarehouseDetail.getDateOfManufacture()); + }else{ + MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCountNull(returningWarehouseDetail.getId()); + } + + + if(!MaterialInventoryCount.isEmpty()){ + if (returningWarehouseDetail.getDateOfManufacture()!=null){ + materialInventoryMapper.updateMaterialInventoryReturning(returningWarehouseDetail.getId(),singlePieceArea,totalArea,returningWarehouseDetail); + }else{ + materialInventoryMapper.updateMaterialInventoryReturningNull(returningWarehouseDetail.getId(),singlePieceArea,totalArea,returningWarehouseDetail); + } + + }else { + materialInventoryMapper.insertMaterialInventoryReturning(returningWarehouseDetail.getId(),singlePieceArea,totalArea,returningWarehouseDetail); + } + + //鑾峰彇搴撳瓨缂栧彿娣诲姞鍒拌繑搴撴槑缁嗚〃 + List<MaterialInventory> MaterialInventoryId; + if (returningWarehouseDetail.getDateOfManufacture()!=null){ + MaterialInventoryId = materialInventoryMapper.getMaterialInventoryCountId(returningWarehouseDetail.getId(),returningWarehouseDetail.getDateOfManufacture()); + }else{ + MaterialInventoryId = materialInventoryMapper.getMaterialInventoryCountNullId(returningWarehouseDetail.getId()); + } + materialInventoryMapper.updateReturningWarehouseDetail(oddNumber, returningWarehouseDetailMaximum + 1,MaterialInventoryId.get(0).getId()); + + + + MaterialLog materialLog=new MaterialLog(); + materialLog.setOperationOrderNumber(oddNumber); + materialLog.setOperationNumber(returningWarehouseDetailMaximum + 1); + materialLog.setOperateType("鐗╂枡杩斿簱"); + materialLog.setMaterialCode(returningWarehouseDetail.getId()); + materialLog.setMaterialName(convertString(json,"\"name\"")); + materialLog.setProducer(returningWarehouseDetail.getProducer()); + materialLog.setUnit(convertString(json,"\"unit\"")); + materialLog.setWidth(convertDouble(json,"\"width\"")); + materialLog.setHeight(convertDouble(json,"\"height\"")); + materialLog.setThickness(convertDouble(json,"\"thickness\"")); + materialLog.setQuantity(returningWarehouseDetail.getReturnQuantity()); + materialLog.setSinglePieceArea(singlePieceArea); + materialLog.setInventoryArea(returningWarehouseDetail.getInventoryArea()); + materialLog.setRemarks(returningWarehouseDetail.getRemarks()); + materialLog.setOperator(object.get("userName").toString()); + materialLog.setOperateTime(LocalDate.now()); + materialLogMapper.insert(materialLog); + + } + + } + logService.saveLog(log); + + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + //灏嗗紓甯镐紶鍏ユ暟鎹簱 + SysError sysError = new SysError(); + sysError.setError(e+Arrays.toString(e.getStackTrace())); + sysError.setFunc("saveReturningWarehouse"); + sysErrorService.insert(sysError); + saveState = false; + + } + return saveState; + + } + + + public Map<String, Object> getSelectReturningWarehouse(Integer pageNum, Integer pageSize, ReturningWarehouseDetail returningWarehouseDetail) { + Integer offset = (pageNum - 1) * pageSize; + Map<String, Object> map = new HashMap<>(); + map.put("returningWarehouse", materialInventoryMapper.getSelectReturningWarehouse(offset, pageSize, returningWarehouseDetail)); + map.put("data", materialInventoryMapper.getSelectReturningWarehouseDetail(offset, pageSize, returningWarehouseDetail)); + map.put("total", materialInventoryMapper.getSelectReturningWarehouseDetailPageTotal(offset, pageSize, returningWarehouseDetail)); + return map; + } + + + public Boolean updateReturningWarehouseToExamine(Map<String,Object> object) { + boolean saveState = true; + //璁剧疆鍥炴粴鐐� + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + try { + String returningId = ""; + String reviewed = ""; + int type =0; + if (object.get("returningId") != null) { + returningId = object.get("returningId").toString(); + } + + if (object.get("type") != null) { + type = Integer.parseInt(object.get("type").toString()); + } + if (object.get("reviewed") != null) { + reviewed = object.get("reviewed").toString(); + } + Log log = new Log(); + log.setOperator(reviewed); + log.setContent(object.toString()); + log.setFunction("updateReturningWarehouseToExamine锛�"+type); + logService.saveLog(log); + + if (type==1){ + List<ReturningWarehouseDetail> returningWarehouseDetailList = materialInventoryMapper.getIsNotReturningWarehouseDetail(returningId); + if (!returningWarehouseDetailList.isEmpty()) { + for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailList) { + //淇敼鐗╂枡搴撳瓨鏁伴噺 + materialInventoryMapper.updateMaterialInventoryInventoryInt(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity()); + } + } + materialInventoryMapper.updateReturningWarehouseToExamine(returningId,type,reviewed); + }else{ + List<ReturningWarehouseDetail> returningWarehouseDetailList = materialInventoryMapper.getIsNotReturningWarehouseDetail(returningId); + if (!returningWarehouseDetailList.isEmpty()) { + for (ReturningWarehouseDetail returningWarehouseDetail : returningWarehouseDetailList) { + //淇敼鐗╂枡搴撳瓨鏁伴噺 + materialInventoryMapper.updateMaterialInventoryInventoryOut(returningWarehouseDetail.getInventoryId(), returningWarehouseDetail.getReturnQuantity()); + } + } + materialInventoryMapper.updateReturningWarehouseCounterExamination(returningId,type,reviewed); + } + + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + //灏嗗紓甯镐紶鍏ユ暟鎹簱 + SysError sysError = new SysError(); + sysError.setError(e+Arrays.toString(e.getStackTrace())); + sysError.setFunc("updateReturningWarehouseToExamine"); + sysErrorService.insert(sysError); + saveState = false; + + } + return saveState; + + + + } + + + public Map<String, Object> getSelectReturningWarehouseDate(Integer pageNum, Integer pageSize, List<String> selectDate, ReturningWarehouse returningWarehouse) { + 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", materialInventoryMapper.getSelectReturningWarehouseDate(offset, pageSize,startDate, endDate, returningWarehouse)); + map.put("total", materialInventoryMapper.getSelectReturningWarehouseDatePageTotal(offset, pageSize,startDate, endDate, returningWarehouse)); + List<String> list = new ArrayList<>(); + list.add(startDate); + list.add(endDate); + map.put("selectDate",list); + return map; + } + + public Map<String, Object> getSelectSurplusMaterialsDate(Integer pageNum, Integer pageSize, List<String> selectDate, SurplusMaterials surplusMaterials) { + 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", materialInventoryMapper.getSelectSurplusMaterialsDate(offset, pageSize,startDate, endDate, surplusMaterials)); + map.put("total", materialInventoryMapper.getSelectSurplusMaterialsDatePageTotal(offset, pageSize,startDate, endDate, surplusMaterials)); + List<String> list = new ArrayList<>(); + list.add(startDate); + list.add(endDate); + map.put("selectDate",list); + return map; + } + + public Boolean addSelectSurplusMaterialsDate(Map<String,Object> object) { + boolean saveState = true; + //璁剧疆鍥炴粴鐐� + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + + String creator = ""; + if (object.get("creator") != null) { + creator = object.get("creator").toString(); + } + String type = ""; + if (object.get("type") != null) { + type = object.get("type").toString(); + } + int state = 0; + if (object.get("state") != null) { + state = Integer.parseInt(object.get("state").toString()); + } + Log log = new Log(); + log.setOperator(creator); + log.setContent(object.toString()); + log.setFunction("addSelectSurplusMaterialsDate锛�"+state); + logService.saveLog(log); + + if(state==1){ + SurplusMaterials surplusMaterials = JSONObject.parseObject(JSONObject.toJSONString(object.get("surplusMaterials")), SurplusMaterials.class); + if(surplusMaterials!=null){ + SurplusMaterials surplusMaterials1=materialInventoryMapper.selectSurplusMaterialsCount(surplusMaterials); + if(surplusMaterials1!=null){ + materialInventoryMapper.updateSurplusMaterialsIntQuantity(surplusMaterials1); + materialInventoryMapper.insertSurplusMaterialsLog(surplusMaterials1,creator,type); + }else{ + materialInventoryMapper.insertSurplusMaterials(surplusMaterials); + materialInventoryMapper.insertSurplusMaterialsLog(surplusMaterials,creator,type); + } + } + } else if (state==2) { + List<SurplusMaterials> surplusMaterialsList = JSONArray.parseArray(JSONObject.toJSONString(object.get("surplusMaterials")), SurplusMaterials.class); + if(!surplusMaterialsList.isEmpty()){ + for(SurplusMaterials surplusMaterials:surplusMaterialsList){ + materialInventoryMapper.updateSurplusMaterialsOutQuantity(surplusMaterials); + materialInventoryMapper.insertSurplusMaterialsLog(surplusMaterials,creator,type); + } + + } + } + + + + return saveState; + + + + } + + public Map<String, Object> printCreateOutbound(String materialOutboundId) { + Map<String, Object> map = new HashMap<>(); + map.put("createOutbound", materialInventoryMapper.getPrintCreateOutbound(materialOutboundId)); + map.put("createOutboundDetail", materialInventoryMapper.getPrintCreateOutboundDetail(materialOutboundId)); + return map; + } + + public Map<String, Object> getMaterialLogReport(String type,Integer pageNum, Integer pageSize, List<String> selectDate, MaterialLog materialLog) { + 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", materialInventoryMapper.getMaterialLogReport(offset, pageSize,startDate, endDate, materialLog,type)); + map.put("total", materialInventoryMapper.getMaterialLogReportTotal(offset, pageSize,startDate, endDate, materialLog,type)); + List<String> list = new ArrayList<>(); + list.add(startDate); + list.add(endDate); + map.put("selectDate",list); + return map; + } + + public List<MaterialLog> exportMaterialLogReport(List<LocalDate> dates, String type) { + return materialInventoryMapper.exportMaterialLogReport(dates,type); + } + + + public Boolean deleteMaterialInventory(Map<String,Object> object) { + String creator = ""; + if (object.get("creator") != null) { + creator = object.get("creator").toString(); + } + String ids = ""; + if (object.get("ids") != null) { + ids = object.get("ids").toString(); + } + List<Long> id=new ArrayList<>(); + if(!ids.isEmpty()){ + List<String> result = StrUtil.split(ids, '|'); + id=result.stream().map(Long::valueOf).collect(Collectors.toList()); + } + materialInventoryMapper.deleteMaterialInventory(id); + Log log = new Log(); + log.setOperator(creator); + log.setContent(object.toString()); + log.setFunction("deleteMaterialInventory锛�"+ids); + logService.saveLog(log); + return true; + } + + + + + public String orderNumberSetting(String type) { + //鏍规嵁绫诲瀷鑷姩鐢熸垚涓嶅悓鐨勬搷浣滃崟鍙� + String alias=""; + Integer maximum=0; + if(Objects.equals(type, "鍑哄簱")){ + alias="CK"; + maximum=materialInventoryMapper.getMaximum(type); + } + if(Objects.equals(type, "杩斿簱")){ + alias="FK"; + maximum=materialInventoryMapper.getMaximums(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; + } + + + public String convertString(String json,String string) { + Map<String, Object> map = new HashMap<>(); + String[] keyValues = json.split(","); + for (String keyValue : keyValues) { + String[] pair = keyValue.split(":"); + if (pair.length == 2) { + map.put(pair[0], pair[1]); + } + } + return map.get(string).toString().replace("\"",""); + } + + public Double convertDouble(String json,String string) { + Map<String, Object> map = new HashMap<>(); + String[] keyValues = json.split(","); + for (String keyValue : keyValues) { + String[] pair = keyValue.split(":"); + if (pair.length == 2) { + map.put(pair[0], pair[1]); + } + } + Double number=0.0; + if(map.get(string)!=null){ + String[] widthStrings = map.get(string).toString().split("\\D+"); + for (String numberString : widthStrings) { + if (!numberString.isEmpty()) { + number= Double.parseDouble(numberString); + } + } + } + + + return number; + } + + + + @Transactional(rollbackFor = Exception.class) + public boolean mesMaterialOutbound(Map<String, Object> reportingWorkMap) { + boolean saveState=true; + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + try { + //鎺ユ敹瑙f瀽涓婚檮琛ㄤ俊鎭� + JSONObject reportingWorkJson = new JSONObject(reportingWorkMap); + String projectNo=reportingWorkJson.get("projectNo").toString(); + Double width= Double.valueOf(reportingWorkJson.get("width").toString()); + Double height= Double.valueOf(reportingWorkJson.get("height").toString()); + Integer quantity= Integer.valueOf(reportingWorkJson.get("quantity").toString()); + + List<MaterialOutbound> materialOutboundList=materialInventoryMapper.getSelectMaterialOutboundProjectNo(projectNo); + OptimizeUse optimizeUses=materialInventoryMapper.getSelectOptimizeUses(projectNo,width,height); + + + MaterialInventory materialInventory=materialInventoryMapper.getMaterialInventoryById(Long.valueOf(optimizeUses.getRawStockCode())); + if(materialOutboundList.size()==1){ + List<MaterialOutboundDetail> materialOutboundDetailList=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(),optimizeUses.getId()); + List<MaterialOutboundDetail> materialOutboundDetailList1=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(),null); + if(materialOutboundDetailList.size()==1){ + materialInventoryMapper.updateMaterialOutboundOptimizeUses(optimizeUses.getId(),quantity); + }else{ + materialInventoryMapper.insertMaterialOutboundDetailOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(), + materialOutboundDetailList1.size()+1,Long.valueOf(optimizeUses.getRawStockCode()),materialInventory.getMaterialCode(),materialInventory.getInventoryArea(), + optimizeUses.getId(),quantity,materialInventory.getSinglePieceArea(),materialInventory.getDateOfManufacture()); + } + }else if(materialOutboundList.isEmpty()){ + String oddNumber = orderNumberSetting("鍑哄簱"); + materialInventoryMapper.insertMaterialOutboundOptimizeUses(oddNumber,projectNo,reportingWorkJson.get("userName").toString()); + materialInventoryMapper.insertMaterialOutboundDetailOptimizeUses(oddNumber, 1,Long.valueOf(optimizeUses.getRawStockCode()),materialInventory.getMaterialCode(),materialInventory.getInventoryArea(), + optimizeUses.getId(),quantity,materialInventory.getSinglePieceArea(),materialInventory.getDateOfManufacture()); + }else{ + return false; + } + materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity); + materialInventoryMapper.updateOptimizeUsesMes(optimizeUses.getId(),quantity); + + //淇濆瓨鏃ュ織 + Log log = new Log(); + log.setContent(reportingWorkMap.toString()); + log.setFunction("mesMaterialOutbound鎶ュ伐鏂板"); + log.setOperatorId((String) reportingWorkJson.get("userId")); + log.setOperator((String) reportingWorkJson.get("userName")); + logService.saveLog(log); + } catch (Exception e) { + TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint); + //灏嗗紓甯镐紶鍏ユ暟鎹簱 + SysError sysError = new SysError(); + sysError.setError(e+Arrays.toString(e.getStackTrace())); + sysError.setFunc("mesMaterialOutbound鎶ュ伐鏂板"); + sysErrorService.insert(sysError); + saveState = false; + + } + return saveState; + } + + + public String cancelMaterialAdditionRecord(Map<String,Object> object) { + String saveState = "true"; + //璁剧疆鍥炴粴鐐� + Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint(); + try { + Log log = new Log(); + log.setOperatorId(object.get("userId").toString()); + log.setOperator(object.get("userName").toString()); + log.setFunction("cancelMaterialAdditionRecord鐗╂枡鏂板鎾ら攢"); + log.setContent(object.toString()); + //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼 + List<MaterialLog> materialLoglist = JSONArray.parseArray(JSONObject.toJSONString(object.get("materialAdd")), MaterialLog.class); + if (!materialLoglist.isEmpty()){ + for (MaterialLog materialLog : materialLoglist) { + + //鏌ヨ鐗╂枡鏄惁瀛樺湪 + List<MaterialInventory> MaterialInventoryList; + if (materialLog.getOperationOrderNumber()!=null){ + MaterialInventoryList = materialInventoryMapper.getMaterialInventoryCount(materialLog.getMaterialCode(), LocalDate.parse(materialLog.getOperationOrderNumber())); + }else{ + MaterialInventoryList = materialInventoryMapper.getMaterialInventoryCountNull(materialLog.getMaterialCode()); + } + + if(MaterialInventoryList.size()==1){ + if(MaterialInventoryList.get(0).getAvailableQuantity()>=materialLog.getQuantity()){ + if (materialLog.getOperationOrderNumber()!=null){ + materialInventoryMapper.updateMaterialInventoryOut(materialLog.getMaterialCode(),materialLog.getQuantity(),materialLog.getOperationOrderNumber()); + }else{ + materialInventoryMapper.updateMaterialInventoryNullOut(materialLog.getMaterialCode(),materialLog.getQuantity()); + } + materialInventoryMapper.deleteMaterialLogById(materialLog.getId()); + }else{ + return "false1"; + } + + }else{ + return "false2"; + } + + + } + + } + 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 Map<String, Object> getOptimizeOutboundReport(String type, Integer pageNum, Integer pageSize, List<String> selectDate, MaterialLog materialLog) { + 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", materialInventoryMapper.getOptimizeOutboundReport(offset, pageSize,startDate, endDate, materialLog,type)); + map.put("total", materialInventoryMapper.getOptimizeOutboundReportTotal(offset, pageSize,startDate, endDate, materialLog,type)); + List<String> list = new ArrayList<>(); + list.add(startDate); + list.add(endDate); + map.put("selectDate",list); + return map; + } +} -- Gitblit v1.8.0