chenlu
2025-03-10 c12e4a831b4210ec886b2537824a464d74b59ff5
north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
@@ -93,6 +93,7 @@
                //删除材料出库明细的数据
                materialInventoryMapper.deleteMaterialOutboundDetail(materialOutboundId);
                materialInventoryMapper.updateMaterialOutbound(materialOutbound, materialOutboundId);
                materialInventoryMapper.deleteMaterialLog(materialOutboundId);
                oddNumber = materialOutboundId;
                log.setFunction("saveMaterialOutbound修改:"+oddNumber);
            } else {
@@ -114,13 +115,16 @@
                        materialInventoryMapper.insertMaterialOutboundDetail(materialOutboundDetail, oddNumber, materialOutboundDetailMaximum + 1);
                        //修改物料库存表出库数量
                        materialInventoryMapper.updateMaterialInventoryAvailableOut(materialOutboundDetail.getId(), materialOutboundDetail.getOutboundQuantity());
                    if(materialOutboundDetail.getUseId()!=null){
                        //修改优化工程表出库数量
                        materialInventoryMapper.updateMaterialInventoryAvailableOptOut(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity());
                    }/*else{
                        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);
@@ -140,6 +144,7 @@
                        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);
@@ -163,7 +168,7 @@
            sysError.setError(e+Arrays.toString(e.getStackTrace()));
            sysError.setFunc("saveMaterialOutbound");
            sysErrorService.insert(sysError);
            saveState = "false1";
            saveState = "false";
        }
        return saveState;
@@ -338,7 +343,10 @@
                    for (MaterialOutboundDetail materialOutboundDetail : materialOutboundDetailLists) {
                        //还原物料库存数
                        materialInventoryMapper.updateMaterialInventoryAvailableInt(materialOutboundDetail.getInventoryId(), materialOutboundDetail.getOutboundQuantity());
                        if(materialOutboundDetail.getUseId()!=null){
                            //还原优化工程库存数
                            materialInventoryMapper.updateMaterialInventoryAvailableOptInt(materialOutboundDetail.getUseId(), materialOutboundDetail.getOutboundQuantity());
                        }
                    }
                }
@@ -482,10 +490,12 @@
                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());
                        }
                    }
                }
@@ -494,9 +504,13 @@
                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());
                        }
                    }
@@ -947,49 +961,64 @@
    @Transactional(rollbackFor = Exception.class)
    public boolean mesMaterialOutbound(Map<String, Object> reportingWorkMap) {
        //接收解析主附表信息
        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());
        boolean saveState=true;
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        try {
            //接收解析主附表信息
            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);
        List<MaterialOutboundDetail> materialOutboundDetailList=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(optimizeUses.getId());
        List<MaterialOutboundDetail> materialOutboundDetailList1=materialInventoryMapper.getSelectMaterialOutboundOptimizeUses(null);
        MaterialInventory materialInventory=materialInventoryMapper.getMaterialInventoryById(Long.valueOf(optimizeUses.getRawStockCode()));
        if(materialOutboundList.size()==1){
            if(materialOutboundDetailList.size()==1){
                materialInventoryMapper.updateMaterialOutboundOptimizeUses(optimizeUses.getId());
                materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity);
            }else{
                materialInventoryMapper.insertMaterialOutboundDetailOptimizeUses(materialOutboundList.get(0).getMaterialOutboundId(),
                        materialOutboundDetailList1.size()+1,Long.valueOf(optimizeUses.getRawStockCode()),materialInventory.getMaterialCode(),materialInventory.getInventoryArea(),
            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());
                materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity);
            }else{
                return false;
            }
        }else if(materialOutboundList.isEmpty()){
            String oddNumber = orderNumberSetting("出库");
            materialInventoryMapper.insertMaterialOutboundOptimizeUses(oddNumber,projectNo,reportingWorkJson.get("userName").toString());
            materialInventoryMapper.insertMaterialOutboundDetailOptimizeUses(oddNumber, materialOutboundDetailList1.size()+1,Long.valueOf(optimizeUses.getRawStockCode()),materialInventory.getMaterialCode(),materialInventory.getInventoryArea(),
                    optimizeUses.getId(),quantity,materialInventory.getSinglePieceArea(),materialInventory.getDateOfManufacture());
            materialInventoryMapper.updateMaterialInventoryAvailableInventoryOutMes(Long.valueOf(optimizeUses.getRawStockCode()),quantity);
        }else{
            return false;
        }
            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);
        return true;
            //保存日志
            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;
    }
}