zhangyuewww 2 năm trước cách đây
mục cha
commit
4fe9928427

+ 9 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/controller/WeighingManagementController.java

@@ -166,5 +166,14 @@ public class WeighingManagementController {
     public String importWeighingOut(@RequestBody WeighingManagement weighingManagement) {
         return weighingManagementService.importWeighingOut(weighingManagement);
     }
+    /**
+     * 导入移库出库
+     *  @param weighingManagement
+     * @return
+     */
+    @PostMapping("/api/importWeighingMoveOut")
+    public String importWeighingMoveOut(@RequestBody WeighingManagement weighingManagement) {
+        return weighingManagementService.importWeighingMoveOut(weighingManagement);
+    }
 }
 

+ 5 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/IWeighingManagementService.java

@@ -96,5 +96,10 @@ public interface IWeighingManagementService extends IService<WeighingManagement>
      * @param weighingManagement
      */
     String importWeighingOut(WeighingManagement weighingManagement);
+    /**
+     * 移库出库导入
+     * @param weighingManagement
+     */
+    String importWeighingMoveOut(WeighingManagement weighingManagement);
 
 }

+ 276 - 5
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/WeighingManagementServiceImpl.java

@@ -1409,11 +1409,11 @@ public class WeighingManagementServiceImpl extends ServiceImpl<WeighingManagemen
                             workflowService.activateInstance(stockPurchaseReceiptReport.getWorkflowId(), stockPurchaseReceiptReport.getId());
                         }
                     }
-                    ContractManagementInfo contractManagementInfoSale = contractManagementInfoService.selectOne(new EntityWrapper<ContractManagementInfo>()
-                            .eq("contract_no", warehouseInOutInfo.getContractNo())
-                            .eq("deliver_type", "2")
-                            .eq("contract_type", "1")
-                            .eq("delete_flag", "0"));
+//                    ContractManagementInfo contractManagementInfoSale = contractManagementInfoService.selectOne(new EntityWrapper<ContractManagementInfo>()
+//                            .eq("contract_no", warehouseInOutInfo.getContractNo())
+//                            .eq("deliver_type", "2")
+//                            .eq("contract_type", "1")
+//                            .eq("delete_flag", "0"));
                     //现货销售出库报表
                     StockSaleReceiptReport stockSaleReceiptReport = new StockSaleReceiptReport();
                     stockSaleReceiptReport.setId(IdGenerator.generateUUID());
@@ -1461,4 +1461,275 @@ public class WeighingManagementServiceImpl extends ServiceImpl<WeighingManagemen
         }
         return "ok";
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public String importWeighingMoveOut(WeighingManagement weighingManagement) {
+        List<WeighingManagement> weighingManagementList=weighingManagement.getWeighingManagementList();
+        InOutWarehouseTask inOutWarehouseTask=inOutWarehouseTaskService.selectOne(new EntityWrapper<InOutWarehouseTask>()
+                .eq("in_out_task_no",weighingManagementList.get(0).getInOutTaskNo()));
+        //合计净重
+        double weight = weighingManagementList.stream().mapToDouble(WeighingManagement::getNetWeight).sum();
+        inOutWarehouseTask.setCompletedQuantity(inOutWarehouseTask.getCompletedQuantity() + weight);
+        if (inOutWarehouseTask.getCompletedQuantity() > inOutWarehouseTask.getWeight() + inOutWarehouseTask.getWeight() * 0.05f) {
+            throw new YException(YExceptionEnum.TASK_WEIGHT_EXCEEDED_ERROR);
+        } else {
+            inOutWarehouseTaskService.updateById(inOutWarehouseTask);
+        }
+        //更新库存量
+        WarehouseBaseInfo warehouseBaseInfo=warehouseBaseInfoService.selectOne(new EntityWrapper<WarehouseBaseInfo>()
+                .eq("warehouse_name",weighingManagement.getWarehouseName())
+                .eq("comp_id",inOutWarehouseTask.getCompId()));
+        //  查询库位
+        WarehousePositionInfo warehousePositionInfo = warehousePositionInfoService.selectOne(new EntityWrapper<WarehousePositionInfo>()
+                .eq("base_id", warehouseBaseInfo.getId())
+                .eq("delete_flag", "0"));
+        if (warehousePositionInfo != null) {
+            // 查询货物库存量
+            WarehousePositionStorageInfo warehousePositionStorageInfo = warehousePositionStorageInfoService.selectOne(new EntityWrapper<WarehousePositionStorageInfo>()
+                    .eq("position_id", warehousePositionInfo.getId())
+                    .eq("goods_name", "玉米")
+                    .eq("delete_flag", "0"));
+            // 判断是否有货
+            if (warehousePositionStorageInfo != null) {
+                if (weight <= warehousePositionStorageInfo.getStorage()) {
+                    // 更新库存量
+                    warehousePositionStorageInfo.setStorage(warehousePositionStorageInfo.getStorage() - weight);
+                    warehousePositionStorageInfoService.updateById(warehousePositionStorageInfo);
+                }
+                //出库量大于库存量
+                else {
+                    throw new YException(YExceptionEnum.INVENTORY_NO_ERROR);
+                }
+            }
+            // 没有储存量
+            else {
+                throw new YException(YExceptionEnum.POSITIONSTORAGE_NO_ERROR);
+            }
+        }
+        //库位不存在
+        else {
+            throw new YException(YExceptionEnum.POSITION_NO_ERROR);
+        }
+        for (WeighingManagement weighingManagement1:weighingManagementList) {
+            //生成出库记录
+            WarehouseInOutInfo warehouseInOutInfo = new WarehouseInOutInfo();
+            warehouseInOutInfo.setId(IdGenerator.generateUUID());
+            warehouseInOutInfo.setBaseId(warehouseBaseInfo.getId());
+            warehouseInOutInfo.setInOutTaskNo(weighingManagement1.getInOutTaskNo());
+            warehouseInOutInfo.setContractNo(inOutWarehouseTask.getMoveTaskNo());
+            warehouseInOutInfo.setWarehouseName(weighingManagement.getWarehouseName());
+            warehouseInOutInfo.setOutType(weighingManagement1.getOutType());
+            warehouseInOutInfo.setInOutFlag("1");
+            warehouseInOutInfo.setBinNumber("1");
+            warehouseInOutInfo.setPositionId(warehousePositionInfo.getId());
+            warehouseInOutInfo.setGoodsNameKey("1");
+            warehouseInOutInfo.setGoodsName("玉米");
+            warehouseInOutInfo.setGrossWeight(weighingManagement1.getGrossWeight());
+            warehouseInOutInfo.setTare(weighingManagement1.getTare());
+            warehouseInOutInfo.setNetWeight(Double.valueOf(String.valueOf(weighingManagement1.getNetWeight())));
+            warehouseInOutInfo.setInOutDate(weighingManagement1.getGrossDate());
+            warehouseInOutInfo.setInOutTypeKey("3");
+            warehouseInOutInfo.setInOutType("移库出库");
+            warehouseInOutInfo.setCarNo(weighingManagement1.getCarNumber());
+            warehouseInOutInfo.setStatusFlag(StatusEnum.SUBMITTED.getFlag());
+            warehouseInOutInfo.setStatus(StatusEnum.SUBMITTED.getName());
+            //生成入库详情
+            WarehouseInOutDetail warehouseInOutDetail = new WarehouseInOutDetail();
+            warehouseInOutDetail.setInfoId(warehouseInOutInfo.getId());
+            warehouseInOutDetail.setId(IdGenerator.generateUUID());
+            String relationId = IdGenerator.generateUUID();
+            QualityInspectionManagement qualityInspectionManagement = new QualityInspectionManagement();
+            qualityInspectionManagement.setId(IdGenerator.generateUUID());
+            qualityInspectionManagement.setWarehouseInOutId(warehouseInOutInfo.getId());
+            qualityInspectionManagement.setCompId(AuthSecurityUtils.getStaffById(AuthSecurityUtils.getCurrentUserId()).getCompId());
+            qualityInspectionManagement.setRelationId(relationId);
+            qualityInspectionManagement.setGoodsName("玉米");
+            qualityInspectionManagement.setNatureOfGrainPurchase("贸易粮");
+            qualityInspectionManagement.setBinNumber("1");
+            qualityInspectionManagement.setServiceManagementType("2");
+            qualityInspectionManagement.setQualityNo(weighingManagement1.getNumber());
+            qualityInspectionManagement.setContractNo(inOutWarehouseTask.getMoveTaskNo());
+            qualityInspectionManagement.setCarNumber(weighingManagement1.getCarNumber());
+            qualityInspectionManagement.setWarehouseName(weighingManagement.getWarehouseName());
+            qualityInspectionManagement.setInOutTaskNo(weighingManagement1.getInOutTaskNo());
+            qualityInspectionManagement.setInOutTypeKey("3");
+            qualityInspectionManagement.setInOutType("移库出库");
+            qualityInspectionManagement.setQualityDate(weighingManagement1.getGrossDate());
+            qualityInspectionManagement.setManagementType("3");
+            qualityInspectionManagement.setType("干粮");
+            CommonStaff commonStaff = staffService.getInfo(AuthSecurityUtils.getCurrentUserId());
+            qualityInspectionManagement.setQualityInspector(commonStaff.getStaffName());
+            qualityInspectionManagement.setReInspector(commonStaff.getStaffName());
+            //状态为已称皮重
+            qualityInspectionManagement.setStatus(StatusEnum.TARED.getName());
+            qualityInspectionManagement.setStatusFlag(StatusEnum.TARED.getFlag());
+            qualityInspectionManagement.setAgentKey(AuthSecurityUtils.getCurrentUserId());
+            qualityInspectionManagement.setAgent(AuthSecurityUtils.getStaffById(AuthSecurityUtils.getCurrentUserId()).getStaffName());
+            //生成检斤信息
+            weighingManagement1.setId(IdGenerator.generateUUID());
+            weighingManagement1.setRelationId(relationId);
+            weighingManagement1.setNumber(weighingManagement1.getNumber());
+            weighingManagement1.setCarNumber(weighingManagement1.getCarNumber());
+            weighingManagement1.setWarehouseInOutId(warehouseInOutInfo.getId());
+            weighingManagement1.setContractNo(inOutWarehouseTask.getMoveTaskNo());
+            weighingManagement1.setCompId(AuthSecurityUtils.getStaffById(AuthSecurityUtils.getCurrentUserId()).getCompId());
+            weighingManagement1.setServiceManagementType("2");
+            weighingManagement1.setInOutTaskNo(weighingManagement1.getInOutTaskNo());
+            weighingManagement1.setGoodsName("玉米");
+            weighingManagement1.setType("干粮");
+            weighingManagement1.setBinNumber("1");
+            weighingManagement1.setPositionId(warehousePositionInfo.getId());
+            weighingManagement1.setOutType(weighingManagement1.getOutType());
+            weighingManagement1.setSecretaryWeigher(commonStaff.getStaffName());
+            weighingManagement1.setSkinInspector(commonStaff.getStaffName());
+            weighingManagement1.setGrossWeight(weighingManagement1.getGrossWeight() * 1000);
+            weighingManagement1.setTare(weighingManagement1.getTare() * 1000);
+            weighingManagement1.setNetWeight(weighingManagement1.getNetWeight() * 1000);
+            weighingManagement1.setManagementType("3");
+            weighingManagement1.setWarehouseName(weighingManagement.getWarehouseName());
+            weighingManagement1.setGrossDate(weighingManagement1.getGrossDate());
+            weighingManagement1.setTareDate(weighingManagement1.getGrossDate());
+            //状态为已称皮重
+            weighingManagement1.setStatus(StatusEnum.TARED.getName());
+            weighingManagement1.setStatusFlag(StatusEnum.TARED.getFlag());
+            warehouseInOutInfoService.insert(warehouseInOutInfo);
+            warehouseInOutDetailService.insert(warehouseInOutDetail);
+            qualityInspectionManagementService.insert(qualityInspectionManagement);
+            this.insert(weighingManagement1);
+            //更新合同移库库存
+            ContractInventoryDistribution contractInventoryDistribution1=contractInventoryDistributionService.selectOne(new EntityWrapper<ContractInventoryDistribution>()
+                    .eq("comp_id",warehouseBaseInfo.getCompId()).eq("inventory_type","1").eq("contract_no",warehouseInOutInfo.getContractNo())
+                    .eq("warehouse",warehouseInOutInfo.getWarehouseName()));
+            if (contractInventoryDistribution1!=null){
+                contractInventoryDistribution1.setRemoveStorage(contractInventoryDistribution1.getRemoveStorage()+warehouseInOutInfo.getNetWeight());
+                contractInventoryDistributionService.updateById(contractInventoryDistribution1);
+            }
+            //常用库出库
+            if ("1".equals(warehouseBaseInfo.getWarehouseType())) {
+                InOutWarehouseTask inOutWarehouseTask1 = inOutWarehouseTaskService.selectOne(new EntityWrapper<InOutWarehouseTask>()
+                        .eq("move_task_no", warehouseInOutInfo.getContractNo())
+                        .eq("in_out_flag", "1")
+                        .eq("delete_flag", "0"));
+                if (inOutWarehouseTask1 != null) {
+                    //更新所属仓库收购库存
+                    ContractInventoryDistribution contractInventoryDistribution=contractInventoryDistributionService.selectOne(new EntityWrapper<ContractInventoryDistribution>()
+                            .eq("comp_id",inOutWarehouseTask1.getCompId()).eq("inventory_type","3").eq("warehouse",inOutWarehouseTask1.getWarehouseName())
+                            .eq("locus_warehouse",inOutWarehouseTask1.getWarehouseName())
+                            .eq("goods_name",warehouseInOutInfo.getGoodsName()));
+                    if (contractInventoryDistribution!=null){
+                        contractInventoryDistribution.setInventory(contractInventoryDistribution.getInventory()-warehouseInOutInfo.getNetWeight());
+                        contractInventoryDistributionService.updateById(contractInventoryDistribution);
+                    }
+                    List<TranCarInfo> tranCarInfoList = tranCarInfoService.selectList(new EntityWrapper<TranCarInfo>()
+                            .eq("contract_no", warehouseInOutInfo.getContractNo()).eq("tran_type", "1")
+                            .orderBy("create_date", false));
+                    TranCarInfo tranCarInfo = new TranCarInfo();
+                    TranTaskInfo tranTaskInfo = tranTaskInfoService.selectOne(new EntityWrapper<TranTaskInfo>()
+                            .eq("comp_id", warehouseBaseInfo.getCompId())
+                            .eq("contract_no", warehouseInOutInfo.getContractNo()));
+                    if (tranTaskInfo != null) {
+                        TranProcessInfo tranProcessInfo = tranProcessInfoService.selectOne(new EntityWrapper<TranProcessInfo>()
+                                .eq("info_id", tranTaskInfo.getId()));
+                        tranCarInfo.setProcessId(tranProcessInfo.getId());
+                        tranCarInfo.setInfoId(tranTaskInfo.getId());
+                        tranCarInfo.setTranPrice(String.valueOf(tranProcessInfo.getTranPrice() != null ? tranProcessInfo.getTranPrice() : 0f));
+                    } else {
+                        throw new YException(YExceptionEnum.TRANTASK_NOT_CREATED_ERROR);
+                    }
+                    //出库时打入成本
+                    CostManagementInfo costManagementInfo = costManagementInfoService.selectOne(new EntityWrapper<CostManagementInfo>().eq("warehouse_id", warehouseInOutInfo.getBaseId())
+                            .eq("goods_name", warehouseInOutInfo.getGoodsName()));
+                    if (costManagementInfo != null) {
+                        tranCarInfo.setCost(costManagementInfo.getCost());
+                    }
+                    tranCarInfo.setCompId(warehouseBaseInfo.getCompId());
+                    tranCarInfo.setTranType("1");
+                    tranCarInfo.setCarNo(warehouseInOutInfo.getCarNo());
+                    String tranCarNo = "";
+                    if ((tranCarInfoList.size() + 1) < 10) {
+                        tranCarNo = "C00" + (tranCarInfoList.size() + 1);
+                    } else if (tranCarInfoList.size() + 1 < 100) {
+                        tranCarNo = "C0" + (tranCarInfoList.size() + 1);
+                    } else {
+                        tranCarNo = "C" + (tranCarInfoList.size() + 1);
+                    }
+                    tranCarInfo.setTranCarNo(tranCarNo);
+                    tranCarInfo.setId(IdGenerator.generateUUID());
+                    tranCarInfo.setContractNo(warehouseInOutInfo.getContractNo());
+                    tranCarInfo.setStatusFlag(StatusEnum.LOADED.getFlag());
+                    tranCarInfo.setStatus(StatusEnum.LOADED.getName());
+                    warehouseInOutInfo.setCarId(tranCarInfo.getId());
+                    warehouseInOutInfo.setTranCarNo(tranCarNo);
+                    warehouseInOutInfoService.updateById(warehouseInOutInfo);
+                    tranCarInfoService.insert(tranCarInfo);
+                }
+            }
+            //临时库出库
+            else {
+                //更新合同移库库存
+                ContractInventoryDistribution contractInventoryDistribution2=contractInventoryDistributionService.selectOne(new EntityWrapper<ContractInventoryDistribution>()
+                        .eq("comp_id",warehouseBaseInfo.getCompId()).eq("inventory_type","1").eq("contract_no",warehouseInOutInfo.getContractNo())
+                        .eq("warehouse",warehouseInOutInfo.getWarehouseName()));
+                if (contractInventoryDistribution2!=null){
+                    contractInventoryDistribution2.setRemoveStorage(contractInventoryDistribution2.getRemoveStorage()+warehouseInOutInfo.getNetWeight());
+                    contractInventoryDistributionService.updateById(contractInventoryDistribution2);
+                }
+                //按出库重量结算
+                ContractManagementInfo contractManagementInfo = contractManagementInfoService.selectOne(new EntityWrapper<ContractManagementInfo>()
+                        .eq("contract_no", warehouseBaseInfo.getWarehouseName())
+                        .eq("settlement_weight_method", "1")
+                        .eq("deliver_type", "1")
+                        .eq("delete_flag", "0"));
+                if (contractManagementInfo != null) {
+                    //现货采购入库报表
+                    StockPurchaseReceiptReport stockPurchaseReceiptReport = new StockPurchaseReceiptReport();
+                    stockPurchaseReceiptReport.setId(IdGenerator.generateUUID());
+                    stockPurchaseReceiptReport.setCompId(warehouseBaseInfo.getCompId());
+                    stockPurchaseReceiptReport.setWarehouseRecordId(warehouseInOutInfo.getId());
+                    stockPurchaseReceiptReport.setContractNo(contractManagementInfo.getContractNo());
+                    stockPurchaseReceiptReport.setWarehouseName(warehouseInOutInfo.getWarehouseName());
+                    stockPurchaseReceiptReport.setCarNo(warehouseInOutInfo.getCarNo());
+                    stockPurchaseReceiptReport.setGrossWeight(Double.valueOf(String.valueOf(warehouseInOutInfo.getGrossWeight())));
+                    stockPurchaseReceiptReport.setTare(Double.valueOf(String.valueOf(warehouseInOutInfo.getTare())));
+                    stockPurchaseReceiptReport.setNetWeight(warehouseInOutInfo.getNetWeight());
+                    stockPurchaseReceiptReport.setWarehousingDate(warehouseInOutInfo.getInOutDate());
+                    stockPurchaseReceiptReport.setSettlementWeight(warehouseInOutInfo.getNetWeight());
+                    if (contractManagementInfo.getUnitContractPrice() != null) {
+                        stockPurchaseReceiptReport.setSettlementPrice(Double.valueOf(String.valueOf(weighingManagement.getContractPrice())));
+                        stockPurchaseReceiptReport.setAmountIngPayable(warehouseInOutInfo.getNetWeight() *
+                                (Double.valueOf(String.valueOf(contractManagementInfo.getUnitContractPrice()))));
+                    }
+                    stockPurchaseReceiptReport.setAmountEdPayable(0.0d);
+                    stockPurchaseReceiptReport.setAmountNotPayable(stockPurchaseReceiptReport.getAmountIngPayable());
+                    stockPurchaseReceiptReport.setStatusFlag(StatusEnum.FORM_REVIEWED.getFlag());
+                    stockPurchaseReceiptReport.setStatus(StatusEnum.FORM_REVIEWED.getName());
+                    stockPurchaseReceiptReportService.insert(stockPurchaseReceiptReport);
+                    boolean isStartWorkflow = org.apache.commons.lang3.StringUtils.isBlank(stockPurchaseReceiptReport.getWorkflowId());
+                    // 不是退回的单子
+                    if (isStartWorkflow) {
+                        Workflow workflow = workflowService
+                                .findLatestWorkflowByBusinessCodeByApp(stockPurchaseReceiptReport.getCompId(), "STOCK-PROCUREMENT-RECEIPT-REPORT");
+                        // 没配置审核流程,直接结束并处理信息
+                        if (workflow == null) {
+                            throw new YException(YExceptionEnum.PURCHASE_ORDER_ERROR);
+                        }
+                        // 开启审核流
+                        else {
+                            // 设置状态 已提交审核
+                            stockPurchaseReceiptReport.setWorkflowId(workflow.getId());
+                            stockPurchaseReceiptReportService.updateById(stockPurchaseReceiptReport);
+                            workflowService.startInstance(workflow.getId(), stockPurchaseReceiptReport.getId());
+                        }
+                    }
+                    // 退回的单子 再启用
+                    else {
+                        stockPurchaseReceiptReportService.updateById(stockPurchaseReceiptReport);
+                        workflowService.activateInstance(stockPurchaseReceiptReport.getWorkflowId(), stockPurchaseReceiptReport.getId());
+                    }
+                }
+            }
+        }
+        return "ok";
+    }
 }

+ 2 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/resources/mapper/WarehouseBaseInfoMapper.xml

@@ -179,7 +179,7 @@
         c.comp_name as compName,
         w.warehouse_name as warehouseName,
         w.bin_number as binNumber,
-        w.create_date as createDate,
+        w.in_out_date as createDate,
         w.contract_no as contractNo,
         '' as paymentNo,
         '' as customerName,
@@ -252,6 +252,7 @@
             AND (DATE_FORMAT(w.in_out_date,"%Y%m%d") &lt;=
             DATE_FORMAT(#{endDate},"%Y%m%d"))
         </if>
+        group by w.id
         UNION ALL
         SELECT
         c.comp_name as compName,