zhangyuewww 2 years ago
parent
commit
7b1e50375f

+ 1 - 0
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/exception/YExceptionEnum.java

@@ -46,6 +46,7 @@ public enum YExceptionEnum {
 	IN_WEIGHT_STATUS_ERROR("ERROR", "入库检斤《已称皮重》状态不允许删除,请先退回!"),
 	OUT_WEIGHT_STATUS_ERROR("ERROR", "出库检斤《已称毛重》状态不允许删除,请先退回!"),
 	IN_OUT_STATUS_ERROR("ERROR", "出入库记录状态异常"),
+	AMOUNT_EXCEEDS__ERROR("ERROR", "合同请款金额不能超出总粮款!"),
 	;
 	@Getter
 	private String value;

+ 53 - 1
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/ExpenseInfoServiceImpl.java

@@ -254,10 +254,36 @@ public class ExpenseInfoServiceImpl extends ServiceImpl<ExpenseInfoMapper, Expen
             expenseInfo.setStatusFlag(StatusEnum.COST_PAYMENT.getFlag());
             expenseInfo.setStatus(StatusEnum.COST_PAYMENT.getName());
             //库点费用未分配金额默认等于费用金额
-            if(!"1".equals(expenseInfo.getCostType())&&!!"1".equals(expenseInfo.getExpensesPurpose())) {
+            if(!"1".equals(expenseInfo.getCostType())&&!"1".equals(expenseInfo.getExpensesPurpose())) {
                 expenseInfo.setUnallocatedAmount(expenseInfo.getAmountMoney());
             }
             this.insert(expenseInfo);
+            //合同粮款校验
+            if("1".equals(expenseInfo.getCostType())&&"1".equals(expenseInfo.getExpensesPurpose())) {
+                ContractManagementInfo contractManagementInfo=contractManagementInfoService.selectOne(new EntityWrapper<ContractManagementInfo>()
+                .eq("contract_no",expenseInfo.getContractNo())
+                .eq("comp_id",expenseInfo.getCompId()));
+                if(contractManagementInfo!=null){
+                    if (contractManagementInfo.getUnitContractPrice()!=null){
+                        //合同总粮款
+                        Double grainFund=contractManagementInfo.getUnitContractPrice()*contractManagementInfo.getWeight();
+                        //合同已请粮款金额
+                        Double money=0d;
+                        List<ExpenseInfo> expenseInfoList=this.selectList(new EntityWrapper<ExpenseInfo>()
+                                .eq("contract_no",expenseInfo.getContractNo())
+                                .ne("status","已驳回")
+                                .eq("comp_id",expenseInfo.getCompId()));
+                        if (!CollectionUtils.isEmpty(expenseInfoList)){
+                            money = expenseInfoList.stream().mapToDouble(ExpenseInfo::getAmountMoney).sum();
+                        }
+                        //本次金额加上已请款金额>总粮款时
+                        if (money+expenseInfo.getAmountMoney()>grainFund){
+                            throw new YException(YExceptionEnum.AMOUNT_EXCEEDS__ERROR);
+                        }
+                    }
+                }
+
+            }
             //分配列表
             List<ExpenseAllocationInfo> expenseAllocationInfoList = expenseInfo.getExpenseAllocationInfoList();
             if (!CollectionUtils.isEmpty(expenseAllocationInfoList)) {
@@ -469,6 +495,32 @@ public class ExpenseInfoServiceImpl extends ServiceImpl<ExpenseInfoMapper, Expen
         else if ("4".equals(expenseInfo.getFlag())){
             expenseInfo.setStatusFlag(StatusEnum.COST_RECEIVED.getFlag());
             expenseInfo.setStatus(StatusEnum.COST_RECEIVED.getName());
+            //合同粮款校验
+            if("1".equals(expenseInfo1.getCostType())&&"1".equals(expenseInfo1.getExpensesPurpose())) {
+                ContractManagementInfo contractManagementInfo=contractManagementInfoService.selectOne(new EntityWrapper<ContractManagementInfo>()
+                        .eq("contract_no",expenseInfo1.getContractNo())
+                        .eq("comp_id",expenseInfo1.getCompId()));
+                if(contractManagementInfo!=null){
+                    if (contractManagementInfo.getUnitContractPrice()!=null){
+                        //合同总粮款
+                        Double grainFund=contractManagementInfo.getUnitContractPrice()*contractManagementInfo.getWeight();
+                        //合同已请粮款金额
+                        Double money=0d;
+                        List<ExpenseInfo> expenseInfoList=this.selectList(new EntityWrapper<ExpenseInfo>()
+                                .eq("contract_no",expenseInfo1.getContractNo())
+                                .ne("status","已驳回")
+                                .eq("comp_id",expenseInfo1.getCompId()));
+                        if (!CollectionUtils.isEmpty(expenseInfoList)){
+                            money = expenseInfoList.stream().mapToDouble(ExpenseInfo::getAmountMoney).sum();
+                        }
+                        //本次金额加上已请款金额>总粮款时
+                        if (money+expenseInfo.getAmountMoney()>grainFund){
+                            throw new YException(YExceptionEnum.AMOUNT_EXCEEDS__ERROR);
+                        }
+                    }
+                }
+
+            }
             boolean isStartWorkflow = StringUtils.isBlank(expenseInfo.getWorkflowId());
             // 不是退回的单子
             if (isStartWorkflow) {

+ 26 - 23
winsea-haixin-plugin-yiliangyiyun/src/main/java/com/yh/saas/plugin/yiliangyiyun/service/impl/InOutWarehouseTaskServiceImpl.java

@@ -98,29 +98,32 @@ public class InOutWarehouseTaskServiceImpl extends ServiceImpl<InOutWarehouseTas
             inOutWarehouseTask.setTaskStatusKey(StatusEnum.TASK_REVIEWED.getFlag());
             inOutWarehouseTask.setTaskStatus(StatusEnum.TASK_REVIEWED.getName());
             inOutWarehouseTask.setEstablishDate(new Date());
-            List<SourceRelationInfo> sourceRelationInfoList = inOutWarehouseTask.getSourceRelationInfoList();
-            if (CollectionUtils.isNotEmpty(sourceRelationInfoList)) {
-                for (SourceRelationInfo sourceRelationInfo: sourceRelationInfoList) {
-                    sourceRelationInfo.setId(IdGenerator.generateUUID());
-                    sourceRelationInfo.setTaskId(inOutWarehouseTask.getId());
-                    sourceRelationInfo.setIssuingTime(sourceRelationInfo.getIssuingTimeOther());
-                    //计算比例
-                    sourceRelationInfo.setProportion(sourceRelationInfo.getEstimateOutWarehouseWeight()/Double.valueOf(String.valueOf(inOutWarehouseTask.getWeight())));
-                    sourceRelationInfoService.insert(sourceRelationInfo);
-                    //退库勾选标识
-                    if (sourceRelationInfo.getWarehouseInOutId()!=null){
-                        WarehouseInOutInfo warehouseInOutInfo=warehouseInOutInfoService.selectById(sourceRelationInfo.getWarehouseInOutId());
-                        warehouseInOutInfo.setReturnTickFlag(sourceRelationInfo.getReturnTickFlag());
-                        warehouseInOutInfoService.updateById(warehouseInOutInfo);
-                    }
-                    //出库
-                    else {
-                        WarehousingOrder warehousingOrder=warehousingOrderService.selectById(sourceRelationInfo.getSourceId());
-                        if(warehousingOrder!=null) {
-                            warehousingOrder.setOutWarehouseWeight(warehousingOrder.getOutWarehouseWeight()+sourceRelationInfo.getEstimateOutWarehouseWeight());
-                            //修改入库单剩余重量
-                            warehousingOrder.setSurplusWeight(warehousingOrder.getSurplusWeight() - sourceRelationInfo.getEstimateOutWarehouseWeight());
-                            warehousingOrderService.updateById(warehousingOrder);
+            //出库插入货源关联数据
+            if("1".equals(inOutWarehouseTask.getInOutFlag())) {
+                List<SourceRelationInfo> sourceRelationInfoList = inOutWarehouseTask.getSourceRelationInfoList();
+                if (CollectionUtils.isNotEmpty(sourceRelationInfoList)) {
+                    for (SourceRelationInfo sourceRelationInfo : sourceRelationInfoList) {
+                        sourceRelationInfo.setId(IdGenerator.generateUUID());
+                        sourceRelationInfo.setTaskId(inOutWarehouseTask.getId());
+                        sourceRelationInfo.setIssuingTime(sourceRelationInfo.getIssuingTimeOther());
+                        //计算比例
+                        sourceRelationInfo.setProportion(sourceRelationInfo.getEstimateOutWarehouseWeight() / Double.valueOf(String.valueOf(inOutWarehouseTask.getWeight())));
+                        sourceRelationInfoService.insert(sourceRelationInfo);
+                        //退库勾选标识
+                        if (sourceRelationInfo.getWarehouseInOutId() != null) {
+                            WarehouseInOutInfo warehouseInOutInfo = warehouseInOutInfoService.selectById(sourceRelationInfo.getWarehouseInOutId());
+                            warehouseInOutInfo.setReturnTickFlag(sourceRelationInfo.getReturnTickFlag());
+                            warehouseInOutInfoService.updateById(warehouseInOutInfo);
+                        }
+                        //出库
+                        else {
+                            WarehousingOrder warehousingOrder = warehousingOrderService.selectById(sourceRelationInfo.getSourceId());
+                            if (warehousingOrder != null) {
+                                warehousingOrder.setOutWarehouseWeight(warehousingOrder.getOutWarehouseWeight() + sourceRelationInfo.getEstimateOutWarehouseWeight());
+                                //修改入库单剩余重量
+                                warehousingOrder.setSurplusWeight(warehousingOrder.getSurplusWeight() - sourceRelationInfo.getEstimateOutWarehouseWeight());
+                                warehousingOrderService.updateById(warehousingOrder);
+                            }
                         }
                     }
                 }