|
@@ -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";
|
|
|
+ }
|
|
|
}
|