浏览代码

修改收付款单bug

jihs 4 年之前
父节点
当前提交
41fefcf290

+ 2 - 2
src/main/java/org/jeecg/common/dto/payment/SlipContentAddReqDTO.java

@@ -16,11 +16,11 @@ public class SlipContentAddReqDTO {
     private String id;
     @ApiModelProperty("收款单id")
     private String slipId;
-    @ApiModelProperty("项目档案id")
+    @ApiModelProperty("项目档案--里程碑列表id")
     private String proArchivesId;
     @ApiModelProperty("项目档案--里程碑")
     private String proArchivesMilestone;
-    @ApiModelProperty("收款条线档案id")
+    @ApiModelProperty("项目档案-里程碑信息子表id")
     private String coArchivesId;
     @ApiModelProperty("收付款条线档案名称")
     private String coArchivesName;

+ 78 - 2
src/main/java/org/jeecg/modules/archives/controller/ProjectManageArchivesController.java

@@ -20,6 +20,7 @@ import org.jeecg.common.dto.archives.ProPlanListReqDTO;
 import org.jeecg.common.dto.archives.ProPlanListRespDTO;
 import org.jeecg.common.dto.basedata.ArchivesBusinessListReqDTO;
 import org.jeecg.common.dto.basedata.ArchivesBusinessListRespDTO;
+import org.jeecg.common.exception.JeecgBootException;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.archives.entity.ProjectManageArchives;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -31,8 +32,17 @@ import org.jeecg.modules.archives.entity.ProjectManageBusinessOther;
 import org.jeecg.modules.archives.service.ProjectManageArchivesAndBusinessService;
 import org.jeecg.modules.archives.service.ProjectManageArchivesService;
 import org.jeecg.modules.archives.service.ProjectManageBusinessOtherService;
+import org.jeecg.modules.expense.entity.ReExpenseSlip;
+import org.jeecg.modules.expense.service.ReExpenseSlipService;
+import org.jeecg.modules.invoice.entity.InvoiceManagePurchase;
 import org.jeecg.modules.invoice.service.InvoiceManagePurchaseDetailService;
+import org.jeecg.modules.invoice.service.InvoiceManagePurchaseService;
+import org.jeecg.modules.payment.entity.ManagerPaymentAndReceiptSlip;
 import org.jeecg.modules.payment.service.ManagerPaymentAndReceiptSlipService;
+import org.jeecg.modules.prowork.entity.ProWorkLogic;
+import org.jeecg.modules.prowork.entity.ProWorkMilestone;
+import org.jeecg.modules.prowork.service.ProWorkLogicService;
+import org.jeecg.modules.prowork.service.ProWorkMilestoneService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 import org.springframework.validation.BindingResult;
@@ -65,7 +75,14 @@ public class ProjectManageArchivesController {
 	private ProjectManageArchivesAndBusinessService projectManageArchivesAndBusinessService;
 	@Autowired
 	private InvoiceManagePurchaseDetailService invoiceManagePurchaseDetailService;
-
+	@Autowired
+	private ReExpenseSlipService reExpenseSlipService;
+    @Autowired
+	private ProWorkLogicService proWorkLogicService;
+    @Autowired
+	private ProWorkMilestoneService proWorkMilestoneService;
+    @Autowired
+	private InvoiceManagePurchaseService invoiceManagePurchaseService;
 
 	@ApiOperation(value = "项目档案分页查询接口", notes = "项目档案分页查询")
 	@ApiImplicitParams({
@@ -233,18 +250,26 @@ public class ProjectManageArchivesController {
 	public Result<ProjectManageArchives> delete(@RequestBody ProjectManageArchives archives) {
 		Result<ProjectManageArchives> result = new Result<ProjectManageArchives>();
 		ProjectManageArchives projectManageArchives = projectManageArchivesService.getById(archives.getId());
+		try{
 		if(projectManageArchives==null) {
 			result.error500("未找到对应实体");
 		}else {
+			checkDownstreamData(projectManageArchives.getId());
+
+
 			projectManageArchives.setDelFlag("1");
 			boolean ok = projectManageArchivesService.deleteById(projectManageArchives);
 			if(ok) {
 				result.success("删除成功!");
 			}
 		}
+		}catch (Exception e){
+			result.error500(e.getMessage());
+		}
 		return result;
 	}
-	
+
+
 	@ApiOperation(value = "项目档案通过id查询接口", notes = "根据id查询项目档案")
 	@ApiImplicitParams({
 			@ApiImplicitParam(name="id", value="id",required=true, dataType="String")
@@ -479,4 +504,55 @@ public class ProjectManageArchivesController {
 		return resp;
 	}
 
+	/**
+	 * @desc 下游数据是否已经使用
+	 */
+	private void checkDownstreamData(String id) throws Exception {
+		//日志
+		QueryWrapper<ProWorkLogic> queryWrapper = new QueryWrapper<>();
+		queryWrapper.eq("del_flag", "0");
+		queryWrapper.eq("pro_id", id);
+		List<ProWorkLogic> logics = proWorkLogicService.list(queryWrapper);
+		if(!CollectionUtils.isEmpty(logics)){
+			throw new JeecgBootException("删除失败,项目日志已使用");
+		}
+		//采购发票,销售发票
+		QueryWrapper<InvoiceManagePurchase> purchaseQueryWrapper = new QueryWrapper<>();
+		purchaseQueryWrapper.eq("del_flag", "0");
+		purchaseQueryWrapper.eq("pro_id", id);
+		List<InvoiceManagePurchase> purchases = invoiceManagePurchaseService.list(purchaseQueryWrapper);
+		if(!CollectionUtils.isEmpty(purchases)){
+			throw new JeecgBootException("删除失败,采购或销售发票已使用");
+		}
+
+
+		//里程碑确认单发票
+		QueryWrapper<ProWorkMilestone> milestoneQueryWrapper = new QueryWrapper<>();
+		milestoneQueryWrapper.eq("del_flag", "0");
+		milestoneQueryWrapper.eq("pro_id", id);
+		List<ProWorkMilestone> milestones = proWorkMilestoneService.list(milestoneQueryWrapper);
+		if(!CollectionUtils.isEmpty(milestones)){
+			throw new JeecgBootException("删除失败,里程碑确认单发票已使用");
+		}
+
+		//里程碑确认单发票
+		QueryWrapper<ManagerPaymentAndReceiptSlip> slipQueryWrapper = new QueryWrapper<>();
+		slipQueryWrapper.eq("del_flag", "0");
+		slipQueryWrapper.eq("pro_id", id);
+		List<ManagerPaymentAndReceiptSlip> slips = managerPaymentAndReceiptSlipService.list(slipQueryWrapper);
+		if(!CollectionUtils.isEmpty(slips)){
+			throw new JeecgBootException("删除失败,里程碑确认单发票已使用");
+		}
+
+
+		//费用报销单
+		QueryWrapper<ReExpenseSlip> reExpenseSlipQueryWrapper = new QueryWrapper<>();
+		reExpenseSlipQueryWrapper.eq("del_flag", "0");
+		reExpenseSlipQueryWrapper.eq("pro_id", id);
+		List<ReExpenseSlip> reExpenseSlips = reExpenseSlipService.list(reExpenseSlipQueryWrapper);
+		if(!CollectionUtils.isEmpty(reExpenseSlips)){
+			throw new JeecgBootException("删除失败,费用报销单已使用");
+		}
+
+	}
 }

+ 3 - 3
src/main/java/org/jeecg/modules/invoice/entity/InvoiceManagePurchaseDetail.java

@@ -36,11 +36,11 @@ public class  InvoiceManagePurchaseDetail implements Serializable {
 	@ApiModelProperty("项目档案里程碑(项目档案—商务,页签中的收款计划)")
 	private String proArchivesMilestone;
 	@ApiModelProperty("金额 (里程碑与首付款条线对应金额)")
-	private java.math.BigDecimal price;
+	private BigDecimal price;
 	@ApiModelProperty("未收票金额")
-	private java.math.BigDecimal uncoPrice;
+	private BigDecimal uncoPrice;
 	@ApiModelProperty("收票金额")
-	private java.math.BigDecimal coPrice;
+	private BigDecimal coPrice;
 	@ApiModelProperty("创建时间")
 	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
     @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")

+ 1 - 1
src/main/java/org/jeecg/modules/payment/entity/ManagePaymentAndReceiptContent.java

@@ -33,7 +33,7 @@ public class ManagePaymentAndReceiptContent implements Serializable {
     private String proArchivesId;
     @ApiModelProperty("项目档案--里程碑")
     private String proArchivesMilestone;
-    @ApiModelProperty("收款条线档案id")
+    @ApiModelProperty("项目档案-里程碑信息子表id")
     private String coArchivesId;
     @ApiModelProperty("收付款条线档案名称")
     private String coArchivesName;

+ 98 - 0
src/main/java/org/jeecg/modules/payment/service/impl/ManagerPaymentAndReceiptSlipServiceImpl.java

@@ -1,7 +1,9 @@
 package org.jeecg.modules.payment.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.common.collect.Lists;
+import io.swagger.annotations.ApiModel;
 import org.apache.commons.lang.StringUtils;
 import org.jeecg.common.dto.archives.ExpensePriceReqDTO;
 import org.jeecg.common.dto.archives.ExpensePriceRespDTO;
@@ -13,6 +15,8 @@ import org.jeecg.common.dto.payment.SlipContentAddReqDTO;
 import org.jeecg.common.dto.payment.SlipContentRespDTO;
 import org.jeecg.common.dto.payment.SlipRespDTO;
 import org.jeecg.modules.archives.entity.ProjectManageArchives;
+import org.jeecg.modules.archives.entity.ProjectManageArchivesAndBusiness;
+import org.jeecg.modules.archives.service.ProjectManageArchivesAndBusinessService;
 import org.jeecg.modules.archives.service.ProjectManageArchivesService;
 import org.jeecg.modules.payment.entity.ManagePaymentAndReceiptContent;
 import org.jeecg.modules.payment.entity.ManagerPaymentAndReceiptSlip;
@@ -25,8 +29,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -47,6 +53,8 @@ public class ManagerPaymentAndReceiptSlipServiceImpl extends ServiceImpl<Manager
     private ManagerPaymentAndReceiptSlipMapper managerPaymentAndReceiptSlipMapper;
     @Autowired
     private ProjectManageArchivesService projectManageArchivesService;
+    @Autowired
+    private ProjectManageArchivesAndBusinessService projectManageArchivesAndBusinessService;
 
     /**
      * @desc 新增
@@ -176,14 +184,67 @@ public class ManagerPaymentAndReceiptSlipServiceImpl extends ServiceImpl<Manager
         QueryWrapper<ManagePaymentAndReceiptContent> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("del_flag", "0");
         queryWrapper.eq("slip_id", id);
+
+        List<ManagePaymentAndReceiptContent> contents = managePaymentAndReceiptContentService.list(queryWrapper);
+
         managePaymentAndReceiptContentService.update(new ManagePaymentAndReceiptContent("1"), queryWrapper);
 
+        //删除回写金额
+        deleteReWriterProArchvicePrice(contents);
+    }
+
+
+
+    /**
+     * @dsec 回写项目档案里程碑金额
+     */
+    private void deleteReWriterProArchvicePrice(List<ManagePaymentAndReceiptContent> contents) {
+        //获取项目档案里程碑数据
+        List<ProjectManageArchivesAndBusiness> businesses = projectManageArchivesAndBusinessService.list(new LambdaQueryWrapper<ProjectManageArchivesAndBusiness>()
+                .eq(ProjectManageArchivesAndBusiness::getDelFlag, "0").in(ProjectManageArchivesAndBusiness::getPlanType, new String[]{"2","4"}));
+        Map<String, List<ProjectManageArchivesAndBusiness>> businessMap = businesses.stream().collect(Collectors.groupingBy(t -> t.getId()));
+
+        for(ManagePaymentAndReceiptContent content : contents){
+            List<ProjectManageArchivesAndBusiness> businessList = businessMap.get(content.getCoArchivesId());
+            if(!CollectionUtils.isEmpty(businessList)){
+                for(ProjectManageArchivesAndBusiness business : businessList){
+                    if(business.getMilestone1().equals(content.getProArchivesMilestone())){
+                        business.setPrice1(BigDecimal.ZERO);
+                        projectManageArchivesAndBusinessService.updateById(business);
+                    }
+                    if(business.getMilestone2().equals(content.getProArchivesMilestone())){
+                        business.setPrice2(BigDecimal.ZERO);
+                        projectManageArchivesAndBusinessService.updateById(business);
+                    }
+                    if(business.getMilestone3().equals(content.getProArchivesMilestone())){
+                        business.setPrice3(BigDecimal.ZERO);
+                        projectManageArchivesAndBusinessService.updateById(business);
+                    }
+                    if(business.getMilestone4().equals(content.getProArchivesMilestone())){
+                        business.setPrice4(BigDecimal.ZERO);
+                        projectManageArchivesAndBusinessService.updateById(business);
+                    }
+                    if(business.getMilestone5().equals(content.getProArchivesMilestone())){
+                        business.setPrice5(BigDecimal.ZERO);
+                        projectManageArchivesAndBusinessService.updateById(business);
+                    }
+
+                }
+            }
+
+
+        }
     }
 
     /**
      * @desc 添加子表
      */
     private void saveChildren(SlipAddReqDTO slipAddReqDTO, String id) {
+        //获取项目档案里程碑数据
+        List<ProjectManageArchivesAndBusiness> businesses = projectManageArchivesAndBusinessService.list(new LambdaQueryWrapper<ProjectManageArchivesAndBusiness>()
+                .eq(ProjectManageArchivesAndBusiness::getDelFlag, "0").in(ProjectManageArchivesAndBusiness::getPlanType, new String[]{"2","4"}));
+        Map<String, List<ProjectManageArchivesAndBusiness>> businessMap = businesses.stream().collect(Collectors.groupingBy(t -> t.getId()));
+
         List<ManagePaymentAndReceiptContent> list = Lists.newArrayList();
         int sort = 1;
         for(SlipContentAddReqDTO reqDTO : slipAddReqDTO.getDetailList()){
@@ -192,7 +253,44 @@ public class ManagerPaymentAndReceiptSlipServiceImpl extends ServiceImpl<Manager
             content.setSlipId(id);
             content.setSort(sort++);
             list.add(content);
+
+            //回写项目档案里程碑信息表的金额
+            reWriterProArchvicePrice(reqDTO, businessMap);
+
         }
         managePaymentAndReceiptContentService.saveBatch(list);
     }
+
+    /**
+     * @desc 回写项目档案里程碑信息表的金额
+     */
+    private void reWriterProArchvicePrice(SlipContentAddReqDTO reqDTO, Map<String, List<ProjectManageArchivesAndBusiness>> businessMap) {
+        List<ProjectManageArchivesAndBusiness> businesses = businessMap.get(reqDTO.getCoArchivesId());
+        if(!CollectionUtils.isEmpty(businesses)){
+            for(ProjectManageArchivesAndBusiness business : businesses){
+                if(business.getMilestone1().equals(reqDTO.getProArchivesMilestone())){
+                    business.setPrice1(reqDTO.getCoPrvice());
+                    projectManageArchivesAndBusinessService.updateById(business);
+                }
+                if(business.getMilestone2().equals(reqDTO.getProArchivesMilestone())){
+                    business.setPrice2(reqDTO.getCoPrvice());
+                    projectManageArchivesAndBusinessService.updateById(business);
+                }
+                if(business.getMilestone3().equals(reqDTO.getProArchivesMilestone())){
+                    business.setPrice3(reqDTO.getCoPrvice());
+                    projectManageArchivesAndBusinessService.updateById(business);
+                }
+                if(business.getMilestone4().equals(reqDTO.getProArchivesMilestone())){
+                    business.setPrice4(reqDTO.getCoPrvice());
+                    projectManageArchivesAndBusinessService.updateById(business);
+                }
+                if(business.getMilestone5().equals(reqDTO.getProArchivesMilestone())){
+                    business.setPrice5(reqDTO.getCoPrvice());
+                    projectManageArchivesAndBusinessService.updateById(business);
+                }
+
+            }
+        }
+
+    }
 }