合同管理功能开发

This commit is contained in:
梁琦涛
2021-09-06 08:57:00 +08:00
parent 1a1fcaca9d
commit f86e5d55f7
26 changed files with 1102 additions and 142 deletions
@@ -0,0 +1,49 @@
package com.jero.contract.common;
public class PayIncomeContractCommon {
/**
* 合同状态(1:草稿,2:待审核,3:已通过,4:未通过,5:已归档)
*/
public final static Integer STATUS1 = 1;
/**
* 合同状态(1:草稿,2:待审核,3:已通过,4:未通过,5:已归档)
*/
public final static Integer STATUS2 = 2;
/**
* 合同状态(1:草稿,2:待审核,3:已通过,4:未通过,5:已归档)
*/
public final static Integer STATUS3 = 3;
/**
* 合同状态(1:草稿,2:待审核,3:已通过,4:未通过,5:已归档)
*/
public final static Integer STATUS4 = 4;
/**
* 合同状态(1:草稿,2:待审核,3:已通过,4:未通过,5:已归档)
*/
public final static Integer STATUS5 = 5;
/**
* 是否打包(1:是,0:否)
*/
public final static Integer PACK1 = 1;
/**
* 是否打包(1:是,0:否)
*/
public final static Integer PACK0 = 0;
/**
* 项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目)
*/
public final static String PROJECT_TYPE1 = "1";
/**
* 项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目)
*/
public final static String PROJECT_TYPE2 = "2";
/**
* 项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目)
*/
public final static String PROJECT_TYPE3 = "3";
/**
* 项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目)
*/
public final static String PROJECT_TYPE4 = "4";
}
@@ -25,7 +25,7 @@ import io.swagger.annotations.ApiOperation;
* @Date: 2021-09-03
* @Version: V1.0
*/
@Api(tags="收入合同关联")
//@Api(tags="收入合同关联")
@RestController
@RequestMapping("/contract/payIncomeContractAssociated")
@Slf4j
@@ -43,7 +43,7 @@ public class PayIncomeContractAssociatedController extends JeroController<PayInc
* @return
*/
@AutoLog(value = "收入合同关联-分页列表查询")
@ApiOperation(value="收入合同关联-分页列表查询", notes="收入合同关联-分页列表查询")
// @ApiOperation(value="收入合同关联-分页列表查询", notes="收入合同关联-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(PayIncomeContractAssociated payIncomeContractAssociated,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@@ -62,7 +62,7 @@ public class PayIncomeContractAssociatedController extends JeroController<PayInc
* @return
*/
@AutoLog(value = "收入合同关联-添加")
@ApiOperation(value="收入合同关联-添加", notes="收入合同关联-添加")
// @ApiOperation(value="收入合同关联-添加", notes="收入合同关联-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayIncomeContractAssociated payIncomeContractAssociated) {
payIncomeContractAssociatedService.save(payIncomeContractAssociated);
@@ -76,7 +76,7 @@ public class PayIncomeContractAssociatedController extends JeroController<PayInc
* @return
*/
@AutoLog(value = "收入合同关联-编辑")
@ApiOperation(value="收入合同关联-编辑", notes="收入合同关联-编辑")
// @ApiOperation(value="收入合同关联-编辑", notes="收入合同关联-编辑")
@PostMapping(value = "/edit")
public Result<?> edit(@RequestBody PayIncomeContractAssociated payIncomeContractAssociated) {
payIncomeContractAssociatedService.updateById(payIncomeContractAssociated);
@@ -90,7 +90,7 @@ public class PayIncomeContractAssociatedController extends JeroController<PayInc
* @return
*/
@AutoLog(value = "收入合同关联-通过id删除")
@ApiOperation(value="收入合同关联-通过id删除", notes="收入合同关联-通过id删除")
// @ApiOperation(value="收入合同关联-通过id删除", notes="收入合同关联-通过id删除")
@GetMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
payIncomeContractAssociatedService.removeById(id);
@@ -104,7 +104,7 @@ public class PayIncomeContractAssociatedController extends JeroController<PayInc
* @return
*/
@AutoLog(value = "收入合同关联-批量删除")
@ApiOperation(value="收入合同关联-批量删除", notes="收入合同关联-批量删除")
// @ApiOperation(value="收入合同关联-批量删除", notes="收入合同关联-批量删除")
@GetMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.payIncomeContractAssociatedService.removeByIds(Arrays.asList(ids.split(",")));
@@ -118,7 +118,7 @@ public class PayIncomeContractAssociatedController extends JeroController<PayInc
* @return
*/
@AutoLog(value = "收入合同关联-通过id查询")
@ApiOperation(value="收入合同关联-通过id查询", notes="收入合同关联-通过id查询")
// @ApiOperation(value="收入合同关联-通过id查询", notes="收入合同关联-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
PayIncomeContractAssociated payIncomeContractAssociated = payIncomeContractAssociatedService.getById(id);
@@ -1,9 +1,5 @@
package com.jero.contract.controller;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -17,8 +13,10 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
/**
* @Description: 审核记录
@@ -26,7 +24,7 @@ import io.swagger.annotations.ApiOperation;
* @Date: 2021-09-03
* @Version: V1.0
*/
@Api(tags="审核记录")
// @Api(tags="审核记录")
@RestController
@RequestMapping("/contract/payIncomeContractAudit")
@Slf4j
@@ -44,7 +42,7 @@ public class PayIncomeContractAuditController extends JeroController<PayIncomeCo
* @return
*/
@AutoLog(value = "审核记录-分页列表查询")
@ApiOperation(value="审核记录-分页列表查询", notes="审核记录-分页列表查询")
// @ApiOperation(value="审核记录-分页列表查询", notes="审核记录-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(PayIncomeContractAudit payIncomeContractAudit,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@@ -63,7 +61,7 @@ public class PayIncomeContractAuditController extends JeroController<PayIncomeCo
* @return
*/
@AutoLog(value = "审核记录-添加")
@ApiOperation(value="审核记录-添加", notes="审核记录-添加")
// @ApiOperation(value="审核记录-添加", notes="审核记录-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayIncomeContractAudit payIncomeContractAudit) {
payIncomeContractAuditService.save(payIncomeContractAudit);
@@ -77,7 +75,7 @@ public class PayIncomeContractAuditController extends JeroController<PayIncomeCo
* @return
*/
@AutoLog(value = "审核记录-编辑")
@ApiOperation(value="审核记录-编辑", notes="审核记录-编辑")
// @ApiOperation(value="审核记录-编辑", notes="审核记录-编辑")
@PostMapping(value = "/edit")
public Result<?> edit(@RequestBody PayIncomeContractAudit payIncomeContractAudit) {
payIncomeContractAuditService.updateById(payIncomeContractAudit);
@@ -91,7 +89,7 @@ public class PayIncomeContractAuditController extends JeroController<PayIncomeCo
* @return
*/
@AutoLog(value = "审核记录-通过id删除")
@ApiOperation(value="审核记录-通过id删除", notes="审核记录-通过id删除")
// @ApiOperation(value="审核记录-通过id删除", notes="审核记录-通过id删除")
@GetMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
payIncomeContractAuditService.removeById(id);
@@ -105,7 +103,7 @@ public class PayIncomeContractAuditController extends JeroController<PayIncomeCo
* @return
*/
@AutoLog(value = "审核记录-批量删除")
@ApiOperation(value="审核记录-批量删除", notes="审核记录-批量删除")
// @ApiOperation(value="审核记录-批量删除", notes="审核记录-批量删除")
@GetMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.payIncomeContractAuditService.removeByIds(Arrays.asList(ids.split(",")));
@@ -119,7 +117,7 @@ public class PayIncomeContractAuditController extends JeroController<PayIncomeCo
* @return
*/
@AutoLog(value = "审核记录-通过id查询")
@ApiOperation(value="审核记录-通过id查询", notes="审核记录-通过id查询")
// @ApiOperation(value="审核记录-通过id查询", notes="审核记录-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
PayIncomeContractAudit payIncomeContractAudit = payIncomeContractAuditService.getById(id);
@@ -1,23 +1,52 @@
package com.jero.contract.controller;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.DateUtils;
import com.jero.common.util.oConvertUtils;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.entity.PayIncomeContractAudit;
import com.jero.contract.entity.PayIncomeContractInstallment;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.contract.service.IPayIncomeContractAuditService;
import com.jero.contract.service.IPayIncomeContractInstallmentService;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.contract.vo.PayIncomeContractInput;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import com.jero.contract.vo.*;
import com.jero.project.entity.PayCommonProject;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.service.IPayCommonProjectService;
import com.jero.project.service.IPayWorkingGroupService;
import com.jero.project.service.IPayWorkingGroupSubItemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.jeecgframework.poi.excel.def.MapExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.params.ExcelExportEntity;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description: 收入合同
@@ -32,6 +61,20 @@ import io.swagger.annotations.ApiOperation;
public class PayIncomeContractController extends JeroController<PayIncomeContract, IPayIncomeContractService> {
@Autowired
private IPayIncomeContractService payIncomeContractService;
@Autowired
private IPayIncomeContractInstallmentService payIncomeContractInstallmentService;
@Autowired
private IPayCommonProjectService payCommonProjectService;
@Autowired
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
@Autowired
private IPayWorkingGroupSubItemService payWorkingGroupSubItemService;
@Autowired
private IPayWorkingGroupService payWorkingGroupService;
@Autowired
private IPayIncomeContractAuditService payIncomeContractAuditService;
@Autowired
private Environment env;
/**
* 分页列表查询
@@ -50,10 +93,15 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name="chargeStatus",required = false) String chargeStatus,
@RequestParam(name="projectName",required = false) String projectName,
@RequestParam(name="startTime",required = false) String startTime,
@RequestParam(name="endTime",required = false) String endTime) {
Page<PayIncomeContract> page = new Page<>(pageNo, pageSize);
IPage<PayIncomeContract> pageList = payIncomeContractService.queryPageList(page, payIncomeContract,chargeStatus,startTime,endTime);
// todo 缺少验证,缺少会议,会员项目
Page<PayIncomeContractOutput> page = new Page<>(pageNo, pageSize);
IPage<PayIncomeContractOutput> pageList = payIncomeContractService.queryPageList(page, payIncomeContract,chargeStatus,projectName,startTime,endTime);
pageList.getRecords().forEach(p->{
System.out.println(JSONObject.toJSONString(p));
});
return Result.OK(pageList);
}
@@ -82,6 +130,79 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
payIncomeContractService.editPayIncomeContractInput(input);
return Result.OK("编辑成功!");
}
/**
* 关联
*
* @param input
* @return
*/
@AutoLog(value = "收入合同-关联")
@ApiOperation(value="收入合同-关联", notes="收入合同-关联")
@PostMapping(value = "/associated")
public Result<?> associated(@RequestBody PayIncomeContractAssociatedInput input) {
List<ProjectOutput> list = payIncomeContractService.associated(input);
return Result.OK("关联成功!",list);
}
/**
* 取消关联
*
* @param payIncomeContractAssociated
* @return
*/
@AutoLog(value = "收入合同-取消关联")
@ApiOperation(value="收入合同-取消关联", notes="收入合同-取消关联")
@PostMapping(value = "/cancelAssociated")
public Result<?> cancelAssociated(@RequestBody PayIncomeContractAssociated payIncomeContractAssociated) {
payIncomeContractService.cancelAssociated(payIncomeContractAssociated);
return Result.OK("关联成功!");
}
/**
* 提交审核
*
* @param payIncomeContract 收入合同
*/
@AutoLog(value = "收入合同-提交审核")
@ApiOperation(value="收入合同-提交审核", notes="收入合同-提交审核")
@PostMapping(value = "/submitAudit")
public Result<?> submitAudit(@RequestBody PayIncomeContract payIncomeContract) {
payIncomeContractService.submitAudit(payIncomeContract);
return Result.OK("提交审核成功!");
}
/**
* 审核
*
* @param payIncomeContractAudit 审核记录
*/
@AutoLog(value = "收入合同-审核")
@ApiOperation(value="收入合同-审核", notes="收入合同-审核")
@PostMapping(value = "/audit")
public Result<?> audit(@RequestBody PayIncomeContractAudit payIncomeContractAudit) {
if(StringUtils.isBlank(payIncomeContractAudit.getContractId())){
return Result.error("id不能为空!");
}
payIncomeContractService.updateAudit(payIncomeContractAudit);
return Result.OK("审核成功!");
}
/**
* 归档
*
* @param payIncomeContract 收入合同
*/
@AutoLog(value = "收入合同-归档")
@ApiOperation(value="收入合同-归档", notes="收入合同-归档")
@PostMapping(value = "/archive")
public Result<?> archive(@RequestBody PayIncomeContract payIncomeContract) {
if(StringUtils.isBlank(payIncomeContract.getId())){
return Result.error("id不能为空!");
}
payIncomeContractService.updateArchive(payIncomeContract.getId());
return Result.OK("归档成功!");
}
/**
* 通过id删除
@@ -120,21 +241,103 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
payIncomeContractService.deletePayIncomeContractInputByIds(Arrays.asList(ids.split(",")));
return Result.OK("批量删除成功!");
}
/**
* 通过id查询
* 通过id查询详情
*
* @param id 合同id
*/
@AutoLog(value = "收入合同-通过id查询")
@ApiOperation(value="收入合同-通过id查询", notes="收入合同-通过id查询")
@AutoLog(value = "收入合同-通过id查询详情")
@ApiOperation(value="收入合同-通过id查询详情", notes="收入合同-通过id查询详情")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id") String id) {
if(StringUtils.isBlank(id)){
return Result.error("id不能为空!");
}
PayIncomeContract payIncomeContract = payIncomeContractService.getById(id);
if(payIncomeContract==null) {
return Result.error("未找到对应数据");
}
return Result.OK(payIncomeContract);
// 获取分期信息
LambdaQueryWrapper<PayIncomeContractInstallment> queryPayIncomeContractInstallment = new LambdaQueryWrapper<>();
queryPayIncomeContractInstallment.eq(PayIncomeContractInstallment::getContractId,payIncomeContract.getId());
List<PayIncomeContractInstallment> listPayIncomeContractInstallment = payIncomeContractInstallmentService.list(queryPayIncomeContractInstallment);
// 获取关联项目id
List<ProjectOutput> listProject = new ArrayList<>();
LambdaQueryWrapper<PayIncomeContractAssociated> queryPayIncomeContractAssociated = new LambdaQueryWrapper<>();
queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getContractId,id);
List<PayIncomeContractAssociated> listPayIncomeContractAssociated = payIncomeContractAssociatedService.list(queryPayIncomeContractAssociated);
if(!CollectionUtils.isEmpty(listPayIncomeContractAssociated)){
List<String> listId = listPayIncomeContractAssociated.stream().map(PayIncomeContractAssociated::getProjectId).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listId)){
// 普通项目
LambdaQueryWrapper<PayCommonProject> queryPayCommonProject = new LambdaQueryWrapper<>();
queryPayCommonProject.in(PayCommonProject::getId,listId);
List<PayCommonProject> listPayCommonProject = payCommonProjectService.list(queryPayCommonProject);
if(!CollectionUtils.isEmpty(listPayCommonProject)){
listPayCommonProject.forEach(p->{
ProjectOutput projectOutput = new ProjectOutput();
projectOutput.setProjectId(p.getId());
projectOutput.setProjectType(PayIncomeContractCommon.PROJECT_TYPE1);
projectOutput.setChargeProject(p.getChargeProject());
projectOutput.setChargeUse(p.getChargeUse());
projectOutput.setChargeCompanyName(p.getChargeCompanyTemporaryName());
projectOutput.setContactsName(p.getChargeCompanyTemporaryName());
projectOutput.setPaidAmount(p.getPaidAmount());
projectOutput.setReceivableAmount(p.getReceivableAmount());
listProject.add(projectOutput);
});
}
// 工作组项目
LambdaQueryWrapper<PayWorkingGroupSubItem> queryPayWorkingGroupSubItem = new LambdaQueryWrapper<>();
queryPayWorkingGroupSubItem.in(PayWorkingGroupSubItem::getId,listId);
List<PayWorkingGroupSubItem> listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(queryPayWorkingGroupSubItem);
if(!CollectionUtils.isEmpty(listPayWorkingGroupSubItem)){
listPayWorkingGroupSubItem.forEach(p->{
PayWorkingGroup payWorkingGroup = payWorkingGroupService.getById(p.getWorkingGroupId());
ProjectOutput projectOutput = new ProjectOutput();
projectOutput.setProjectId(p.getId());
projectOutput.setProjectType(PayIncomeContractCommon.PROJECT_TYPE2);
if(Objects.isNull(payWorkingGroup)){
projectOutput.setChargeProject(payWorkingGroup.getWorkingGroupProject());
}
projectOutput.setChargeProject(p.getChargeProject());
projectOutput.setChargeCompanyName(p.getChargeCompanyTemporaryName());
projectOutput.setContactsName(p.getChargeCompanyTemporaryName());
projectOutput.setPaidAmount(p.getPaidAmount());
projectOutput.setReceivableAmount(p.getReceivableAmount());
listProject.add(projectOutput);
});
}
// todo 会议项目
// todo 会员项目
}
}
// 获取存档记录
LambdaQueryWrapper<PayIncomeContractAudit> queryPayIncomeContractAudit = new LambdaQueryWrapper<>();
queryPayIncomeContractAudit.in(PayIncomeContractAudit::getContractId,id);
List<PayIncomeContractAudit> listPayIncomeContractAudit = payIncomeContractAuditService.list(queryPayIncomeContractAudit);
List<PayIncomeContractAudit> listArchive = listPayIncomeContractAudit.stream().filter(p->Objects.equals(p.getContractStatus(), PayIncomeContractCommon.STATUS5)).collect(Collectors.toList());
// 获取审核记录
List<PayIncomeContractAudit> listAudit = listPayIncomeContractAudit.stream().filter(p->!Objects.equals(p.getContractStatus(), PayIncomeContractCommon.STATUS5)).collect(Collectors.toList());
String str = JSON.toJSONString(payIncomeContract);
PayIncomeContractDetailOutput payIncomeContractDetailOutput = JSONObject.parseObject(str,PayIncomeContractDetailOutput.class);
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){
payIncomeContractDetailOutput.setListInstallment(listPayIncomeContractInstallment);
}
if(!CollectionUtils.isEmpty(listProject)){
listProject.sort((m1,m2)->m2.getCreateTime().compareToIgnoreCase(m1.getCreateTime()));
payIncomeContractDetailOutput.setListProject(listProject);
}
if(!CollectionUtils.isEmpty(listArchive)){
payIncomeContractDetailOutput.setListArchive(listArchive);
}
if(!CollectionUtils.isEmpty(listAudit)){
payIncomeContractDetailOutput.setListAudit(listAudit);
}
return Result.OK(payIncomeContractDetailOutput);
}
/**
@@ -143,9 +346,93 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
* @param request
* @param payIncomeContract 收入合同
*/
@ApiOperation(value="收入合同-导出excel", notes="收入合同-导出excel")
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, PayIncomeContract payIncomeContract) {
return super.exportXls(request, payIncomeContract, PayIncomeContract.class, "pay_income_contract");
// Step.1 组装查询条件
QueryWrapper<PayIncomeContract> queryWrapper = QueryGenerator.initQueryWrapper(payIncomeContract, request.getParameterMap());
// Step.2 获取导出数据
List<PayIncomeContract> pageList = payIncomeContractService.list(queryWrapper);
List<PayIncomeContract> exportList = null;
// 过滤选中数据
String selections = request.getParameter("selections");
if (oConvertUtils.isNotEmpty(selections)) {
List<String> selectionList = Arrays.asList(selections.split(","));
exportList = pageList.stream().filter(item -> selectionList.contains(payIncomeContract.getId())).collect(Collectors.toList());
} else {
exportList = pageList;
}
List<Map<String,String>> list = new ArrayList<>();
// excel字段长度
// todo 缺少字典转换
Map<String,Integer> mapCount = new HashMap<>();
mapCount.put("count",0);
if(!CollectionUtils.isEmpty(exportList)){
List<String> listId = exportList.stream().map(PayIncomeContract::getId).collect(Collectors.toList());
LambdaQueryWrapper<PayIncomeContractInstallment> query = new LambdaQueryWrapper<>();
query.in(PayIncomeContractInstallment::getContractId,listId);
List<PayIncomeContractInstallment> listPayIncomeContractInstallment = payIncomeContractInstallmentService.list(query);
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){
exportList.forEach(p->{
String str = JSON.toJSONString(p);
Map<String,String> map = JSONObject.parseObject(str,Map.class);
List<PayIncomeContractInstallment> listSub = listPayIncomeContractInstallment.stream().filter(item->
Objects.equals(p.getId(),item.getContractId())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listSub)){
int count = mapCount.get("count");
if(count < listSub.size()){
mapCount.put("count",listSub.size());
}
listSub.forEach(p1->{
int n = listSub.indexOf(p1);
map.put("phaseName" + n,p1.getPhaseName());
map.put("accountsReceivableAmount" + n,p1.getAccountsReceivableAmount());
map.put("accountsReceivableTime" + n, DateUtils.date2Str(p1.getAccountsReceivableTime(),new SimpleDateFormat("yyyy-MM-dd")));
map.put("paidAmount" + n,p1.getPaidAmount());
map.put("paidTime" + n,DateUtils.date2Str(p1.getPaidTime(),new SimpleDateFormat("yyyy-MM-dd")));
});
}
list.add(map);
});
}
}
// 设置表头样式
List<ExcelExportEntity> filedsList = new ArrayList<>();
filedsList.add(new ExcelExportEntity("合同编号", "contractNum"));
filedsList.add(new ExcelExportEntity("合同名称", "contractName"));
filedsList.add(new ExcelExportEntity("签订单位", "signedCompanyTemporaryName"));
filedsList.add(new ExcelExportEntity("签订单位联系人", "signedContactsTemporaryName"));
filedsList.add(new ExcelExportEntity("是否开口", "opening"));
filedsList.add(new ExcelExportEntity("负责人", "principalName"));
filedsList.add(new ExcelExportEntity("部门名称", "departmentName"));
filedsList.add(new ExcelExportEntity("签订合同总金额", "contractAmount"));
filedsList.add(new ExcelExportEntity("税率", "rate"));
filedsList.add(new ExcelExportEntity("未税金额", "noTaxAmount"));
filedsList.add(new ExcelExportEntity("合同签订日期", "contractDate"));
filedsList.add(new ExcelExportEntity("合同终止日期", "terminationDate"));
filedsList.add(new ExcelExportEntity("合同约定主要时点", "contractTimePoints"));
int count = mapCount.get("count");
if(count > 0){
for (int i = 1; i <= count; i++){
filedsList.add(new ExcelExportEntity(i + "阶段", "phaseName" + i));
filedsList.add(new ExcelExportEntity(i + "期应收", "accountsReceivableAmount" + i));
filedsList.add(new ExcelExportEntity(i + "期应收时间", "accountsReceivableTime" + i));
filedsList.add(new ExcelExportEntity(i + "期实收", "paidAmount" + i));
filedsList.add(new ExcelExportEntity(i + "期实收时间", "paidTime" + i));
}
}
// Step.3 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
mv.addObject(MapExcelConstants.FILE_NAME, "收入合同"); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(MapExcelConstants.ENTITY_LIST, filedsList);
//update-begin--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置--------------------
ExportParams exportParams=new ExportParams("收入合同", "收入合同");
exportParams.setImageBasePath(env.getProperty("jero.path.upload"));
//update-end--Author:liusq Date:20210126 for:图片导出报错,ImageBasePath未设置----------------------
mv.addObject(MapExcelConstants.PARAMS,exportParams);
mv.addObject(MapExcelConstants.MAP_LIST, list);
return mv;
}
/**
@@ -26,7 +26,7 @@ import io.swagger.annotations.ApiOperation;
* @Date: 2021-09-03
* @Version: V1.0
*/
@Api(tags="分期信息")
// @Api(tags="分期信息")
@RestController
@RequestMapping("/contract/payIncomeContractInstallment")
@Slf4j
@@ -44,7 +44,7 @@ public class PayIncomeContractInstallmentController extends JeroController<PayIn
* @return
*/
@AutoLog(value = "分期信息-分页列表查询")
@ApiOperation(value="分期信息-分页列表查询", notes="分期信息-分页列表查询")
// @ApiOperation(value="分期信息-分页列表查询", notes="分期信息-分页列表查询")
@GetMapping(value = "/list")
public Result<?> queryPageList(PayIncomeContractInstallment payIncomeContractInstallment,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@@ -63,7 +63,7 @@ public class PayIncomeContractInstallmentController extends JeroController<PayIn
* @return
*/
@AutoLog(value = "分期信息-添加")
@ApiOperation(value="分期信息-添加", notes="分期信息-添加")
// @ApiOperation(value="分期信息-添加", notes="分期信息-添加")
@PostMapping(value = "/add")
public Result<?> add(@RequestBody PayIncomeContractInstallment payIncomeContractInstallment) {
payIncomeContractInstallmentService.save(payIncomeContractInstallment);
@@ -77,7 +77,7 @@ public class PayIncomeContractInstallmentController extends JeroController<PayIn
* @return
*/
@AutoLog(value = "分期信息-编辑")
@ApiOperation(value="分期信息-编辑", notes="分期信息-编辑")
// @ApiOperation(value="分期信息-编辑", notes="分期信息-编辑")
@PostMapping(value = "/edit")
public Result<?> edit(@RequestBody PayIncomeContractInstallment payIncomeContractInstallment) {
payIncomeContractInstallmentService.updateById(payIncomeContractInstallment);
@@ -91,7 +91,7 @@ public class PayIncomeContractInstallmentController extends JeroController<PayIn
* @return
*/
@AutoLog(value = "分期信息-通过id删除")
@ApiOperation(value="分期信息-通过id删除", notes="分期信息-通过id删除")
// @ApiOperation(value="分期信息-通过id删除", notes="分期信息-通过id删除")
@GetMapping(value = "/delete")
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
payIncomeContractInstallmentService.removeById(id);
@@ -105,7 +105,7 @@ public class PayIncomeContractInstallmentController extends JeroController<PayIn
* @return
*/
@AutoLog(value = "分期信息-批量删除")
@ApiOperation(value="分期信息-批量删除", notes="分期信息-批量删除")
// @ApiOperation(value="分期信息-批量删除", notes="分期信息-批量删除")
@GetMapping(value = "/deleteBatch")
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
this.payIncomeContractInstallmentService.removeByIds(Arrays.asList(ids.split(",")));
@@ -119,7 +119,7 @@ public class PayIncomeContractInstallmentController extends JeroController<PayIn
* @return
*/
@AutoLog(value = "分期信息-通过id查询")
@ApiOperation(value="分期信息-通过id查询", notes="分期信息-通过id查询")
// @ApiOperation(value="分期信息-通过id查询", notes="分期信息-通过id查询")
@GetMapping(value = "/queryById")
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
PayIncomeContractInstallment payIncomeContractInstallment = payIncomeContractInstallmentService.getById(id);
@@ -144,7 +144,7 @@ public class PayIncomeContract implements Serializable {
/**已收金额*/
@Excel(name = "已收金额", width = 15)
@ApiModelProperty(value = "已收金额")
@NotNull(message = "收金额不能为空!")
@NotNull(message = "收金额不能为空!")
@Max(value = 999999999,message = "应收金额格式错误")
private java.lang.Integer amountReceived;
/**未收金额*/
@@ -47,16 +47,16 @@ public class PayIncomeContractAssociated implements Serializable {
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
}
@@ -47,16 +47,16 @@ public class PayIncomeContractAudit implements Serializable {
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
}
@@ -35,17 +35,17 @@ public class PayIncomeContractInstallment implements Serializable {
@Excel(name = "合同id", width = 15)
@ApiModelProperty(value = "合同id")
private java.lang.String contractId;
/**阶段名称*/
@Excel(name = "阶段名称", width = 15)
@ApiModelProperty(value = "阶段名称")
/**阶段*/
@Excel(name = "阶段", width = 15)
@ApiModelProperty(value = "阶段")
private java.lang.String phaseName;
/**应收金额*/
@Excel(name = "应收金额", width = 15)
@ApiModelProperty(value = "应收金额")
private java.lang.String accountsReceivableAmount;
/**应收时间*/
@Excel(name = "应收时间", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@Excel(name = "应收时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "应收时间")
private java.util.Date accountsReceivableTime;
@@ -54,8 +54,8 @@ public class PayIncomeContractInstallment implements Serializable {
@ApiModelProperty(value = "实收金额")
private java.lang.String paidAmount;
/**实收时间*/
@Excel(name = "实收时间", width = 15, format = "yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@Excel(name = "实收时间", width = 15, format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd")
@ApiModelProperty(value = "实收时间")
private java.util.Date paidTime;
@@ -63,16 +63,16 @@ public class PayIncomeContractInstallment implements Serializable {
@ApiModelProperty(value = "创建人")
private java.lang.String createBy;
/**创建时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private java.util.Date createTime;
/**更新人*/
@ApiModelProperty(value = "更新人")
private java.lang.String updateBy;
/**更新时间*/
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private java.util.Date updateTime;
}
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.vo.PayIncomeContractOutput;
import org.apache.ibatis.annotations.Param;
/**
@@ -23,6 +24,7 @@ public interface PayIncomeContractMapper extends BaseMapper<PayIncomeContract> {
* @Return
* @Exception
*/
IPage<PayIncomeContract> queryPageList(Page<PayIncomeContract> page, @Param("payIncomeContract") PayIncomeContract payIncomeContract,
@Param("chargeStatus") String chargeStatus,@Param("startTime") String startTime,@Param("endTime") String endTime);
IPage<PayIncomeContractOutput> queryPageList(Page<PayIncomeContractOutput> page, @Param("payIncomeContract") PayIncomeContract payIncomeContract,
@Param("chargeStatus") String chargeStatus,@Param("projectName") String projectName,
@Param("startTime") String startTime, @Param("endTime") String endTime);
}
@@ -1,14 +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.jero.contract.mapper.PayIncomeContractMapper">
<select id="queryPageList" resultType="com.jero.contract.entity.PayIncomeContract">
<!--缺少会议项目,会员项目-->
<select id="queryPageList" resultType="com.jero.contract.vo.PayIncomeContractOutput">
SELECT
pic.id,
pic.contract_num AS contractNum,
pic.contract_name AS contractName,
pic.signed_company AS signedCompany,
pic.signed_company_id AS signedCompanyId,
pic.signed_company_temporary_id AS signedCompanyTemporaryId,
pic.signed_company_temporary_name AS signedCompanyTemporaryName,
pic.signed_contacts_id AS signedContactsId,
pic.signed_contacts_temporary_id AS signedContactsTemporaryId,
pic.signed_contacts_temporary_name AS signedContactsTemporaryName,
pic.opening,
pic.principal_id AS principalId,
pic.principal_name AS principalName,
@@ -25,30 +29,36 @@
pic.account_status AS accountStatus,
pic.contract_payment_times AS contractPaymentTimes,
pic.pack,
pic.package_year AS packageYear,
pic.pack_year AS packYear,
pic.status,
pic.create_by AS createBy,
pic.create_time AS createTime,
pic.update_by AS updateBy,
pic.update_time AS updateTime,
if(count(pici.id) > 0,1,0) AS chargeStatus
FROM pay_income_contract pic
LEFT JOIN pay_income_contract_installment pici ON pic.id=pici.contract_id
AND pici.accounts_receivable_time > DATE_FORMAT(NOW(),'%Y-%m-%d') AND pici.accounts_receivable_amount != 0 AND pici.accounts_receivable_amount &lt; pici.paid_amount
if(pic.chargeStatus > 0,1,0) AS chargeStatus
FROM
(
select pay_income_contract.*,(select count(*) from pay_income_contract_installment
where contract_id = pay_income_contract.id AND accounts_receivable_time > DATE_FORMAT(NOW(),'%Y-%m-%d')
AND accounts_receivable_amount != 0 AND accounts_receivable_amount &lt; paid_amount) AS chargeStatus
FROM pay_income_contract
) pic
LEFT JOIN pay_income_contract_associated pica ON pica.contract_id = pic.id
LEFT JOIN pay_common_project pcp ON pcp.id = pcp.project_id
LEFT JOIN pay_common_project pcp ON pcp.id = pica.project_id
LEFT JOIN pay_working_group_subitem pwgs ON pwgs.id = pica.project_id
LEFT JOIN pay_working_group pwg ON pwg.id = pwgs.working_group_id
<where>
<if test="chargeStatus != null and chargeStatus != ''">
pici.id != null
</if>
<if test="payIncomeContract.contractNum != null and payIncomeContract.contractNum != ''">
AND pic.contract_num = #{payIncomeContract.contractNum}
AND pic.contract_num LIKE CONCAT('%',CONCAT(#{payIncomeContract.contractNum},'%'))
</if>
<if test="payIncomeContract.contractName != null and payIncomeContract.contractName != ''">
AND pic.contract_name = #{payIncomeContract.contractName}
AND pic.contract_name LIKE CONCAT('%',CONCAT(#{payIncomeContract.contractName},'%'))
</if>
<if test="projectId != null and projectId != ''">
AND pica.project_id = #{projectId}
<if test="projectName != null and projectName != ''">
AND (
pcp.charge_project LIKE CONCAT('%',CONCAT(#{projectName},'%'))
OR pwg.working_group_project LIKE CONCAT('%',CONCAT(#{projectName},'%'))
)
</if>
<if test="startTime != null and startTime != ''">
AND pic.create_time >= #{startTime}
@@ -59,7 +69,10 @@
<if test="payIncomeContract.status != null and payIncomeContract.status != ''">
AND pic.status = #{payIncomeContract.status}
</if>
<if test="chargeStatus != null and chargeStatus != ''">
AND pic.chargeStatus = #{chargeStatus}
</if>
</where>
order by pic.create_time desc
GROUP BY pic.id ORDER BY pic.create_time desc
</select>
</mapper>
@@ -4,7 +4,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.entity.PayIncomeContractAudit;
import com.jero.contract.vo.PayIncomeContractAssociatedInput;
import com.jero.contract.vo.PayIncomeContractInput;
import com.jero.contract.vo.PayIncomeContractOutput;
import com.jero.contract.vo.ProjectOutput;
import java.util.List;
@@ -19,16 +24,19 @@ public interface IPayIncomeContractService extends IService<PayIncomeContract> {
* @Description 分页列表
* @Author lqt
* @Date 2021/9/3
* @Param
* @Param payIncomeContract 收入合同
* @Param chargeStatus 来款状态
* @Param startTime 开始时间
* @Param endTime 结束时间
* @Return
* @Exception
*/
IPage<PayIncomeContract> queryPageList(Page<PayIncomeContract> page,PayIncomeContract payIncomeContract,String chargeStatus,String startTime,String endTime);
IPage<PayIncomeContractOutput> queryPageList(Page<PayIncomeContractOutput> page, PayIncomeContract payIncomeContract, String chargeStatus,String projectName, String startTime, String endTime);
/**
* @Description 添加
* @Author lqt
* @Date 2021/9/3
* @Param
* @Param input 收入合同
* @Return
* @Exception
*/
@@ -37,16 +45,61 @@ public interface IPayIncomeContractService extends IService<PayIncomeContract> {
* @Description 编辑
* @Author lqt
* @Date 2021/9/3
* @Param
* @Param input 收入合同
* @Return
* @Exception
*/
void editPayIncomeContractInput(PayIncomeContractInput input);
/**
* @Description 收入合同-关联
* @Author lqt
* @Date 2021/9/5
* @Param input 关联项目
* @Return
* @Exception
*/
List<ProjectOutput> associated(PayIncomeContractAssociatedInput input);
/**
* @Description 取消关联
* @Author lqt
* @Date 2021/9/5
* @Param payIncomeContractAssociated 取消关联
* @Return
* @Exception
*/
void cancelAssociated(PayIncomeContractAssociated payIncomeContractAssociated);
/**
* @Description 提交审核
* @Author lqt
* @Date 2021/9/5
* @Param payIncomeContract 收入合同
* @Return
* @Exception
*/
void submitAudit(PayIncomeContract payIncomeContract);
/**
* @Description 审核
* @Author lqt
* @Date 2021/9/5
* @Param payIncomeContractAudit 审核记录
* @Return
* @Exception
*/
void updateAudit(PayIncomeContractAudit payIncomeContractAudit);
/**
* @Description 归档
* @Author lqt
* @Date 2021/9/5
* @Param id 合同id
* @Return
* @Exception
*/
void updateArchive(String id);
/**
* @Description 删除
* @Author lqt
* @Date 2021/9/3
* @Param
* @Param id 合同id
* @Return
* @Exception
*/
@@ -55,7 +108,7 @@ public interface IPayIncomeContractService extends IService<PayIncomeContract> {
* @Description 批量删除
* @Author lqt
* @Date 2021/9/3
* @Param
* @Param id 合同id
* @Return
* @Exception
*/
@@ -3,12 +3,14 @@ package com.jero.contract.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jero.common.api.vo.Result;
import com.jero.common.exception.JeroBootException;
import com.jero.common.util.ValidUtil;
import com.jero.contract.common.PayIncomeContractCommon;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.entity.PayIncomeContractAudit;
@@ -18,7 +20,22 @@ import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.contract.service.IPayIncomeContractAuditService;
import com.jero.contract.service.IPayIncomeContractInstallmentService;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.contract.vo.PayIncomeContractAssociatedInput;
import com.jero.contract.vo.PayIncomeContractInput;
import com.jero.contract.vo.PayIncomeContractOutput;
import com.jero.contract.vo.ProjectOutput;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.project.entity.PayCommonProject;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.service.IPayCommonProjectService;
import com.jero.project.service.IPayWorkingGroupService;
import com.jero.project.service.IPayWorkingGroupSubItemService;
import com.jero.temporary.entity.PayCompanyManagementTemporary;
import com.jero.temporary.entity.PayContactsManagementTemporary;
import com.jero.temporary.service.IPayCompanyManagementTemporaryService;
import com.jero.temporary.service.IPayContactsManagementTemporaryService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
@@ -52,10 +69,22 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
@Autowired
private IPayIncomeContractAuditService payIncomeContractAuditService;
@Autowired
private ISysUserService sysUserService;
@Autowired
private IPayCompanyManagementTemporaryService payCompanyManagementTemporaryService;
@Autowired
private IPayContactsManagementTemporaryService payContactsManagementTemporaryService;
@Autowired
private IPayCommonProjectService payCommonProjectService;
@Autowired
private IPayWorkingGroupService payWorkingGroupService;
@Autowired
private IPayWorkingGroupSubItemService payWorkingGroupSubItemService;
@Override
public IPage<PayIncomeContract> queryPageList(Page<PayIncomeContract> page, PayIncomeContract payIncomeContract, String chargeStatus,String startTime,String endTime) {
return payIncomeContractMapper.queryPageList(page,payIncomeContract,chargeStatus,startTime,endTime);
public IPage<PayIncomeContractOutput> queryPageList(Page<PayIncomeContractOutput> page, PayIncomeContract payIncomeContract, String chargeStatus,String projectName, String startTime, String endTime) {
return payIncomeContractMapper.queryPageList(page,payIncomeContract,chargeStatus,projectName,startTime,endTime);
}
@Override
@@ -101,19 +130,26 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
log.info("收入合同-添加异常",e);
throw new JeroBootException("合同名称已存在!");
}
setPayIncomeContract(payIncomeContract);
payIncomeContract.setStatus(PayIncomeContractCommon.STATUS1);
payIncomeContractService.save(payIncomeContract);
StringBuilder msgPayIncomeContractInstallment = new StringBuilder();
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){
List<PayIncomeContractInstallment> finalListPayIncomeContractInstallment = listPayIncomeContractInstallment;
listPayIncomeContractInstallment.forEach(p->{
p.setContractId(payIncomeContract.getId());
msgPayIncomeContractInstallment.append("").append(finalListPayIncomeContractInstallment.indexOf(p)).append("阶段:").append(ValidUtil.validateAll(p));
StringBuilder sb = ValidUtil.validateAll(p);
if(!StringUtils.isBlank(sb)){
msgPayIncomeContractInstallment.append("").append(finalListPayIncomeContractInstallment.indexOf(p)).append("阶段:").append(sb);
}
});
payIncomeContractInstallmentService.saveBatch(listPayIncomeContractInstallment);
}
if(!StringUtils.isBlank(msgPayIncomeContractInstallment)){
throw new JeroBootException(msgPayIncomeContractInstallment.toString());
}
// todo 缺少发送消息
}
@Override
@@ -133,6 +169,17 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
if(!StringUtils.isBlank(msgPayIncomeContract)){
throw new JeroBootException(msgPayIncomeContract.toString());
}
if(StringUtils.isBlank(payIncomeContract.getId())){
throw new JeroBootException("收入合同id不能为空!");
}
PayIncomeContract payIncomeContractStatus = payIncomeContractService.getById(payIncomeContract.getId());
if(Objects.isNull(payIncomeContractStatus)){
throw new JeroBootException("收入合同不存在!");
}
if(!Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS1)
&& !Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS4)){
throw new JeroBootException("收入合同不可编辑!");
}
List<PayIncomeContractInstallment> listPayIncomeContractInstallment = new ArrayList<>();
if(!StringUtils.isBlank(input.getInstallment())){
listPayIncomeContractInstallment = JSONArray.parseArray(input.getInstallment(),PayIncomeContractInstallment.class);
@@ -160,49 +207,332 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("合同名称已存在!");
}
StringBuilder msgPayIncomeContractInstallment = new StringBuilder();
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){
List<String> list = listPayIncomeContractInstallment.stream().map(PayIncomeContractInstallment::getId).collect(Collectors.toList());
// 删除历史
LambdaQueryWrapper<PayIncomeContractInstallment> queryPayIncomeContractInstallment = new LambdaQueryWrapper<>();
queryPayIncomeContractInstallment.eq(PayIncomeContractInstallment::getContractId,payIncomeContract.getId());
List<PayIncomeContractInstallment> listPayIncomeContractInstallmentOld = payIncomeContractInstallmentService.list(queryPayIncomeContractInstallment);
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallmentOld)){
List<String> list = listPayIncomeContractInstallmentOld.stream().map(PayIncomeContractInstallment::getId).collect(Collectors.toList());
payIncomeContractInstallmentService.removeByIds(list);
}
// 新增
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){
List<PayIncomeContractInstallment> finalListPayIncomeContractInstallment = listPayIncomeContractInstallment;
listPayIncomeContractInstallment.forEach(p->{
p.setContractId(payIncomeContract.getId());
msgPayIncomeContractInstallment.append("").append(finalListPayIncomeContractInstallment.indexOf(p)).append("阶段:").append(ValidUtil.validateAll(p));
StringBuilder sb = ValidUtil.validateAll(p);
if(!StringUtils.isBlank(sb)){
msgPayIncomeContractInstallment.append("").append(finalListPayIncomeContractInstallment.indexOf(p)).append("阶段:").append(sb);
}
});
payIncomeContractInstallmentService.saveBatch(listPayIncomeContractInstallment);
}
if(!StringUtils.isBlank(msgPayIncomeContractInstallment)){
throw new JeroBootException(msgPayIncomeContractInstallment.toString());
}
setPayIncomeContract(payIncomeContract);
payIncomeContractService.updateById(payIncomeContract);
}
@Override
@Transactional
public List<ProjectOutput> associated(PayIncomeContractAssociatedInput input) {
if(StringUtils.isBlank(input.getAssociated())){
throw new JeroBootException("关联项目不能为空!");
}
List<PayIncomeContractAssociated> listPayIncomeContractAssociated = JSONArray.parseArray(input.getAssociated(),PayIncomeContractAssociated.class);
if(CollectionUtils.isEmpty(listPayIncomeContractAssociated)){
throw new JeroBootException("关联项目不能为空!");
}
List<ProjectOutput> listProjectOutput = new ArrayList<>();
listPayIncomeContractAssociated.forEach(p->{
ProjectOutput projectOutput = new ProjectOutput();
StringBuilder msgPayIncomeContractAssociated = ValidUtil.validateAll(p);
if(!StringUtils.isBlank(msgPayIncomeContractAssociated)){
throw new JeroBootException(msgPayIncomeContractAssociated.toString());
}
PayIncomeContract payIncomeContract = payIncomeContractService.getById(p.getContractId());
if(Objects.isNull(payIncomeContract)){
throw new JeroBootException("合同不存在!");
}
LambdaQueryWrapper<PayIncomeContractAssociated> queryPayIncomeContractAssociated = new LambdaQueryWrapper<>();
queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getContractId,p.getContractId());
queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getProjectId,p.getProjectId());
List<PayIncomeContractAssociated> listPayIncomeContractAssociatedNew = payIncomeContractAssociatedService.list(queryPayIncomeContractAssociated);
if(!CollectionUtils.isEmpty(listPayIncomeContractAssociatedNew)){
throw new JeroBootException("项目已被其他合同关联!");
}
// 查看项目类型
switch (String.valueOf(p.getProjectType())){
case PayIncomeContractCommon.PROJECT_TYPE1:
// 普通项目
// 验证项目是否存在
PayCommonProject payCommonProject = payCommonProjectService.getById(p.getProjectId());
if(Objects.isNull(payCommonProject)){
throw new JeroBootException("项目不存在!");
}
// 合同选择打包,运行年份不是打包企业,添加打包企业
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
LambdaUpdateWrapper<PayCommonProject> updatePayCommonProject = new LambdaUpdateWrapper<>();
updatePayCommonProject.eq(PayCommonProject::getPack,PayIncomeContractCommon.PACK1);
updatePayCommonProject.eq(PayCommonProject::getId,p.getProjectId());
payCommonProjectService.update(updatePayCommonProject);
// todo 添加打包企业
}
projectOutput.setProjectId(payCommonProject.getId());
projectOutput.setProjectType(PayIncomeContractCommon.PROJECT_TYPE1);
projectOutput.setChargeProject(payCommonProject.getChargeProject());
projectOutput.setChargeUse(payCommonProject.getChargeUse());
projectOutput.setChargeCompanyName(payCommonProject.getChargeCompanyTemporaryName());
projectOutput.setContactsName(payCommonProject.getChargeCompanyTemporaryName());
projectOutput.setPaidAmount(payCommonProject.getPaidAmount());
projectOutput.setReceivableAmount(payCommonProject.getReceivableAmount());
break;
case PayIncomeContractCommon.PROJECT_TYPE2:
// 工作组项目
PayWorkingGroup payWorkingGroup = payWorkingGroupService.getById(p.getProjectId());
if(Objects.isNull(payWorkingGroup)){
throw new JeroBootException("工作组项目不存在!");
}
LambdaQueryWrapper<PayWorkingGroupSubItem> queryPayWorkingGroupSubItem = new LambdaQueryWrapper<>();
queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getWorkingGroupId,payWorkingGroup.getId());
queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getChargeCompanyId,payIncomeContract.getSignedCompanyId());
List<PayWorkingGroupSubItem> listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(queryPayWorkingGroupSubItem);
if(CollectionUtils.isEmpty(listPayWorkingGroupSubItem)){
throw new JeroBootException("工作组成员单位不存在!");
}
// 更新项目id
p.setProjectId(listPayWorkingGroupSubItem.get(0).getId());
// 打包,将关联项目设置成打包
LambdaUpdateWrapper<PayWorkingGroupSubItem> updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>();
updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getPack,PayIncomeContractCommon.PACK1);
updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getId,listPayWorkingGroupSubItem.get(0).getId());
payWorkingGroupSubItemService.update(updatePayWorkingGroupSubItem);
projectOutput.setProjectId(listPayWorkingGroupSubItem.get(0).getId());
projectOutput.setProjectType(PayIncomeContractCommon.PROJECT_TYPE2);
projectOutput.setChargeProject(payWorkingGroup.getWorkingGroupProject());
projectOutput.setChargeProject(listPayWorkingGroupSubItem.get(0).getChargeProject());
projectOutput.setChargeCompanyName(listPayWorkingGroupSubItem.get(0).getChargeCompanyTemporaryName());
projectOutput.setContactsName(listPayWorkingGroupSubItem.get(0).getChargeCompanyTemporaryName());
projectOutput.setPaidAmount(listPayWorkingGroupSubItem.get(0).getPaidAmount());
projectOutput.setReceivableAmount(listPayWorkingGroupSubItem.get(0).getReceivableAmount());
break;
case PayIncomeContractCommon.PROJECT_TYPE3:
// todo 会议项目
break;
case PayIncomeContractCommon.PROJECT_TYPE4:
// todo 会员项目
break;
default:break;
}
listProjectOutput.add(projectOutput);
payIncomeContractAssociatedService.save(p);
});
return listProjectOutput;
}
@Override
@Transactional
public void cancelAssociated(PayIncomeContractAssociated payIncomeContractAssociated) {
PayIncomeContract payIncomeContract = payIncomeContractService.getById(payIncomeContractAssociated.getContractId());
if(Objects.isNull(payIncomeContract)){
throw new JeroBootException("合同不存在!");
}
// 查看项目类型
switch (String.valueOf(payIncomeContractAssociated.getProjectType())){
case PayIncomeContractCommon.PROJECT_TYPE1:
// 普通项目
// 验证项目是否存在
PayCommonProject payCommonProject = payCommonProjectService.getById(payIncomeContractAssociated.getProjectId());
if(Objects.isNull(payCommonProject)){
throw new JeroBootException("项目不存在!");
}
// 将关联项目取消打包
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
LambdaUpdateWrapper<PayCommonProject> updatePayCommonProject = new LambdaUpdateWrapper<>();
updatePayCommonProject.eq(PayCommonProject::getPack,PayIncomeContractCommon.PACK0);
updatePayCommonProject.eq(PayCommonProject::getId,payIncomeContractAssociated.getProjectId());
payCommonProjectService.update(updatePayCommonProject);
}
break;
case PayIncomeContractCommon.PROJECT_TYPE2:
// 工作组项目
PayWorkingGroup payWorkingGroup = payWorkingGroupService.getById(payIncomeContractAssociated.getProjectId());
if(Objects.isNull(payWorkingGroup)){
throw new JeroBootException("工作组项目不存在!");
}
LambdaQueryWrapper<PayWorkingGroupSubItem> queryPayWorkingGroupSubItem = new LambdaQueryWrapper<>();
queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getWorkingGroupId,payWorkingGroup.getId());
queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getChargeCompanyId,payIncomeContract.getSignedCompanyId());
List<PayWorkingGroupSubItem> listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(queryPayWorkingGroupSubItem);
if(CollectionUtils.isEmpty(listPayWorkingGroupSubItem)){
throw new JeroBootException("工作组成员单位不存在!");
}
// 更新项目id
payIncomeContractAssociated.setProjectId(listPayWorkingGroupSubItem.get(0).getId());
// 将关联项目取消打包
LambdaUpdateWrapper<PayWorkingGroupSubItem> updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>();
updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getPack,PayIncomeContractCommon.PACK0);
updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getId,listPayWorkingGroupSubItem.get(0).getId());
payWorkingGroupSubItemService.update(updatePayWorkingGroupSubItem);
break;
case PayIncomeContractCommon.PROJECT_TYPE3:
// todo 会议项目
break;
case PayIncomeContractCommon.PROJECT_TYPE4:
// todo 会员项目
break;
default:break;
}
payIncomeContractAssociatedService.save(payIncomeContractAssociated);
}
@Override
public void submitAudit(PayIncomeContract payIncomeContract) {
StringBuilder msgPayIncomeContractAudit = ValidUtil.validateAll(payIncomeContract);
if(!StringUtils.isBlank(msgPayIncomeContractAudit)){
throw new JeroBootException(msgPayIncomeContractAudit.toString());
}
if(StringUtils.isBlank(payIncomeContract.getId())){
throw new JeroBootException("合同id不能为空!");
}
PayIncomeContract payIncomeContractNew = payIncomeContractService.getById(payIncomeContract.getId());
if(Objects.isNull(payIncomeContractNew)){
throw new JeroBootException("合同不存在!");
}
LambdaUpdateWrapper<PayIncomeContract> updatePayIncomeContract = new LambdaUpdateWrapper<>();
updatePayIncomeContract.eq(PayIncomeContract::getId,payIncomeContract.getId());
updatePayIncomeContract.eq(PayIncomeContract::getStatus,PayIncomeContractCommon.STATUS3);
payIncomeContractService.update(updatePayIncomeContract);
}
/**
* @Description 插入企业信息,联系人信息到临时表,更新项目记录
* @Author lqt
* @Date 2021/8/31
* @Param payCommonProject
* @Return
* @Exception
*/
private void setPayIncomeContract(PayIncomeContract payIncomeContract){
// 企业
PayCompanyManagementTemporary chargeCompanyName = payCompanyManagementTemporaryService.insertCompanyManagementTemporary(payIncomeContract.getSignedCompanyId());
if(Objects.isNull(chargeCompanyName)){
throw new JeroBootException("企业名称为空!");
}
// 联系人
PayContactsManagementTemporary contactsName = payContactsManagementTemporaryService.insertContactsManagementTemporary(payIncomeContract.getSignedContactsId());
if(Objects.isNull(contactsName)){
throw new JeroBootException("联系人名称为空!");
}
// 负责人名称
SysUser principalName = sysUserService.getById(payIncomeContract.getPrincipalId());
if(Objects.isNull(principalName)){
throw new JeroBootException("负责人名称为空!");
}
payIncomeContract.setPrincipalId(principalName.getId());
payIncomeContract.setPrincipalName(principalName.getRealname());
payIncomeContract.setSignedContactsTemporaryId(contactsName.getId());
payIncomeContract.setSignedContactsTemporaryName(contactsName.getName());
payIncomeContract.setSignedCompanyTemporaryId(chargeCompanyName.getId());
payIncomeContract.setSignedCompanyTemporaryName(chargeCompanyName.getCompanyName());
}
@Override
@Transactional
public void updateAudit(PayIncomeContractAudit payIncomeContractAudit) {
PayIncomeContract payIncomeContractStatus = payIncomeContractService.getById(payIncomeContractAudit.getContractId());
if(Objects.isNull(payIncomeContractStatus)){
throw new JeroBootException("收入合同不存在!");
}
// 校验合同状态是否为待审核
if(!Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS2)){
throw new JeroBootException("收入合同不可审核!");
}
if(Objects.isNull(payIncomeContractAudit.getContractStatus()) ||
(!Objects.equals(payIncomeContractAudit.getContractStatus(),PayIncomeContractCommon.STATUS3)
&& !Objects.equals(payIncomeContractAudit.getContractStatus(),PayIncomeContractCommon.STATUS4))){
throw new JeroBootException("收入合同审核状态不正确!");
}
if(Objects.equals(payIncomeContractAudit.getContractStatus(),PayIncomeContractCommon.STATUS4)
&& StringUtils.isBlank(payIncomeContractAudit.getExplainRemarks())){
throw new JeroBootException("请输入拒绝说明!");
}
LambdaUpdateWrapper<PayIncomeContract> update = new LambdaUpdateWrapper();
update.eq(PayIncomeContract::getId,payIncomeContractAudit.getContractId());
update.eq(PayIncomeContract::getStatus, payIncomeContractAudit.getContractStatus());
payIncomeContractService.update(update);
// 添加审核记录
payIncomeContractAuditService.save(payIncomeContractAudit);
}
@Override
@Transactional
public void updateArchive(String id) {
PayIncomeContract payIncomeContractStatus = payIncomeContractService.getById(id);
if(Objects.isNull(payIncomeContractStatus)){
throw new JeroBootException("收入合同不存在!");
}
// 校验合同状态是否为已通过
if(!Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS3)){
throw new JeroBootException("收入合同不可归档!");
}
LambdaUpdateWrapper<PayIncomeContract> update = new LambdaUpdateWrapper();
update.eq(PayIncomeContract::getId,id);
update.eq(PayIncomeContract::getStatus, PayIncomeContractCommon.STATUS5);
payIncomeContractService.update(update);
// 添加归档记录
PayIncomeContractAudit payIncomeContractAudit = new PayIncomeContractAudit();
payIncomeContractAudit.setContractId(id);
payIncomeContractAudit.setContractStatus(PayIncomeContractCommon.STATUS5);
payIncomeContractAuditService.save(payIncomeContractAudit);
}
@Override
@Transactional
public void deletePayIncomeContractInputById(String id) {
PayIncomeContract payIncomeContractStatus = payIncomeContractService.getById(id);
if(Objects.isNull(payIncomeContractStatus)){
throw new JeroBootException("收入合同不存在!");
}
if(!Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS1)
&& !Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS4)){
throw new JeroBootException("收入合同不可删除!");
}
payIncomeContractService.removeById(id);
LambdaQueryWrapper<PayIncomeContractInstallment> queryPayIncomeContractInstallment = new LambdaQueryWrapper<>();
queryPayIncomeContractInstallment.eq(PayIncomeContractInstallment::getContractId,id);
payIncomeContractInstallmentService.remove(queryPayIncomeContractInstallment);
LambdaQueryWrapper<PayIncomeContractAssociated> queryPayIncomeContractAssociated = new LambdaQueryWrapper<>();
queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getContractId,id);
payIncomeContractAssociatedService.remove(queryPayIncomeContractAssociated);
LambdaQueryWrapper<PayIncomeContractAudit> queryPayIncomeContractAudit = new LambdaQueryWrapper<>();
queryPayIncomeContractAudit.eq(PayIncomeContractAudit::getContractId,id);
payIncomeContractAuditService.remove(queryPayIncomeContractAudit);
LambdaUpdateWrapper<PayIncomeContractInstallment> updatePayIncomeContractInstallment = new LambdaUpdateWrapper<>();
updatePayIncomeContractInstallment.eq(PayIncomeContractInstallment::getContractId,id);
payIncomeContractInstallmentService.remove(updatePayIncomeContractInstallment);
LambdaUpdateWrapper<PayIncomeContractAssociated> updatePayIncomeContractAssociated = new LambdaUpdateWrapper<>();
updatePayIncomeContractAssociated.eq(PayIncomeContractAssociated::getContractId,id);
payIncomeContractAssociatedService.remove(updatePayIncomeContractAssociated);
LambdaUpdateWrapper<PayIncomeContractAudit> updatePayIncomeContractAudit = new LambdaUpdateWrapper<>();
updatePayIncomeContractAudit.eq(PayIncomeContractAudit::getContractId,id);
payIncomeContractAuditService.remove(updatePayIncomeContractAudit);
}
@Override
@Transactional
public void deletePayIncomeContractInputByIds(List<String> ids) {
ids.forEach(p->{
PayIncomeContract payIncomeContractStatus = payIncomeContractService.getById(p);
if(Objects.isNull(payIncomeContractStatus)){
throw new JeroBootException("收入合同不存在!");
}
if(!Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS1)
&& !Objects.equals(payIncomeContractStatus.getStatus(),PayIncomeContractCommon.STATUS4)){
throw new JeroBootException("收入合同不可删除!");
}
});
payIncomeContractService.removeByIds(ids);
LambdaQueryWrapper<PayIncomeContractInstallment> queryPayIncomeContractInstallment = new LambdaQueryWrapper<>();
queryPayIncomeContractInstallment.in(PayIncomeContractInstallment::getContractId,ids);
payIncomeContractInstallmentService.remove(queryPayIncomeContractInstallment);
LambdaQueryWrapper<PayIncomeContractAssociated> queryPayIncomeContractAssociated = new LambdaQueryWrapper<>();
queryPayIncomeContractAssociated.in(PayIncomeContractAssociated::getContractId,ids);
payIncomeContractAssociatedService.remove(queryPayIncomeContractAssociated);
LambdaQueryWrapper<PayIncomeContractAudit> queryPayIncomeContractAudit = new LambdaQueryWrapper<>();
queryPayIncomeContractAudit.in(PayIncomeContractAudit::getContractId,ids);
payIncomeContractAuditService.remove(queryPayIncomeContractAudit);
LambdaUpdateWrapper<PayIncomeContractInstallment> updatePayIncomeContractInstallment = new LambdaUpdateWrapper<>();
updatePayIncomeContractInstallment.in(PayIncomeContractInstallment::getContractId,ids);
payIncomeContractInstallmentService.remove(updatePayIncomeContractInstallment);
LambdaUpdateWrapper<PayIncomeContractAssociated> updatePayIncomeContractAssociated = new LambdaUpdateWrapper<>();
updatePayIncomeContractAssociated.in(PayIncomeContractAssociated::getContractId,ids);
payIncomeContractAssociatedService.remove(updatePayIncomeContractAssociated);
LambdaUpdateWrapper<PayIncomeContractAudit> updatePayIncomeContractAudit = new LambdaUpdateWrapper<>();
updatePayIncomeContractAudit.in(PayIncomeContractAudit::getContractId,ids);
payIncomeContractAuditService.remove(updatePayIncomeContractAudit);
}
}
@@ -0,0 +1,15 @@
package com.jero.contract.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
public class PayIncomeContractAssociatedInput implements Serializable {
/**
* 关联项目集合
*/
@ApiModelProperty(value = "关联项目集合")
private String associated;
}
@@ -0,0 +1,34 @@
package com.jero.contract.vo;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.entity.PayIncomeContractAudit;
import com.jero.contract.entity.PayIncomeContractInstallment;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class PayIncomeContractDetailOutput extends PayIncomeContract implements Serializable {
/**
* 分期记录
*/
@ApiModelProperty(value = "分期记录集合")
private List<PayIncomeContractInstallment> listInstallment;
/**
* 关联项目
*/
@ApiModelProperty(value = "关联项目集合")
private List<ProjectOutput> listProject;
/**
* 归档记录
*/
@ApiModelProperty(value = "归档记录")
private List<PayIncomeContractAudit> listArchive;
/**
* 审核记录
*/
@ApiModelProperty(value = "审核记录")
private List<PayIncomeContractAudit> listAudit;
}
@@ -0,0 +1,14 @@
package com.jero.contract.vo;
import com.jero.contract.entity.PayIncomeContract;
import lombok.Data;
import java.io.Serializable;
@Data
public class PayIncomeContractOutput extends PayIncomeContract implements Serializable {
/**
* 来款状态 0:全部 1:到期未付款
*/
private String chargeStatus;
}
@@ -0,0 +1,63 @@
package com.jero.contract.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
@Data
@ApiModel(value="关联项目", description="关联项目")
public class ProjectOutput implements Serializable {
/**
* 项目id
*/
@ApiModelProperty(value = "项目id")
private String projectId;
/**
* 项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目)
*/
@ApiModelProperty(value = "项目类型(1:普通项目,2:工作组项目,3:会议项目,4:会员项目)")
private String projectType;
/**
* 来款项目
*/
@ApiModelProperty(value = "来款项目")
private String chargeProject;
/**
* 来款用途
*/
@ApiModelProperty(value = "来款用途")
private String chargeUse;
/**
* 来款单位
*/
@ApiModelProperty(value = "来款单位")
private String chargeCompanyName;
/**
* 应收金额
*/
@ApiModelProperty(value = "应收金额")
private Integer receivableAmount;
/**
* 实收金额
*/
@ApiModelProperty(value = "实收金额")
private Integer paidAmount;
/**
* 负责人
*/
@ApiModelProperty(value = "负责人")
private String principalName;
/**
* 企业联系人
*/
@ApiModelProperty(value = "企业联系人")
private String contactsName;
/**
* 创建时间
*/
@ApiModelProperty(value = "创建时间")
private String createTime;
}
@@ -1,15 +1,19 @@
package com.jero.project.controller;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.ValidUtil;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.service.IPayCommonProjectService;
import com.jero.project.entity.PayCommonProject;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -62,6 +66,21 @@ public class PayCommonProjectController extends JeroController<PayCommonProject,
IPage<PayCommonProject> pageList = payCommonProjectService.queryPageList(page, payCommonProject, paymentDate);
return Result.OK(pageList);
}
/**
* 列表
*
* @param payCommonProject 普通项目管理
* @return
*/
@ApiOperation(value="普通项目管理-列表", notes="普通项目管理-列表")
@GetMapping(value = "/listAll")
public Result<?> listAll(PayCommonProject payCommonProject,HttpServletRequest req) {
QueryWrapper<PayCommonProject> queryWrapper = QueryGenerator.initQueryWrapper(payCommonProject, req.getParameterMap());
List<PayCommonProject> list = payCommonProjectService.list(queryWrapper);
return Result.OK(list);
}
/**
* 添加
@@ -110,20 +110,38 @@ public class PayWorkingGroupController extends JeroController<PayWorkingGroup, I
return Result.OK(pageList);
}
/**
* 列表查询
*
* @param payWorkingGroup 工作组项目
* @param req
* @return
*/
@AutoLog(value = "工作组项目-列表查询")
@ApiOperation(value="工作组项目-列表查询", notes="工作组项目-列表查询")
@GetMapping(value = "/listAll")
public Result<?> queryList(PayWorkingGroup payWorkingGroup,HttpServletRequest req) {
QueryWrapper<PayWorkingGroup> queryWrapper = QueryGenerator.initQueryWrapper(payWorkingGroup, req.getParameterMap());
List<PayWorkingGroup> list = payWorkingGroupService.list(queryWrapper);
return Result.OK(list);
}
/**
* 分页列表查询
* 根据成员单位列表查询
*
* @param payWorkingGroup 工作组项目
* @param req
* @param companyId 成员id
* @return
*/
@AutoLog(value = "工作组项目-列表查询")
@ApiOperation(value="工作组项目-列表查询", notes="工作组项目-列表查询")
@GetMapping(value = "/listAll")
public Result<?> queryList(PayWorkingGroup payWorkingGroup,HttpServletRequest req) {
QueryWrapper<PayWorkingGroup> queryWrapper = QueryGenerator.initQueryWrapper(payWorkingGroup, req.getParameterMap());
List<PayWorkingGroup> list = payWorkingGroupService.list(queryWrapper);
return Result.OK(list);
@AutoLog(value = "工作组项目-根据成员单位列表查询")
@ApiOperation(value="工作组项目-根据成员单位列表查询", notes="工作组项目-根据单位列表查询")
@GetMapping(value = "/queryListByCompany")
public Result<?> queryListByCompany(@RequestParam(name = "companyId") String companyId,
@RequestParam(name = "year",required = false) String year) {
if(StringUtils.isBlank(companyId)){
return Result.error("企业id不能为空!");
}
List<PayWorkingGroup> list = payWorkingGroupService.queryListByCompany(companyId,year);
return Result.OK(list);
}
/**
@@ -6,11 +6,15 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.system.base.controller.JeroController;
import com.jero.common.system.query.QueryGenerator;
import com.jero.common.util.ValidUtil;
import com.jero.project.common.PayProjectCommon;
import com.jero.project.entity.PayWorkingGroup;
import com.jero.project.entity.PayWorkingGroupSubItem;
import com.jero.project.service.IPayWorkingGroupSubItemService;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -7,6 +7,8 @@ import com.jero.project.entity.PayWorkingGroup;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: pay_working_group
* @Author: jeecg-boot
@@ -24,4 +26,14 @@ public interface PayWorkingGroupMapper extends BaseMapper<PayWorkingGroup> {
*/
IPage<PayWorkingGroupVO> queryPageList(Page<PayWorkingGroupVO> page, @Param("payWorkingGroup") PayWorkingGroup payWorkingGroup);
/**
* @Description 根据企业查询列表
* @Author lqt
* @Date 2021/9/5
* @Param
* @Return
* @Exception
*/
List<PayWorkingGroup> queryListByCompany(@Param("companyId") String companyId,@Param("year") String year);
}
@@ -38,4 +38,39 @@
</where>
ORDER BY create_time DESC
</select>
<select id="queryListByCompany" resultType="com.jero.project.entity.PayWorkingGroup">
SELECT
pwg.id,
pwg.working_group_project AS workingGroupProject,
pwg.year,
pwg.principal_id_a AS principalIdA,
pwg.principal_name_a AS principalNameA,
pwg.principal_id_b AS principalIdB,
pwg.principal_name_b AS principalNameB,
pwg.convoke_num AS convokeNum,
pwg.operation_cycle AS operationCycle,
pwg.year_charge_a AS yearChargeA,
pwg.charge_notice_no_a AS chargeNoticeNoA,
pwg.charge_notice_a_id AS chargeNoticeAId,
pwg.year_charge_b AS yearChargeB,
pwg.charge_notice_no_b AS chargeNoticeNoB,
pwg.charge_notice_b_id AS chargeNoticeBId,
pwg.mission_and_objectives AS missionAndObjectives,
pwg.remarks,
pwg.create_by AS createBy,
pwg.create_time AS createTime,
pwg.update_by AS updateBy,
pwg.update_time AS updateTime
FROM pay_working_group pwg
LEFT JOIN pay_working_group_subitem pwgs ON pwg.id = pwgs.working_group_id
<where>
<if test="companyId != null and companyId != ''">
AND pwgs.charge_company_id = #{companyId}
</if>
<if test="year != null and year != ''">
AND pwg.year = #{year}
</if>
</where>
GROUP BY pwg.id ORDER BY pwg.create_time DESC
</select>
</mapper>
@@ -6,6 +6,8 @@ import com.jero.project.vo.PayWorkingGroupVO;
import com.jero.project.entity.PayWorkingGroup;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: pay_working_group
* @Author: jeecg-boot
@@ -22,4 +24,13 @@ public interface IPayWorkingGroupService extends IService<PayWorkingGroup> {
* @Exception
*/
IPage<PayWorkingGroupVO> queryPageList(Page<PayWorkingGroupVO> page, PayWorkingGroup payWorkingGroup);
/**
* @Description 根据企业查询列表
* @Author lqt
* @Date 2021/9/5
* @Param
* @Return
* @Exception
*/
List<PayWorkingGroup> queryListByCompany(String companyId,String year);
}
@@ -70,7 +70,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
log.info("普通项目管理-添加异常",e);
throw new JeroBootException("来款项目已存在!");
}
payCommonProject = setPayCommonProject(payCommonProject);
setPayCommonProject(payCommonProject);
payCommonProject.setPack(PayProjectCommon.PACKAGING0);
payCommonProject.setInAccount(PayProjectCommon.IN_ACCOUNT0);
payCommonProject.setMakeInvoice(PayProjectCommon.MAKE_INVOICE0);
@@ -95,7 +95,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
throw new JeroBootException("来款项目已存在!");
}
payCommonProject = setPayCommonProject(payCommonProject);
setPayCommonProject(payCommonProject);
// 先删除临时表企业信息,联系人信息,邮寄联系人信息
PayCommonProject payCommonProjectOld = payCommonProjectService.getById(payCommonProject.getId());
if(Objects.isNull(payCommonProjectOld)){
@@ -114,7 +114,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
* @Return
* @Exception
*/
private PayCommonProject setPayCommonProject(PayCommonProject payCommonProject){
private void setPayCommonProject(PayCommonProject payCommonProject){
// 企业
PayCompanyManagementTemporary chargeCompanyName = payCompanyManagementTemporaryService.insertCompanyManagementTemporary(payCommonProject.getChargeCompanyId());
if(Objects.isNull(chargeCompanyName)){
@@ -143,6 +143,5 @@ public class PayCommonProjectServiceImpl extends ServiceImpl<PayCommonProjectMap
payCommonProject.setMailContactsTemporaryName(mailContactsName.getName());
payCommonProject.setChargeCompanyTemporaryId(chargeCompanyName.getId());
payCommonProject.setChargeCompanyTemporaryName(chargeCompanyName.getCompanyName());
return payCommonProject;
}
}
@@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import java.util.List;
/**
@@ -28,4 +29,9 @@ public class PayWorkingGroupServiceImpl extends ServiceImpl<PayWorkingGroupMappe
public IPage<PayWorkingGroupVO> queryPageList(Page<PayWorkingGroupVO> page, PayWorkingGroup payWorkingGroup) {
return payWorkingGroupMapper.queryPageList(page,payWorkingGroup);
}
@Override
public List<PayWorkingGroup> queryListByCompany(String companyId, String year) {
return payWorkingGroupMapper.queryListByCompany(companyId,year);
}
}
@@ -108,15 +108,15 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
LambdaQueryWrapper<PayWorkingGroupSubItem> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PayWorkingGroupSubItem::getWorkingGroupId,payWorkingGroupSubItem.getWorkingGroupId());
queryWrapper.eq(PayWorkingGroupSubItem::getChargeCompanyId,payWorkingGroupSubItem.getChargeCompanyId());
queryWrapper.eq(PayWorkingGroupSubItem::getContactsIdOne,payWorkingGroupSubItem.getContactsIdOne());
// queryWrapper.eq(PayWorkingGroupSubItem::getContactsIdOne,payWorkingGroupSubItem.getContactsIdOne());
PayWorkingGroupSubItem payWorkingGroupSubItemNew = payWorkingGroupSubItemService.getOne(queryWrapper);
// 企业和联系人同时存在,则校验不通过
if(!Objects.isNull(payWorkingGroupSubItemNew)) {
throw new RuntimeException("工作组成员已存在!");
throw new RuntimeException("工作组成员单位已存在!");
}
}catch (Exception e){
log.info("工作组成员-添加异常",e);
throw new RuntimeException("工作组成员已存在!");
throw new RuntimeException("工作组成员单位已存在!");
}
payWorkingGroupSubItem = setPayWorkingGroupSubItem(payWorkingGroupSubItem);
@@ -155,16 +155,16 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
LambdaQueryWrapper<PayWorkingGroupSubItem> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(PayWorkingGroupSubItem::getWorkingGroupId,payWorkingGroupSubItem.getWorkingGroupId());
queryWrapper.eq(PayWorkingGroupSubItem::getChargeCompanyId,payWorkingGroupSubItem.getChargeCompanyId());
queryWrapper.eq(PayWorkingGroupSubItem::getContactsIdOne,payWorkingGroupSubItem.getContactsIdOne());
// queryWrapper.eq(PayWorkingGroupSubItem::getContactsIdOne,payWorkingGroupSubItem.getContactsIdOne());
PayWorkingGroupSubItem payWorkingGroupSubItemNew = payWorkingGroupSubItemService.getOne(queryWrapper);
// 来款项目存在,并且编辑id与查询不同,则校验不通过
if(!Objects.isNull(payWorkingGroupSubItemNew)
&& !Objects.equals(payWorkingGroupSubItemNew.getId(),payWorkingGroupSubItem.getId())) {
throw new RuntimeException("工作组成员已存在!");
throw new RuntimeException("工作组成员单位已存在!");
}
}catch (Exception e){
log.info("工作组成员-编辑异常",e);
throw new RuntimeException("工作组成员已存在!");
throw new RuntimeException("工作组成员单位已存在!");
}
payWorkingGroupSubItem = setPayWorkingGroupSubItem(payWorkingGroupSubItem);
@@ -284,12 +284,11 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
}
}
}
// 校验工作组是否已存在成员
if(!StringUtils.isBlank(p.getChargeCompanyId()) && !StringUtils.isBlank(p.getContactsIdOne())){
List<PayWorkingGroupSubItem> listDateNew = listData.stream().filter(item->Objects.equals(p.getChargeCompanyId(),item.getChargeCompanyId())
&& Objects.equals(p.getContactsIdOne(),item.getContactsIdOne())).collect(Collectors.toList());
// 校验工作组成员单位是否已存在
if(!StringUtils.isBlank(p.getChargeCompanyId())){
List<PayWorkingGroupSubItem> listDateNew = listData.stream().filter(item->Objects.equals(p.getChargeCompanyId(),item.getChargeCompanyId())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listDateNew)){
msg.append("").append(count + 3).append(" 行:工作组成员已存在,请修改。</br>");
msg.append("").append(count + 3).append(" 行:工作组成员单位已存在,请修改。</br>");
}
}
// 校验联系人二
@@ -340,13 +339,12 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl<PayWorkingGro
}
}
// 校验成员唯一性
List<PayWorkingGroupSubItem> listCompanyAndContactsNew = listCompanyAndContacts.stream().filter(item->Objects.equals(p.getChargeCompanyTemporaryName(),item.getChargeCompanyTemporaryName())
&& Objects.equals(p.getContactsTemporaryNameOne(),item.getContactsTemporaryNameOne())).collect(Collectors.toList());
List<PayWorkingGroupSubItem> listCompanyAndContactsNew = listCompanyAndContacts.stream().filter(item->Objects.equals(p.getChargeCompanyTemporaryName(),item.getChargeCompanyTemporaryName())).collect(Collectors.toList());
if(!CollectionUtils.isEmpty(listCompanyAndContactsNew)){
msg.append("").append(count + 3).append(" 行:工作组成员重复出现,请修改。</br>");
msg.append("").append(count + 3).append(" 行:工作组成员单位重复出现,请修改。</br>");
}
listCompanyAndContacts.add(p);
// 校验
if(Objects.equals(p.getChargeWay(), PayProjectCommon.CHARGE_WAY2)){
if(Objects.isNull(p.getReceivableAmount())){
msg.append("").append(count + 3).append(" 行:应收金额不能为空,请修改。</br>");