Ver Fonte

合同管理增加下笔到账信息

seyason há 1 ano atrás
pai
commit
8e9b20a1a3
13 ficheiros alterados com 102 adições e 27 exclusões
  1. 4 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractController.java
  2. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java
  3. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java
  4. 13 0
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Contract.java
  5. 2 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ContractMapper.java
  6. 2 2
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ContractService.java
  7. 1 1
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java
  8. 8 6
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractServiceImpl.java
  9. 5 4
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java
  10. 0 5
      fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java
  11. 33 1
      fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ContractMapper.xml
  12. 28 0
      fhKeeper/formulahousekeeper/timesheet/src/views/contract/index.vue
  13. 3 0
      fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

+ 4 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ContractController.java

@@ -44,16 +44,16 @@ public class ContractController {
      * 分页查询合同
      */
     @RequestMapping("/getContractPage")
-    public HttpRespMsg getContractPage (HttpServletRequest request, @RequestParam Integer pageIndex, @RequestParam Integer pageSize, String number,String name,String typeName,Integer status,String startDate,String endDate){
-        return contractService.getContractPage(request,pageIndex,pageSize,number,name,typeName,status,startDate,endDate);
+    public HttpRespMsg getContractPage (HttpServletRequest request, @RequestParam Integer pageIndex, @RequestParam Integer pageSize, String number,String name,String typeName,Integer status,String startDate,String endDate, String paymentStartDate, String paymentEndDate){
+        return contractService.getContractPage(request,pageIndex,pageSize,number,name,typeName,status,startDate,endDate, paymentStartDate, paymentEndDate);
     }
 
     /**
      * 导出合同
      */
     @RequestMapping("/ExportContract")
-    public HttpRespMsg ExportContract (HttpServletRequest request, String number,String name,String typeName,Integer status,String startDate,String endDate){
-        return contractService.ExportContract(request,number,name,typeName,status,startDate,endDate);
+    public HttpRespMsg ExportContract (HttpServletRequest request, String number,String name,String typeName,Integer status,String startDate,String endDate, String paymentStartDate, String paymentEndDate){
+        return contractService.ExportContract(request,number,name,typeName,status,startDate,endDate, paymentStartDate, paymentEndDate);
     }
 
     /**

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/ProjectController.java

@@ -425,8 +425,8 @@ public class ProjectController {
         return projectService.getProjectStagesCost(pageIndex, pageSize, projectId, request,stageNames,startDate,endDate);
     }
     @RequestMapping("/exportProjectStagesCost")
-    public HttpRespMsg exportProjectStagesCost(String stageNames,String startDate,String endDate) {
-        return projectService.exportProjectStagesCost(request,stageNames,startDate,endDate);
+    public HttpRespMsg exportProjectStagesCost(String stageNames,String startDate,String endDate, Integer projectId) {
+        return projectService.exportProjectStagesCost(request,stageNames,startDate,endDate, projectId);
     }
     //导出项目任务报表
     @RequestMapping("/exportProjectTask")

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/controller/WeiXinCorpController.java

@@ -2299,7 +2299,7 @@ public class WeiXinCorpController {
                 if (deptId != companyRootDeptId) {
                     int parentId = deptObjJSONArray.getJSONObject(i).getIntValue("parentid");
                     //部门不存在的话要生成部门
-                    curDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", deptId));
+                    curDept = departmentMapper.selectOne(new QueryWrapper<Department>().eq("company_id", companyId).eq("corpwx_deptid", deptId).orderByAsc("department_id").last("limit 1"));
                     if (curDept == null) {
                         Department department = new Department();
                         department.setCorpwxDeptid(deptId);

+ 13 - 0
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/entity/Contract.java

@@ -146,6 +146,19 @@ public class Contract extends Model<Contract> {
     @TableField("payment")
     private BigDecimal payment;
 
+    /**
+     * 下次到款时间
+     */
+    @TableField(exist = false)
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    private LocalDate nextPaymentDate;
+
+    /**
+     * 下次到款金额
+     */
+    @TableField(exist = false)
+    private BigDecimal nextPaymentAmount;
 
     @Override
     protected Serializable pkVal() {

+ 2 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/mapper/ContractMapper.java

@@ -14,5 +14,6 @@ import java.util.List;
  * @since 2022-11-29
  */
 public interface ContractMapper extends BaseMapper<Contract> {
-    List<Contract> selectContract(Integer companyId, Integer pageStart, Integer pageSize, String number, String name, String typeName, Integer status, String startDate,String endDate);
+    List<Contract> selectContract(Integer companyId, Integer pageStart, Integer pageSize, String number, String name, String typeName, Integer status, String startDate,String endDate, String paymentStartDate, String paymentEndDate);
+    Long selectContractCnt(Integer companyId, String number, String name, String typeName, Integer status, String startDate,String endDate, String paymentStartDate, String paymentEndDate);
 }

+ 2 - 2
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ContractService.java

@@ -19,9 +19,9 @@ import java.util.List;
  */
 public interface ContractService extends IService<Contract> {
 
-    HttpRespMsg getContractPage(HttpServletRequest request, @RequestParam Integer pageIndex, @RequestParam Integer pageSize, String number, String name, String typeName, Integer status, String startDate, String endDate);
+    HttpRespMsg getContractPage(HttpServletRequest request, Integer pageIndex, Integer pageSize, String number, String name, String typeName, Integer status, String startDate, String endDate, String paymentStartDate, String paymentEndDate);
 
-    HttpRespMsg ExportContract(HttpServletRequest request, String number, String name, String typeName, Integer status, String startDate, String endDate);
+    HttpRespMsg ExportContract(HttpServletRequest request, String number, String name, String typeName, Integer status, String startDate, String endDate, String paymentStartDate, String paymentEndDate);
 
     HttpRespMsg addContract(HttpServletRequest request, Contract contract, String paymentListStr);
 

+ 1 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/ProjectService.java

@@ -112,7 +112,7 @@ public interface ProjectService extends IService<Project> {
 
     HttpRespMsg getProjectStagesCost(Integer pageIndex, Integer pageSize, Integer projectId, HttpServletRequest request,String stageNames,String startDate,String endDate);
 
-    HttpRespMsg exportProjectStagesCost( HttpServletRequest request,String stageNames,String startDate,String endDate);
+    HttpRespMsg exportProjectStagesCost( HttpServletRequest request,String stageNames,String startDate,String endDate, Integer projectId);
 
     HttpRespMsg getOvertimeList(OvertimeListVO overtimeListVO);
 

+ 8 - 6
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ContractServiceImpl.java

@@ -88,7 +88,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
      * @return
      */
     @Override
-    public HttpRespMsg getContractPage(HttpServletRequest request, @RequestParam Integer pageIndex, @RequestParam Integer pageSize, String number, String name, String typeName, Integer status, String startDate, String endDate) {
+    public HttpRespMsg getContractPage(HttpServletRequest request, Integer pageIndex, Integer pageSize, String number, String name, String typeName, Integer status, String startDate, String endDate, String paymentStartDate, String paymentEndDate) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         try {
             String token = request.getHeader("token");
@@ -120,8 +120,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
             if (StringUtils.isNotBlank(name)){
                 name = "%" + name + "%";
             }
-            List<Contract> contracts = contractMapper.selectContract(user.getCompanyId(), pageStart, pageSize, number, name , typeName , status, startDate,endDate);
-            List<Contract> total = contractMapper.selectContract(user.getCompanyId(), null, null, number, name, typeName, status, startDate, endDate);
+            List<Contract> contracts = contractMapper.selectContract(user.getCompanyId(), pageStart, pageSize, number, name , typeName , status, startDate,endDate, paymentStartDate, paymentEndDate);
+            Long totalCnt = contractMapper.selectContractCnt(user.getCompanyId(), number, name, typeName, status, startDate, endDate, paymentStartDate, paymentEndDate);
             for (Contract contract : contracts) {
                 if(wxCorpInfo!=null&&wxCorpInfo.getSaasSyncContact()==1){
                     contract.setCreatorName(contract.getCreatorWxCorpId());
@@ -169,6 +169,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
                 contractPageVO.setAmounts(contract.getAmounts());
                 contractPageVO.setProjectId(contract.getProjectId());
                 contractPageVO.setPayment(contract.getPayment());
+                contractPageVO.setNextPaymentDate(contract.getNextPaymentDate());
+                contractPageVO.setNextPaymentAmount(contract.getNextPaymentAmount());
                 if (contract.getStatus().equals(2)){
                     for (Map<String, Object> contractLog : contractLogs) {
                         if (contractLog.get("contractId").toString().equals(contract.getId().toString())){
@@ -192,7 +194,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
             }
             HashMap<String, Object> map = new HashMap<>();
             map.put("data",contractPageVOS);
-            map.put("total",total.size());
+            map.put("total",totalCnt);
             httpRespMsg.data = map;
             return httpRespMsg;
         }catch (NullPointerException e) {
@@ -215,7 +217,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
      * @return
      */
     @Override
-    public HttpRespMsg ExportContract(HttpServletRequest request, String number, String name, String typeName, Integer status, String startDate, String endDate) {
+    public HttpRespMsg ExportContract(HttpServletRequest request, String number, String name, String typeName, Integer status, String startDate, String endDate, String paymentStartDate, String paymentEndDate) {
         HttpRespMsg httpRespMsg = new HttpRespMsg();
         User user = userMapper.selectById(request.getHeader("token"));
         List<SysRichFunction> functionContractList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "导出合同");
@@ -224,7 +226,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
             return httpRespMsg;
         }
         WxCorpInfo wxCorpInfo = wxCorpInfoMapper.selectOne(new QueryWrapper<WxCorpInfo>().eq("company_id", user.getCompanyId()));
-        HttpRespMsg contractPage = getContractPage(request, null, null, number, name, typeName, status, startDate, endDate);
+        HttpRespMsg contractPage = getContractPage(request, null, null, number, name, typeName, status, startDate, endDate, paymentStartDate, paymentEndDate);
         HashMap<String, Object> resultDate = (HashMap<String, Object>) contractPage.data;
         List<ContractPageVO> data = (List<ContractPageVO>)resultDate.get("data");
         List<String> headList = new ArrayList<String>();

+ 5 - 4
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ProjectServiceImpl.java

@@ -3203,7 +3203,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
     }
 
     @Override
-    public HttpRespMsg exportProjectStagesCost(HttpServletRequest request,String stageNames,String startDate,String endDate) {
+    public HttpRespMsg exportProjectStagesCost(HttpServletRequest request,String stageNames,String startDate,String endDate, Integer projectId) {
         String token = request.getHeader("TOKEN");
         List<String> stageNameList=null;
         if(stageNames!=null){
@@ -3217,13 +3217,14 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project> impl
         List<SysRichFunction> functionAllList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "全部项目任务报表");
         List<SysRichFunction> functionInchargeList = sysFunctionMapper.getRoleFunctions(user.getRoleId(), "负责项目任务报表");
         //判断查看权限
-        List<ProjectWithStage> record = projectMapper.selectWithStage(companyId, null, null, null,null,startDate,endDate);
-        List<StageCost> allStageCostList = projectMapper.selectStageSum(null,null,null,startDate,endDate);
+        List<ProjectWithStage> record = projectMapper.selectWithStage(companyId, null, null, projectId,null,startDate,endDate);
+        List<Integer> projectIds = record.stream().map(ProjectWithStage::getId).distinct().collect(Collectors.toList());
+        List<StageCost> allStageCostList = projectMapper.selectStageSum(projectIds,projectId,null,startDate,endDate);
         List<Integer> inchagerIds=null;
         if(functionAllList.size()==0){
             if(functionInchargeList.size()>0){
                  record = projectMapper.selectWithStage(companyId, null, null, null,user.getId(),startDate,endDate);
-                 allStageCostList = projectMapper.selectStageSum(null,null,user.getId(),startDate,endDate);
+                 allStageCostList = projectMapper.selectStageSum(projectIds,projectId,user.getId(),startDate,endDate);
             }
         }
         //获取全部的列

+ 0 - 5
fhKeeper/formulahousekeeper/management-platform/src/main/java/com/management/platform/service/impl/ReportServiceImpl.java

@@ -4286,13 +4286,8 @@ public class ReportServiceImpl extends ServiceImpl<ReportMapper, Report> impleme
                     }
                 }
             }
-//            else if (user.getRole() == 5) {
-//                //项目管理员,看自己创建的项目相关的日报
-//                allReportByDate = reportMapper.getPMOReportByDate(startDate, null, user.getId(), endDate);
-//            }
             else {
                 //看公司所有人的
-                allReportByDate = null;
                 if (timeType.getShowFillauditTime() == 1) {
                     allReportByDate = reportMapper.getAllReportByDateWithReportLog(startDate, user.getCompanyId(), null, endDate, projectId,stateKey,branchDepartment);
                 } else {

+ 33 - 1
fhKeeper/formulahousekeeper/management-platform/src/main/resources/mapper/ContractMapper.xml

@@ -28,10 +28,11 @@
     <select id="selectContract" resultType="com.management.platform.entity.Contract">
         select contract.id,contract.company_id,contract.creator_id,contract.number,contract.name,contract.amounts,contract.type_id,contract_type.type_name,contract.status,contract.indate,contract.remarks,
         contract.start_date as startDate,contract.end_date as endDate,
-        user.name as creatorName,user.corpwx_userid as creatorWxCorpId, contract.project_id, contract.payment
+        user.name as creatorName,user.corpwx_userid as creatorWxCorpId, contract.project_id, contract.payment, cp.pay_date AS next_payment_date, cp.amount AS next_payment_amount
         from contract
         left join contract_type
         on contract.type_id = contract_type.id
+        LEFT JOIN (SELECT contract_id, pay_date, amount FROM contract_payment WHERE is_payed = 0 GROUP BY contract_id) cp ON cp.contract_id=contract.id
         left join user
         on contract.creator_id = user.id
         where contract.company_id = #{companyId}
@@ -50,9 +51,40 @@
         <if test="startDate!=null and endDate !=null">
             and indate between #{startDate} and #{endDate}
         </if>
+        <if test="paymentStartDate != null and paymentEndDate != null">
+            and cp.pay_date between #{paymentStartDate} and #{paymentEndDate}
+        </if>
         order by contract.id desc
         <if test="pageStart!=null and pageSize!=null">
             limit #{pageStart},#{pageSize}
         </if>
     </select>
+
+    <select id="selectContractCnt" resultType="java.lang.Long">
+        select count(1) from contract
+        left join contract_type
+        on contract.type_id = contract_type.id
+        LEFT JOIN (SELECT contract_id, pay_date, amount FROM contract_payment WHERE is_payed = 0 GROUP BY contract_id) cp ON cp.contract_id=contract.id
+        left join user
+        on contract.creator_id = user.id
+        where contract.company_id = #{companyId}
+        <if test="number!=null">
+            and number like #{number}
+        </if>
+        <if test="name!=null">
+            and name like #{name}
+        </if>
+        <if test="typeName!=null">
+            and contract_type.id = #{typeName}
+        </if>
+        <if test="status!=null">
+            and status = #{status}
+        </if>
+        <if test="startDate!=null and endDate !=null">
+            and indate between #{startDate} and #{endDate}
+        </if>
+        <if test="paymentStartDate != null and paymentEndDate != null">
+            and cp.pay_date between #{paymentStartDate} and #{paymentEndDate}
+        </if>
+    </select>
 </mapper>

+ 28 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/contract/index.vue

@@ -45,6 +45,22 @@
             @change="searchFilter"
           ></el-date-picker>
         </el-form-item>
+        <el-form-item>
+          <span style="margin-left:5px;margin-right:5px;color:#606266;">下笔回款日期</span>
+          <el-date-picker
+            style="width:240px;"
+            v-model="paymentDate"
+            type="daterange"
+            size="small"
+            :start-placeholder="$t('interval')"
+            :end-placeholder="$t('interval')"
+            value-format="yyyy-MM-dd"
+            clearable
+            @change="searchFilter"
+          ></el-date-picker>
+        </el-form-item>
+        
+
 
         <el-form-item style="float:right;">
           <el-dropdown>
@@ -74,6 +90,13 @@
       <el-table-column prop="payment" label="已回款进度" min-width="130" align="right" header-align="center">
         <span slot-scope="scope">{{scope.row.payment ? (100*scope.row.payment/scope.row.amounts).toFixed(1) + '%': '0%'}}</span>
       </el-table-column>
+      <el-table-column prop="nextPaymentDate" label="下笔回款日期" min-width="130" align="right" header-align="center">
+        <span slot-scope="scope">{{scope.row.nextPaymentDate ? scope.row.nextPaymentDate : '-'}}</span>
+      </el-table-column>
+      <el-table-column prop="nextPaymentAmount" label="下笔回款金额" min-width="130" align="right" header-align="center">
+        <span slot-scope="scope">{{scope.row.nextPaymentAmount?'¥'+scope.row.nextPaymentAmount.toFixed(2) : '-'}}</span>
+      </el-table-column>
+      
       <el-table-column prop="typeName" :label="$t('he-tong-lei-xing')" min-width="140" align="center"></el-table-column>
       <el-table-column prop="status" :label="$t('state.states')" min-width="100" align="center">
         <template slot-scope="scope">
@@ -373,6 +396,7 @@
 export default {
   data() {
     return {
+      paymentDate: null,
       contractPaymentList: [],
       user: JSON.parse(sessionStorage.getItem("user")),
       permissions: JSON.parse(sessionStorage.getItem("permissions")),
@@ -1055,6 +1079,10 @@ export default {
         parameter.startDate = this.dateArray[0]
         parameter.endDate = this.dateArray[1]
       }
+      if(this.paymentDate && this.paymentDate.length == 2){
+        parameter.paymentStartDate = this.paymentDate[0]
+        parameter.paymentEndDate = this.paymentDate[1]
+      }
       this.listLoading = true
       this.http.post('/contract/getContractPage',parameter,
       res => {

+ 3 - 0
fhKeeper/formulahousekeeper/timesheet/src/views/corpreport/list.vue

@@ -1642,6 +1642,9 @@ export default {
           }
           sl.startDate = this.rangeDatas[0]
           sl.endDate = this.rangeDatas[1]
+          if (this.proJuctId) {
+            sl.projectId = this.proJuctId;
+          }
         } else if (this.ins == 6) {
           fName = this.$t('statisticalreportofovertimework')  + '.xlsx';
           url += "/exportOvertimeList";