diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/common/PayIncomeContractCommon.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/common/PayIncomeContractCommon.java new file mode 100644 index 00000000..ddb4a173 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/common/PayIncomeContractCommon.java @@ -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"; + +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractAssociatedController.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractAssociatedController.java index 69f2ff99..44ae8053 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractAssociatedController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractAssociatedController.java @@ -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 queryPageList(PayIncomeContractAssociated payIncomeContractAssociated, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @@ -62,7 +62,7 @@ public class PayIncomeContractAssociatedController extends JeroController add(@RequestBody PayIncomeContractAssociated payIncomeContractAssociated) { payIncomeContractAssociatedService.save(payIncomeContractAssociated); @@ -76,7 +76,7 @@ public class PayIncomeContractAssociatedController extends JeroController edit(@RequestBody PayIncomeContractAssociated payIncomeContractAssociated) { payIncomeContractAssociatedService.updateById(payIncomeContractAssociated); @@ -90,7 +90,7 @@ public class PayIncomeContractAssociatedController extends JeroController delete(@RequestParam(name="id",required=true) String id) { payIncomeContractAssociatedService.removeById(id); @@ -104,7 +104,7 @@ public class PayIncomeContractAssociatedController extends JeroController deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.payIncomeContractAssociatedService.removeByIds(Arrays.asList(ids.split(","))); @@ -118,7 +118,7 @@ public class PayIncomeContractAssociatedController extends JeroController queryById(@RequestParam(name="id",required=true) String id) { PayIncomeContractAssociated payIncomeContractAssociated = payIncomeContractAssociatedService.getById(id); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractAuditController.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractAuditController.java index 866ce5cf..fec642a6 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractAuditController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractAuditController.java @@ -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 queryPageList(PayIncomeContractAudit payIncomeContractAudit, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @@ -63,7 +61,7 @@ public class PayIncomeContractAuditController extends JeroController add(@RequestBody PayIncomeContractAudit payIncomeContractAudit) { payIncomeContractAuditService.save(payIncomeContractAudit); @@ -77,7 +75,7 @@ public class PayIncomeContractAuditController extends JeroController edit(@RequestBody PayIncomeContractAudit payIncomeContractAudit) { payIncomeContractAuditService.updateById(payIncomeContractAudit); @@ -91,7 +89,7 @@ public class PayIncomeContractAuditController extends JeroController delete(@RequestParam(name="id",required=true) String id) { payIncomeContractAuditService.removeById(id); @@ -105,7 +103,7 @@ public class PayIncomeContractAuditController extends JeroController deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.payIncomeContractAuditService.removeByIds(Arrays.asList(ids.split(","))); @@ -119,7 +117,7 @@ public class PayIncomeContractAuditController extends JeroController queryById(@RequestParam(name="id",required=true) String id) { PayIncomeContractAudit payIncomeContractAudit = payIncomeContractAuditService.getById(id); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractController.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractController.java index 6fd9268a..f3779322 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractController.java @@ -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 { @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 page = new Page<>(pageNo, pageSize); - IPage pageList = payIncomeContractService.queryPageList(page, payIncomeContract,chargeStatus,startTime,endTime); + // todo 缺少验证,缺少会议,会员项目 + Page page = new Page<>(pageNo, pageSize); + IPage 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 associated(@RequestBody PayIncomeContractAssociatedInput input) { + List 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 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 queryPayIncomeContractInstallment = new LambdaQueryWrapper<>(); + queryPayIncomeContractInstallment.eq(PayIncomeContractInstallment::getContractId,payIncomeContract.getId()); + List listPayIncomeContractInstallment = payIncomeContractInstallmentService.list(queryPayIncomeContractInstallment); + + // 获取关联项目id + List listProject = new ArrayList<>(); + LambdaQueryWrapper queryPayIncomeContractAssociated = new LambdaQueryWrapper<>(); + queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getContractId,id); + List listPayIncomeContractAssociated = payIncomeContractAssociatedService.list(queryPayIncomeContractAssociated); + if(!CollectionUtils.isEmpty(listPayIncomeContractAssociated)){ + List listId = listPayIncomeContractAssociated.stream().map(PayIncomeContractAssociated::getProjectId).collect(Collectors.toList()); + if(!CollectionUtils.isEmpty(listId)){ + // 普通项目 + LambdaQueryWrapper queryPayCommonProject = new LambdaQueryWrapper<>(); + queryPayCommonProject.in(PayCommonProject::getId,listId); + List 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 queryPayWorkingGroupSubItem = new LambdaQueryWrapper<>(); + queryPayWorkingGroupSubItem.in(PayWorkingGroupSubItem::getId,listId); + List 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 queryPayIncomeContractAudit = new LambdaQueryWrapper<>(); + queryPayIncomeContractAudit.in(PayIncomeContractAudit::getContractId,id); + List listPayIncomeContractAudit = payIncomeContractAuditService.list(queryPayIncomeContractAudit); + List listArchive = listPayIncomeContractAudit.stream().filter(p->Objects.equals(p.getContractStatus(), PayIncomeContractCommon.STATUS5)).collect(Collectors.toList()); + // 获取审核记录 + List 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 queryWrapper = QueryGenerator.initQueryWrapper(payIncomeContract, request.getParameterMap()); + // Step.2 获取导出数据 + List pageList = payIncomeContractService.list(queryWrapper); + List exportList = null; + + // 过滤选中数据 + String selections = request.getParameter("selections"); + if (oConvertUtils.isNotEmpty(selections)) { + List selectionList = Arrays.asList(selections.split(",")); + exportList = pageList.stream().filter(item -> selectionList.contains(payIncomeContract.getId())).collect(Collectors.toList()); + } else { + exportList = pageList; + } + List> list = new ArrayList<>(); + // excel字段长度 + // todo 缺少字典转换 + Map mapCount = new HashMap<>(); + mapCount.put("count",0); + if(!CollectionUtils.isEmpty(exportList)){ + List listId = exportList.stream().map(PayIncomeContract::getId).collect(Collectors.toList()); + LambdaQueryWrapper query = new LambdaQueryWrapper<>(); + query.in(PayIncomeContractInstallment::getContractId,listId); + List listPayIncomeContractInstallment = payIncomeContractInstallmentService.list(query); + if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){ + exportList.forEach(p->{ + String str = JSON.toJSONString(p); + Map map = JSONObject.parseObject(str,Map.class); + List 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 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; } /** diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractInstallmentController.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractInstallmentController.java index dc809379..6366bf15 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractInstallmentController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/controller/PayIncomeContractInstallmentController.java @@ -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 queryPageList(PayIncomeContractInstallment payIncomeContractInstallment, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @@ -63,7 +63,7 @@ public class PayIncomeContractInstallmentController extends JeroController add(@RequestBody PayIncomeContractInstallment payIncomeContractInstallment) { payIncomeContractInstallmentService.save(payIncomeContractInstallment); @@ -77,7 +77,7 @@ public class PayIncomeContractInstallmentController extends JeroController edit(@RequestBody PayIncomeContractInstallment payIncomeContractInstallment) { payIncomeContractInstallmentService.updateById(payIncomeContractInstallment); @@ -91,7 +91,7 @@ public class PayIncomeContractInstallmentController extends JeroController delete(@RequestParam(name="id",required=true) String id) { payIncomeContractInstallmentService.removeById(id); @@ -105,7 +105,7 @@ public class PayIncomeContractInstallmentController extends JeroController deleteBatch(@RequestParam(name="ids",required=true) String ids) { this.payIncomeContractInstallmentService.removeByIds(Arrays.asList(ids.split(","))); @@ -119,7 +119,7 @@ public class PayIncomeContractInstallmentController extends JeroController queryById(@RequestParam(name="id",required=true) String id) { PayIncomeContractInstallment payIncomeContractInstallment = payIncomeContractInstallmentService.getById(id); diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContract.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContract.java index 121cac2f..538672b7 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContract.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContract.java @@ -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; /**未收金额*/ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractAssociated.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractAssociated.java index bfce30cf..e26aaea1 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractAssociated.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractAssociated.java @@ -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; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractAudit.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractAudit.java index 149f6acf..e0a6a2f9 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractAudit.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractAudit.java @@ -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; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractInstallment.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractInstallment.java index 9aff80ee..7b7747b0 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractInstallment.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/entity/PayIncomeContractInstallment.java @@ -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; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractMapper.java index 6201df1d..d69f6fc6 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/PayIncomeContractMapper.java @@ -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 { * @Return * @Exception */ - IPage queryPageList(Page page, @Param("payIncomeContract") PayIncomeContract payIncomeContract, - @Param("chargeStatus") String chargeStatus,@Param("startTime") String startTime,@Param("endTime") String endTime); + IPage queryPageList(Page page, @Param("payIncomeContract") PayIncomeContract payIncomeContract, + @Param("chargeStatus") String chargeStatus,@Param("projectName") String projectName, + @Param("startTime") String startTime, @Param("endTime") String endTime); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractMapper.xml index 93d84bc9..f51b0498 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/mapper/xml/PayIncomeContractMapper.xml @@ -1,14 +1,18 @@ - - 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 < 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 < 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 - - pici.id != null - - AND pic.contract_num = #{payIncomeContract.contractNum} + AND pic.contract_num LIKE CONCAT('%',CONCAT(#{payIncomeContract.contractNum},'%')) - AND pic.contract_name = #{payIncomeContract.contractName} + AND pic.contract_name LIKE CONCAT('%',CONCAT(#{payIncomeContract.contractName},'%')) - - AND pica.project_id = #{projectId} + + AND ( + pcp.charge_project LIKE CONCAT('%',CONCAT(#{projectName},'%')) + OR pwg.working_group_project LIKE CONCAT('%',CONCAT(#{projectName},'%')) + ) AND pic.create_time >= #{startTime} @@ -59,7 +69,10 @@ AND pic.status = #{payIncomeContract.status} + + AND pic.chargeStatus = #{chargeStatus} + - order by pic.create_time desc + GROUP BY pic.id ORDER BY pic.create_time desc \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractService.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractService.java index 176c9d48..c4a1cc3e 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/IPayIncomeContractService.java @@ -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 { * @Description 分页列表 * @Author lqt * @Date 2021/9/3 - * @Param + * @Param payIncomeContract 收入合同 + * @Param chargeStatus 来款状态 + * @Param startTime 开始时间 + * @Param endTime 结束时间 * @Return * @Exception */ - IPage queryPageList(Page page,PayIncomeContract payIncomeContract,String chargeStatus,String startTime,String endTime); + IPage queryPageList(Page 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 { * @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 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 { * @Description 批量删除 * @Author lqt * @Date 2021/9/3 - * @Param + * @Param id 合同id * @Return * @Exception */ diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java index b8d91475..f61934b7 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/service/impl/PayIncomeContractServiceImpl.java @@ -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 queryPageList(Page page, PayIncomeContract payIncomeContract, String chargeStatus,String startTime,String endTime) { - return payIncomeContractMapper.queryPageList(page,payIncomeContract,chargeStatus,startTime,endTime); + public IPage queryPageList(Page 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 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 listPayIncomeContractInstallment = new ArrayList<>(); if(!StringUtils.isBlank(input.getInstallment())){ listPayIncomeContractInstallment = JSONArray.parseArray(input.getInstallment(),PayIncomeContractInstallment.class); @@ -160,49 +207,332 @@ public class PayIncomeContractServiceImpl extends ServiceImpl list = listPayIncomeContractInstallment.stream().map(PayIncomeContractInstallment::getId).collect(Collectors.toList()); + // 删除历史 + LambdaQueryWrapper queryPayIncomeContractInstallment = new LambdaQueryWrapper<>(); + queryPayIncomeContractInstallment.eq(PayIncomeContractInstallment::getContractId,payIncomeContract.getId()); + List listPayIncomeContractInstallmentOld = payIncomeContractInstallmentService.list(queryPayIncomeContractInstallment); + if(!CollectionUtils.isEmpty(listPayIncomeContractInstallmentOld)){ + List list = listPayIncomeContractInstallmentOld.stream().map(PayIncomeContractInstallment::getId).collect(Collectors.toList()); payIncomeContractInstallmentService.removeByIds(list); + } + // 新增 + if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){ List 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 associated(PayIncomeContractAssociatedInput input) { + if(StringUtils.isBlank(input.getAssociated())){ + throw new JeroBootException("关联项目不能为空!"); + } + List listPayIncomeContractAssociated = JSONArray.parseArray(input.getAssociated(),PayIncomeContractAssociated.class); + if(CollectionUtils.isEmpty(listPayIncomeContractAssociated)){ + throw new JeroBootException("关联项目不能为空!"); + } + List 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 queryPayIncomeContractAssociated = new LambdaQueryWrapper<>(); + queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getContractId,p.getContractId()); + queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getProjectId,p.getProjectId()); + List 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 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 queryPayWorkingGroupSubItem = new LambdaQueryWrapper<>(); + queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getWorkingGroupId,payWorkingGroup.getId()); + queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getChargeCompanyId,payIncomeContract.getSignedCompanyId()); + List listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(queryPayWorkingGroupSubItem); + if(CollectionUtils.isEmpty(listPayWorkingGroupSubItem)){ + throw new JeroBootException("工作组成员单位不存在!"); + } + // 更新项目id + p.setProjectId(listPayWorkingGroupSubItem.get(0).getId()); + // 打包,将关联项目设置成打包 + LambdaUpdateWrapper 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 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 queryPayWorkingGroupSubItem = new LambdaQueryWrapper<>(); + queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getWorkingGroupId,payWorkingGroup.getId()); + queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getChargeCompanyId,payIncomeContract.getSignedCompanyId()); + List listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(queryPayWorkingGroupSubItem); + if(CollectionUtils.isEmpty(listPayWorkingGroupSubItem)){ + throw new JeroBootException("工作组成员单位不存在!"); + } + // 更新项目id + payIncomeContractAssociated.setProjectId(listPayWorkingGroupSubItem.get(0).getId()); + // 将关联项目取消打包 + LambdaUpdateWrapper 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 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 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 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 queryPayIncomeContractInstallment = new LambdaQueryWrapper<>(); - queryPayIncomeContractInstallment.eq(PayIncomeContractInstallment::getContractId,id); - payIncomeContractInstallmentService.remove(queryPayIncomeContractInstallment); - LambdaQueryWrapper queryPayIncomeContractAssociated = new LambdaQueryWrapper<>(); - queryPayIncomeContractAssociated.eq(PayIncomeContractAssociated::getContractId,id); - payIncomeContractAssociatedService.remove(queryPayIncomeContractAssociated); - LambdaQueryWrapper queryPayIncomeContractAudit = new LambdaQueryWrapper<>(); - queryPayIncomeContractAudit.eq(PayIncomeContractAudit::getContractId,id); - payIncomeContractAuditService.remove(queryPayIncomeContractAudit); + LambdaUpdateWrapper updatePayIncomeContractInstallment = new LambdaUpdateWrapper<>(); + updatePayIncomeContractInstallment.eq(PayIncomeContractInstallment::getContractId,id); + payIncomeContractInstallmentService.remove(updatePayIncomeContractInstallment); + LambdaUpdateWrapper updatePayIncomeContractAssociated = new LambdaUpdateWrapper<>(); + updatePayIncomeContractAssociated.eq(PayIncomeContractAssociated::getContractId,id); + payIncomeContractAssociatedService.remove(updatePayIncomeContractAssociated); + LambdaUpdateWrapper updatePayIncomeContractAudit = new LambdaUpdateWrapper<>(); + updatePayIncomeContractAudit.eq(PayIncomeContractAudit::getContractId,id); + payIncomeContractAuditService.remove(updatePayIncomeContractAudit); } @Override @Transactional public void deletePayIncomeContractInputByIds(List 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 queryPayIncomeContractInstallment = new LambdaQueryWrapper<>(); - queryPayIncomeContractInstallment.in(PayIncomeContractInstallment::getContractId,ids); - payIncomeContractInstallmentService.remove(queryPayIncomeContractInstallment); - LambdaQueryWrapper queryPayIncomeContractAssociated = new LambdaQueryWrapper<>(); - queryPayIncomeContractAssociated.in(PayIncomeContractAssociated::getContractId,ids); - payIncomeContractAssociatedService.remove(queryPayIncomeContractAssociated); - LambdaQueryWrapper queryPayIncomeContractAudit = new LambdaQueryWrapper<>(); - queryPayIncomeContractAudit.in(PayIncomeContractAudit::getContractId,ids); - payIncomeContractAuditService.remove(queryPayIncomeContractAudit); + LambdaUpdateWrapper updatePayIncomeContractInstallment = new LambdaUpdateWrapper<>(); + updatePayIncomeContractInstallment.in(PayIncomeContractInstallment::getContractId,ids); + payIncomeContractInstallmentService.remove(updatePayIncomeContractInstallment); + LambdaUpdateWrapper updatePayIncomeContractAssociated = new LambdaUpdateWrapper<>(); + updatePayIncomeContractAssociated.in(PayIncomeContractAssociated::getContractId,ids); + payIncomeContractAssociatedService.remove(updatePayIncomeContractAssociated); + LambdaUpdateWrapper updatePayIncomeContractAudit = new LambdaUpdateWrapper<>(); + updatePayIncomeContractAudit.in(PayIncomeContractAudit::getContractId,ids); + payIncomeContractAuditService.remove(updatePayIncomeContractAudit); } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PayIncomeContractAssociatedInput.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PayIncomeContractAssociatedInput.java new file mode 100644 index 00000000..1bc67fd3 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PayIncomeContractAssociatedInput.java @@ -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; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PayIncomeContractDetailOutput.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PayIncomeContractDetailOutput.java new file mode 100644 index 00000000..ab52524e --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PayIncomeContractDetailOutput.java @@ -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 listInstallment; + /** + * 关联项目 + */ + @ApiModelProperty(value = "关联项目集合") + private List listProject; + /** + * 归档记录 + */ + @ApiModelProperty(value = "归档记录") + private List listArchive; + /** + * 审核记录 + */ + @ApiModelProperty(value = "审核记录") + private List listAudit; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PayIncomeContractOutput.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PayIncomeContractOutput.java new file mode 100644 index 00000000..101fd491 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/PayIncomeContractOutput.java @@ -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; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/ProjectOutput.java b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/ProjectOutput.java new file mode 100644 index 00000000..36faf743 --- /dev/null +++ b/jero-boot-incoming-payment/src/main/java/com/jero/contract/vo/ProjectOutput.java @@ -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; +} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java index 7888772e..0bded230 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayCommonProjectController.java @@ -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 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 queryWrapper = QueryGenerator.initQueryWrapper(payCommonProject, req.getParameterMap()); + List list = payCommonProjectService.list(queryWrapper); + return Result.OK(list); + } + /** * 添加 diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupController.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupController.java index 8520146d..eb3ba543 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupController.java @@ -110,20 +110,38 @@ public class PayWorkingGroupController extends JeroController queryList(PayWorkingGroup payWorkingGroup,HttpServletRequest req) { + QueryWrapper queryWrapper = QueryGenerator.initQueryWrapper(payWorkingGroup, req.getParameterMap()); + List 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 queryWrapper = QueryGenerator.initQueryWrapper(payWorkingGroup, req.getParameterMap()); - List 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 list = payWorkingGroupService.queryListByCompany(companyId,year); + return Result.OK(list); } /** diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java index ad58af05..43780358 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java @@ -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; diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupMapper.java index b8245013..d3086caf 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/PayWorkingGroupMapper.java @@ -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 { */ IPage queryPageList(Page page, @Param("payWorkingGroup") PayWorkingGroup payWorkingGroup); + /** + * @Description 根据企业查询列表 + * @Author lqt + * @Date 2021/9/5 + * @Param + * @Return + * @Exception + */ + List queryListByCompany(@Param("companyId") String companyId,@Param("year") String year); + } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml index 4d069eec..ca17e2fb 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/mapper/xml/PayWorkingGroupMapper.xml @@ -38,4 +38,39 @@ ORDER BY create_time DESC + \ No newline at end of file diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/IPayWorkingGroupService.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/IPayWorkingGroupService.java index e5aafbb1..8a6b9acc 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/IPayWorkingGroupService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/IPayWorkingGroupService.java @@ -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 { * @Exception */ IPage queryPageList(Page page, PayWorkingGroup payWorkingGroup); + /** + * @Description 根据企业查询列表 + * @Author lqt + * @Date 2021/9/5 + * @Param + * @Return + * @Exception + */ + List queryListByCompany(String companyId,String year); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java index 3ce3c653..a6dc62e7 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayCommonProjectServiceImpl.java @@ -70,7 +70,7 @@ public class PayCommonProjectServiceImpl extends ServiceImpl queryPageList(Page page, PayWorkingGroup payWorkingGroup) { return payWorkingGroupMapper.queryPageList(page,payWorkingGroup); } + + @Override + public List queryListByCompany(String companyId, String year) { + return payWorkingGroupMapper.queryListByCompany(companyId,year); + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java index f60f7ded..7cc587f0 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/service/impl/PayWorkingGroupSubItemServiceImpl.java @@ -108,15 +108,15 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl 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 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 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 listDateNew = listData.stream().filter(item->Objects.equals(p.getChargeCompanyId(),item.getChargeCompanyId())).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(listDateNew)){ - msg.append("第 ").append(count + 3).append(" 行:工作组成员已存在,请修改。
"); + msg.append("第 ").append(count + 3).append(" 行:工作组成员单位已存在,请修改。
"); } } // 校验联系人二 @@ -340,13 +339,12 @@ public class PayWorkingGroupSubItemServiceImpl extends ServiceImpl listCompanyAndContactsNew = listCompanyAndContacts.stream().filter(item->Objects.equals(p.getChargeCompanyTemporaryName(),item.getChargeCompanyTemporaryName()) - && Objects.equals(p.getContactsTemporaryNameOne(),item.getContactsTemporaryNameOne())).collect(Collectors.toList()); + List listCompanyAndContactsNew = listCompanyAndContacts.stream().filter(item->Objects.equals(p.getChargeCompanyTemporaryName(),item.getChargeCompanyTemporaryName())).collect(Collectors.toList()); if(!CollectionUtils.isEmpty(listCompanyAndContactsNew)){ - msg.append("第 ").append(count + 3).append(" 行:工作组成员重复出现,请修改。
"); + msg.append("第 ").append(count + 3).append(" 行:工作组成员单位重复出现,请修改。
"); } listCompanyAndContacts.add(p); - + // 校验 if(Objects.equals(p.getChargeWay(), PayProjectCommon.CHARGE_WAY2)){ if(Objects.isNull(p.getReceivableAmount())){ msg.append("第 ").append(count + 3).append(" 行:应收金额不能为空,请修改。
");