Parcourir la source

普通报销和差旅报销归档事件关联差旅报销

chenjun il y a 1 an
Parent
commit
e0f9cdf626

+ 7 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/commoncost/event/CommonCostEvent.java

@@ -11,6 +11,7 @@ import com.zjugis.business.flow.commoncost.service.CommonCostDetailService;
 import com.zjugis.business.flow.commoncost.service.CommonCostService;
 import com.zjugis.business.flow.outsourcePurchase.dao.OutsourcePurchaseDao;
 import com.zjugis.business.flow.outsourcePurchase.entity.OutsourcePurchaseDO;
+import com.zjugis.business.service.ProjectCostService;
 import com.zjugis.business.service.ProjectService;
 import com.zjugis.framework.common.util.date.LocalDateTimeUtils;
 import com.zjugis.framework.workflow.exception.BusinessException;
@@ -59,6 +60,8 @@ public class CommonCostEvent extends BaseController {
     @Resource
     private ProjectService projectService;
     @Resource
+    private ProjectCostService projectCostService;
+    @Resource
     private WorkflowClient workflowClient;
     @Resource
     private PostApi postApi;
@@ -142,6 +145,10 @@ public class CommonCostEvent extends BaseController {
                     outsourcePurchase.setCommonCostStatus(FLOW_FINISHED);
                     outsourcePurchaseDao.updateState(outsourcePurchase);
                 }
+                List<CommonCostDetailDO> detailList = commonCostDetailService.getListByCommonCostId(entity.getId());
+                for (CommonCostDetailDO commonCostDetailDO : detailList) {
+                    projectCostService.updateCommonCost(commonCostDetailDO.getAmount(),commonCostDetailDO.getProjectId());
+                }
                 return ok("true");
             } else {
                 throw new BusinessException("执行事件出错,请联系管理员!");

+ 4 - 0
zjugis-business/src/main/java/com/zjugis/business/flow/travelcost/event/TravelCostEvent.java

@@ -5,6 +5,7 @@ import com.zjugis.business.bean.entity.Project;
 import com.zjugis.business.converter.travelcost.TravelCostConvert;
 import com.zjugis.business.flow.travelcost.entity.TravelCostDO;
 import com.zjugis.business.flow.travelcost.service.TravelCostService;
+import com.zjugis.business.service.ProjectCostService;
 import com.zjugis.business.service.ProjectService;
 import com.zjugis.framework.common.util.date.LocalDateTimeUtils;
 import com.zjugis.framework.workflow.exception.BusinessException;
@@ -48,6 +49,8 @@ public class TravelCostEvent extends BaseController {
     @Resource
     private ProjectService projectService;
     @Resource
+    private ProjectCostService projectCostService;
+    @Resource
     private WorkflowClient workflowClient;
     @Resource
     private PostApi postApi;
@@ -102,6 +105,7 @@ public class TravelCostEvent extends BaseController {
                 entity.setFlowStatus(FLOW_FINISHED);
                 entity.setFlowFinishtime(LocalDateTime.now());
                 travelCostService.updateTravelCost(TravelCostConvert.INSTANCE.convert(entity));
+                projectCostService.updateTravelCost(entity.getTotalAmount(),entity.getProjectId());
                 return ok("true");
             } else {
                 throw new BusinessException("执行事件出错,请联系管理员!");

+ 25 - 0
zjugis-business/src/main/java/com/zjugis/business/mapper/ProjectCostMapper.java

@@ -9,6 +9,7 @@ import com.zjugis.framework.mybatis.core.mapper.BaseMapperX;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -28,5 +29,29 @@ public interface ProjectCostMapper extends BaseMapperX<ProjectCost> {
     Page<ProjectMonthCostResponse> pageByMonth(Page<ProjectCost> page, @Param("params") ProjectCostDto projectCostDto);
 
     List<String> selectCurMonthProjectIds(String date);
+
+    /**
+     * 更新当月差旅报销费用
+     * @param travelCost
+     * @param projectId
+     * @param firstDayOfMonth
+     */
+    void updateTravelCost(@Param("travelCost") BigDecimal travelCost, @Param("projectId") String projectId, @Param("firstDayOfMonth") String firstDayOfMonth);
+
+    /**
+     * 更新当月普通报销费用
+     * @param commonCost
+     * @param projectId
+     * @param firstDayOfMonth
+     */
+    void updateCommonCost(@Param("commonCost") BigDecimal commonCost, @Param("projectId") String projectId, @Param("firstDayOfMonth") String firstDayOfMonth);
+
+    /**
+     * 更新当月用款费用
+     * @param paymentCost
+     * @param projectId
+     * @param firstDayOfMonth
+     */
+    void updatePaymentCost(@Param("paymentCost") BigDecimal paymentCost, @Param("projectId") String projectId, @Param("firstDayOfMonth") String firstDayOfMonth);
 }
 

+ 22 - 0
zjugis-business/src/main/java/com/zjugis/business/service/ProjectCostService.java

@@ -7,6 +7,7 @@ import com.zjugis.business.bean.entity.ProjectCost;
 import com.zjugis.business.bean.response.ProjectCostResponse;
 import com.zjugis.business.bean.response.ProjectMonthCostResponse;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -58,5 +59,26 @@ public interface ProjectCostService {
     List<String> selectCurMonthProjectIds(int year,int month);
 
     void insertBatch(List<ProjectCost> insertBatch);
+
+    /**
+     * 更新出差成本
+     * @param travelCost
+     * @param projectId
+     */
+    void updateTravelCost(BigDecimal travelCost,String projectId);
+
+    /**
+     * 更新普通报销成本
+     * @param commonCost
+     * @param projectId
+     */
+    void updateCommonCost(BigDecimal commonCost,String projectId);
+
+    /**
+     * 更新用款成本
+     * @param paymentCost
+     * @param projectId
+     */
+    void updatePaymentCost(BigDecimal paymentCost,String projectId);
 }
 

+ 20 - 0
zjugis-business/src/main/java/com/zjugis/business/service/impl/ProjectCostServiceImpl.java

@@ -10,6 +10,8 @@ import com.zjugis.business.flow.travelcost.service.TravelCostService;
 import com.zjugis.business.mapper.ContractMapper;
 import com.zjugis.business.mapper.ProjectCostMapper;
 import com.zjugis.business.service.ProjectCostService;
+import com.zjugis.framework.common.util.date.DateUtils;
+import com.zjugis.framework.common.util.date.LocalDateTimeUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -87,6 +89,24 @@ public class ProjectCostServiceImpl implements ProjectCostService {
         projectCostMapper.insertBatch(insertBatch);
     }
 
+    @Override
+    public void updateTravelCost(BigDecimal travelCost,String projectId) {
+        String firstDayOfMonth = LocalDateTimeUtils.format(DateUtils.getFirstDayOfMonth(), "yyyy-MM-dd");
+        projectCostMapper.updateTravelCost(travelCost,projectId,firstDayOfMonth);
+    }
+
+    @Override
+    public void updateCommonCost(BigDecimal commonCost,String projectId) {
+        String firstDayOfMonth = LocalDateTimeUtils.format(DateUtils.getFirstDayOfMonth(), "yyyy-MM-dd");
+        projectCostMapper.updateCommonCost(commonCost,projectId,firstDayOfMonth);
+    }
+
+    @Override
+    public void updatePaymentCost(BigDecimal paymentCost,String projectId) {
+        String firstDayOfMonth = LocalDateTimeUtils.format(DateUtils.getFirstDayOfMonth(), "yyyy-MM-dd");
+        projectCostMapper.updatePaymentCost(paymentCost,projectId,firstDayOfMonth);
+    }
+
     @Override
     public String insert(ProjectCost projectCost) {
         projectCostMapper.insert(projectCost);

+ 12 - 0
zjugis-business/src/main/resources/mapper/oracle/ProjectCostMapper.xml

@@ -1,6 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.zjugis.business.mapper.ProjectCostMapper">
+    <update id="updateTravelCost">
+        UPDATE PROJECT_COST SET TRAVEL_COST=(NVL(TRAVEL_COST,0)+#{travelCost})
+        WHERE PROJECT_ID=#{projectId} AND COUNT_DATE = to_timestamp(#{firstDayOfMonth,jdbcType=VARCHAR},'YYYY-MM-DD')
+    </update>
+    <update id="updateCommonCost">
+        UPDATE PROJECT_COST SET REIMBURSEMENT_COST=(NVL(REIMBURSEMENT_COST,0)+#{commonCost})
+        WHERE PROJECT_ID=#{projectId} AND COUNT_DATE = to_timestamp(#{firstDayOfMonth,jdbcType=VARCHAR},'YYYY-MM-DD')
+    </update>
+    <update id="updatePaymentCost">
+        UPDATE PROJECT_COST SET PAYMENT_COST=(NVL(PAYMENT_COST,0)+#{commonCost})
+        WHERE PROJECT_ID=#{projectId} AND COUNT_DATE = to_timestamp(#{firstDayOfMonth,jdbcType=VARCHAR},'YYYY-MM-DD')
+    </update>
 
     <select id="calculate" resultType="com.zjugis.business.bean.response.ProjectCostResponse">
         SELECT NVL(SUM(NVL(VEHICLE_COST, 0)), 0) AS vehicleCost,

+ 7 - 0
zjugis-framework/zjugis-common/src/main/java/com/zjugis/framework/common/util/date/DateUtils.java

@@ -187,6 +187,13 @@ public class DateUtils {
         return LocalDateTime.now().withDayOfYear(1);
     }
 
+    /**
+     * 获取当前日期的X月1日
+     */
+    public static LocalDateTime getFirstDayOfMonth() {
+        return LocalDateTime.now().withDayOfMonth(1);
+    }
+
 
     /**
      * 计算两个日期之间相差的年份