From 1c23791f02817e0a2ae184c26d44cb32d19d7bc2 Mon Sep 17 00:00:00 2001 From: zhaowenyuan Date: Mon, 17 Jun 2024 16:26:56 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E5=9B=9E=E6=AC=BE=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/log/annotation/SysLog.java | 4 - .../common/mybatis/utils/WrapperUtils.java | 9 +- .../project/entity/dto/ContractDTO.java | 4 + .../project/entity/dto/PaymentDTO.java | 41 ++++++ .../project/entity/dto/ProjectDTO.java | 6 +- .../project/entity/po/WrkProject.java | 7 + .../project/entity/po/WrkProjectContract.java | 7 + .../project/entity/po/WrkProjectPayment.java | 5 +- .../WrkProjectContractController.java | 15 --- .../controller/WrkProjectController.java | 72 ++++++++++- .../WrkProjectPaymentController.java | 43 ++++++- .../service/WrkProjectContractService.java | 37 ++++++ .../service/WrkProjectPaymentService.java | 100 +++++++++++++++ .../project/service/WrkProjectService.java | 121 +++++++++++++----- 14 files changed, 404 insertions(+), 67 deletions(-) create mode 100644 chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/PaymentDTO.java delete mode 100644 chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectContractController.java diff --git a/chushang-common/chushang-common-log/src/main/java/com/chushang/common/log/annotation/SysLog.java b/chushang-common/chushang-common-log/src/main/java/com/chushang/common/log/annotation/SysLog.java index f9d81a5..ebb479c 100644 --- a/chushang-common/chushang-common-log/src/main/java/com/chushang/common/log/annotation/SysLog.java +++ b/chushang-common/chushang-common-log/src/main/java/com/chushang/common/log/annotation/SysLog.java @@ -23,14 +23,10 @@ import java.lang.annotation.*; public @interface SysLog { String value() default ""; - /** * 操作类型 */ BusinessType businessType() default BusinessType.OTHER; - - boolean export() default false; - /** * 是否 入库 */ diff --git a/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/utils/WrapperUtils.java b/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/utils/WrapperUtils.java index 6c20ea2..0ba6793 100644 --- a/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/utils/WrapperUtils.java +++ b/chushang-common/chushang-common-mybatis/src/main/java/com/chushang/common/mybatis/utils/WrapperUtils.java @@ -19,7 +19,6 @@ import java.lang.reflect.Field; import java.util.Collection; import java.util.HashMap; import java.util.List; -import java.util.Map; @NoArgsConstructor(access = AccessLevel.PRIVATE) public class WrapperUtils { @@ -29,9 +28,11 @@ public class WrapperUtils { if (null != columns) { queryWrapper = queryWrapper.select(columns); } - // 构造Wrapper - queryWrapper = queryWrapper - .orderBy(true, "asc".equals(commonParam.getIsAsc()), commonParam.getOrderBy()); + if (null != commonParam){ + // 构造Wrapper + queryWrapper = queryWrapper + .orderBy(true, "asc".equals(commonParam.getIsAsc()), commonParam.getOrderBy()); + } if (query == null) { return queryWrapper.lambda(); } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/ContractDTO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/ContractDTO.java index 66e314f..9741d66 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/ContractDTO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/ContractDTO.java @@ -16,6 +16,10 @@ import java.time.LocalDateTime; */ @Data public class ContractDTO { + /** + * 新增合同时 + */ + private Long projectId; /** * 合同Id */ diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/PaymentDTO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/PaymentDTO.java new file mode 100644 index 0000000..108359c --- /dev/null +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/PaymentDTO.java @@ -0,0 +1,41 @@ +package com.chushang.inspection.project.entity.dto; + +import com.chushang.common.core.validator.Create; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * 回款 + * @auther: zhao + * @date: 2024/6/17 15:30 + */ +@Data +public class PaymentDTO { + /** + * 项目id + */ + @NotNull(message = "项目id不能为空", groups = {Create.class}) + private Long projectId; + /** + * 合同Id + */ + @NotNull(message = "合同id不能为空", groups = {Create.class}) + private Long contractId; + /** + * 回款金额 + */ + @NotNull(message = "回款金额不能为空", groups = {Create.class}) + private BigDecimal paymentAmount; + /** + * 回款备注 + */ + private String remark; + /** + * 回款文件证明 + */ + @NotNull(message = "回款证明文件不能为空", groups = {Create.class}) + private String paymentReceipt; + +} diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/ProjectDTO.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/ProjectDTO.java index 9ffc428..7fb813a 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/ProjectDTO.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/dto/ProjectDTO.java @@ -1,14 +1,12 @@ package com.chushang.inspection.project.entity.dto; -import com.baomidou.mybatisplus.annotation.TableField; import com.chushang.common.core.validator.Create; import com.chushang.common.core.validator.Update; -import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; -import org.springframework.validation.annotation.Validated; import javax.validation.Valid; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; /** * @auther: zhao @@ -31,7 +29,7 @@ public class ProjectDTO { * 项目合同 */ @NotNull(message = "项目合同不能为空", groups = Create.class) - @NotNull(message = "项目合同不能为空", groups = Update.class) + @Null(message = "项目合同不能为空", groups = Update.class) @Valid private ContractDTO contract; diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProject.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProject.java index 42f20d4..08069f6 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProject.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProject.java @@ -76,4 +76,11 @@ public class WrkProject extends BaseEntity { @TableField(value = "update_by", fill = FieldFill.UPDATE) @Condition(name = "update_by", type = Condition.ConditionType.eq) private String updateBy; + + /** + * 项目有效状态, 合同处于有效时, 项目就是有效 + */ + @TableField(value = "project_effect") + @DictFormat(dictType = "project_effect") + private Integer projectEffect; } diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProjectContract.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProjectContract.java index 6432b12..a847467 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProjectContract.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProjectContract.java @@ -67,6 +67,11 @@ public class WrkProjectContract extends BaseEntity { */ @TableField(value = "contract_amount") private BigDecimal contractAmount; + /** + * 项目已经 回款金额 + */ + @TableField(value = "payment_amount") + private BigDecimal paymentAmount; /** * 审核状态 项目审核状态 待初审 待复审 初审驳回 复审驳回 初审通过=待复审 复审通过 @@ -85,6 +90,8 @@ public class WrkProjectContract extends BaseEntity { /** * 回款状态 是否已经回款完成 + * 0 未完成 + * 1 已完成 */ @TableField(value = "payment_state") @DictFormat(dictType = "payment_state") diff --git a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProjectPayment.java b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProjectPayment.java index 24262a2..b293b35 100644 --- a/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProjectPayment.java +++ b/chushang-modules/chushang-module-inspection/inspection-feign/src/main/java/com/chushang/inspection/project/entity/po/WrkProjectPayment.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.chushang.common.mybatis.base.BaseEntity; import java.math.BigDecimal; +import java.time.LocalDate; import lombok.AllArgsConstructor; import lombok.Data; @@ -38,8 +39,8 @@ public class WrkProjectPayment extends BaseEntity { /** * 回款合同id */ - @TableField(value = "contracty_id") - private Long contractyId; + @TableField(value = "contract_id") + private Long contractId; /** * 项目名称 diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectContractController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectContractController.java deleted file mode 100644 index ab66baf..0000000 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectContractController.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.chushang.inspection.project.controller; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @auther: zhao - * @date: 2024/6/15 11:22 - */ -@Slf4j -@RestController -@RequestMapping(value = "/project/contract") -public class WrkProjectContractController { -} diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectController.java index 839129d..5807de9 100644 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectController.java +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectController.java @@ -1,6 +1,5 @@ package com.chushang.inspection.project.controller; -import cn.hutool.core.bean.BeanUtil; import com.chushang.common.core.exception.utils.AssertUtil; import com.chushang.common.core.validator.Create; import com.chushang.common.core.validator.Update; @@ -9,13 +8,12 @@ import com.chushang.common.log.annotation.SysLog; import com.chushang.common.log.enums.BusinessType; import com.chushang.common.mybatis.page.CommonParam; import com.chushang.common.mybatis.utils.PageResult; +import com.chushang.inspection.project.entity.dto.ContractDTO; import com.chushang.inspection.project.entity.dto.ProjectDTO; import com.chushang.inspection.project.entity.po.WrkProject; -import com.chushang.inspection.project.entity.po.WrkProjectContract; import com.chushang.inspection.project.service.WrkProjectContractService; import com.chushang.inspection.project.service.WrkProjectService; import com.chushang.security.annotation.RequiresPermissions; -import com.chushang.security.utils.SecurityUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -32,8 +30,8 @@ public class WrkProjectController { @Resource WrkProjectService projectService; - - + @Resource + WrkProjectContractService contractService; /** * 获取项目列表 */ @@ -50,7 +48,7 @@ public class WrkProjectController { * 新增项目 -- 暂存 + 提交审核 */ @PostMapping(value = "/save") -// @RequiresPermissions("inspection:project:save") + @RequiresPermissions("inspection:project:save") @SysLog(value = "项目",businessType = BusinessType.INSERT) public AjaxResult save(@RequestBody @Validated(Create.class) ProjectDTO project){ return AjaxResult.success(projectService.save(project)); @@ -60,7 +58,7 @@ public class WrkProjectController { * 修改 项目 */ @PostMapping(value = "/update") -// @RequiresPermissions("inspection:project:save") + @RequiresPermissions("inspection:project:save") @SysLog(value = "项目",businessType = BusinessType.UPDATE) public AjaxResult update(@RequestBody @Validated(Update.class) ProjectDTO project){ Long projectId = project.getProjectId(); @@ -68,6 +66,66 @@ public class WrkProjectController { return AjaxResult.success(projectService.update(project)); } + /** + * 删除项目 + */ + @DeleteMapping(value = "/{projectId}") + @RequiresPermissions("inspection:project:del") + @SysLog(value = "项目",businessType = BusinessType.DELETE) + public AjaxResult delProject(@PathVariable Long projectId) + { + return AjaxResult.success(projectService.delete(projectId)); + } + + /** + * 合同新增 + */ + @PostMapping(value = "/contract/save") + @SysLog(value = "合同", businessType = BusinessType.INSERT) + @RequiresPermissions("inspection:contract:save") + public AjaxResult save(@RequestBody @Validated(Create.class) ContractDTO contract) + { + Long projectId = contract.getProjectId(); + AssertUtil.invalidate(null == projectId, "新增合同时, 项目id 不能为空"); + return AjaxResult.success(projectService.saveContract(contract)); + } + + /** + * 修改 合同 + */ + @PostMapping(value = "/contract/update") + @SysLog(value = "合同", businessType = BusinessType.UPDATE) + @RequiresPermissions("inspection:contract:update") + public AjaxResult update(@RequestBody @Validated(Update.class) ContractDTO contract){ + Long contractId = contract.getContractId(); + AssertUtil.invalidate(null == contractId, "修改合同时, 合同id 不能为空"); + return AjaxResult.success(projectService.updateContract(contract)); + } + + /** + * 删除 合同 + */ + @DeleteMapping(value = "/contract/{contractId}") + @RequiresPermissions("inspection:contract:del") + @SysLog(value = "合同", businessType = BusinessType.DELETE) + public AjaxResult del(@PathVariable Long contractId){ + projectService.deleteContract(contractId); + return AjaxResult.success(); + } + + /** + * 获取 项目合同列表 + * 根据 项目Id 获取 + */ + @GetMapping(value = "/contract/list") + @RequiresPermissions("inspection:contract:list") + public AjaxResult list(Long projectId) + { + CommonParam commonParam = CommonParam.buildPageRequest(); + return AjaxResult.success(contractService.pageList(projectId, commonParam)); + } + + // /** // // /** diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectPaymentController.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectPaymentController.java index 511e0ee..0e2e638 100644 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectPaymentController.java +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/controller/WrkProjectPaymentController.java @@ -1,10 +1,22 @@ package com.chushang.inspection.project.controller; +import com.chushang.common.core.validator.Create; +import com.chushang.common.core.web.AjaxResult; +import com.chushang.common.log.annotation.SysLog; +import com.chushang.common.log.enums.BusinessType; +import com.chushang.common.mybatis.page.CommonParam; +import com.chushang.inspection.project.entity.dto.PaymentDTO; +import com.chushang.inspection.project.service.WrkProjectPaymentService; +import com.chushang.security.annotation.RequiresPermissions; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.aspectj.weaver.loadtime.Aj; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; /** + * 回款 * @auther: zhao * @date: 2024/6/15 11:22 */ @@ -12,4 +24,31 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(value = "/project/payment") public class WrkProjectPaymentController { + + @Resource + WrkProjectPaymentService paymentService; + + @SysLog(value = "回款", businessType = BusinessType.INSERT) + @PostMapping(value = "/save") + @RequiresPermissions("project:payment:save") + public AjaxResult save(@RequestBody @Validated(Create.class)PaymentDTO payment){ + return AjaxResult.success(paymentService.save(payment)); + } + + @GetMapping(value = "/list") + @RequiresPermissions("project:payment:list") + public AjaxResult list(PaymentDTO payment) + { + CommonParam commonParam = CommonParam.buildPageRequest(); + return AjaxResult.success(paymentService.pageList(payment.getProjectId(), payment.getContractId(),commonParam)); + } + @SysLog(value = "合同回款", businessType = BusinessType.DELETE) + @DeleteMapping(value = "/{paymentId}") + @RequiresPermissions("project:payment:del") + public AjaxResult del(@PathVariable Long paymentId){ + paymentService.removeById(paymentId); + return AjaxResult.success(); + } + + } diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectContractService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectContractService.java index e2b3a84..06014c5 100644 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectContractService.java +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectContractService.java @@ -1,11 +1,23 @@ package com.chushang.inspection.project.service; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.chushang.common.mybatis.page.CommonParam; +import com.chushang.common.mybatis.utils.PageResult; +import com.chushang.common.mybatis.utils.WrapperUtils; +import com.chushang.inspection.project.entity.dto.ContractDTO; +import com.chushang.inspection.project.entity.po.WrkProject; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chushang.inspection.project.mapper.WrkProjectContractMapper; import com.chushang.inspection.project.entity.po.WrkProjectContract; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.time.LocalDateTime; /** * @auther: zhao @@ -14,5 +26,30 @@ import com.chushang.inspection.project.entity.po.WrkProjectContract; @Slf4j @Service public class WrkProjectContractService extends ServiceImpl implements IService { + /** + * 删除合同 + */ + @Transactional + public void delete(Long contractId) { + WrkProjectContract contract = getById(contractId); + Integer auditStatus = contract.getAuditStatus(); + if (3 == auditStatus || 4 == auditStatus){ + log.info("删除已经审核通过的项目"); + } + removeById(contractId); + } + public PageResult pageList(Long projectId, CommonParam commonParam) { + WrkProjectContract contract = WrkProjectContract.builder().projectId(projectId).build(); + return pageList(contract, commonParam); + } + + public PageResult pageList(WrkProjectContract contract, CommonParam commonParam) { + LambdaQueryWrapper queryWrapper = WrapperUtils.builder(contract, contract, commonParam); + IPage page = this.page( + new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(commonParam.getPage(), commonParam.getLimit()), + queryWrapper + ); + return new PageResult(page); + } } diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectPaymentService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectPaymentService.java index 67fa985..4b8f652 100644 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectPaymentService.java +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectPaymentService.java @@ -1,12 +1,31 @@ package com.chushang.inspection.project.service; +import cn.hutool.core.bean.BeanUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import com.chushang.common.core.exception.ResultException; +import com.chushang.common.core.exception.utils.AssertUtil; +import com.chushang.common.core.util.DateUtils; +import com.chushang.common.mybatis.enums.Operator; +import com.chushang.common.mybatis.page.CommonParam; +import com.chushang.common.mybatis.utils.PageResult; +import com.chushang.common.mybatis.utils.WrapperUtils; +import com.chushang.inspection.project.entity.dto.PaymentDTO; +import com.chushang.inspection.project.entity.po.WrkProject; +import com.chushang.inspection.project.entity.po.WrkProjectContract; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.chushang.inspection.project.entity.po.WrkProjectPayment; import com.chushang.inspection.project.mapper.WrkProjectPaymentMapper; +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDate; + /** * @auther: zhao * @date: 2024/6/15 10:51 @@ -14,5 +33,86 @@ import com.chushang.inspection.project.mapper.WrkProjectPaymentMapper; @Slf4j @Service public class WrkProjectPaymentService extends ServiceImpl implements IService { + @Resource + WrkProjectService projectService; + @Resource + WrkProjectContractService contractService; + + public Long save(PaymentDTO payment) + { + WrkProjectPayment projectPayment = new WrkProjectPayment(); + BeanUtil.copyProperties(payment, projectPayment); + Long projectId = payment.getProjectId(); + Long contractId = payment.getContractId(); + + WrkProject project = new WrkProject(); + project.setProjectId(projectId); + LambdaQueryWrapper projectSql = WrapperUtils.builder(project, project, null) + .last(Operator.LIMIT_ONE.getCharacter()); + project = projectService.getOne(projectSql); + AssertUtil.invalidate(null == project, "查询不到对应的项目"); + WrkProjectContract projectContract = new WrkProjectContract(); + projectContract.setProjectId(projectId); + projectContract.setContractId(contractId); + LambdaQueryWrapper contractSql = WrapperUtils.builder(projectContract, projectContract, null) + .last(Operator.LIMIT_ONE.getCharacter()); + projectContract = contractService.getOne(contractSql); + AssertUtil.invalidate(null == projectContract, "查询不到对应的项目合同"); + + projectPayment.setProjectName(project.getProjectName()); + projectPayment.setDeptId(project.getDeptId()); + LocalDate now = LocalDate.now(); + // 日 + projectPayment.setPaymentDate(DateUtils.format(now)); + // 月 + projectPayment.setPaymentMonth(DateUtils.format(now, "yyyy-MM")); + // 合同金额 + BigDecimal contractAmount = projectContract.getContractAmount(); + // 已经回款的金额 + BigDecimal countPaymentAmount = projectPayment.getPaymentAmount(); + // 当前回款金额 + BigDecimal paymentAmount = payment.getPaymentAmount(); + // 待回款金额 + BigDecimal subtract = contractAmount.subtract(countPaymentAmount); + int i = subtract.compareTo(paymentAmount); + // 说明已经回款完毕 + if (i == 0){ + // 总回款金额 + projectPayment.setPaymentAmount(paymentAmount.add(countPaymentAmount)); + // 修改 回款 金额完成 + WrkProjectContract contract = new WrkProjectContract(); + contract.setContractId(contractId); + contract.setPaymentState(1); + contractService.updateById(contract); + } + // 未回款完成 + else if (i > 0){ + projectPayment.setPaymentAmount(paymentAmount.add(countPaymentAmount)); + } + // 回款超了 + else { + throw new ResultException("回款金额已经大于合同金额"); + } + save(projectPayment); + return projectPayment.getPaymentId(); + } + + public PageResult pageList(Long projectId, Long contractId, CommonParam commonParam) + { + WrkProjectPayment projectPayment = new WrkProjectPayment(); + projectPayment.setPaymentId(projectId); + projectPayment.setContractId(contractId); + return pageList(projectPayment, commonParam); + } + + public PageResult pageList(WrkProjectPayment projectPayment, CommonParam commonParam) + { + LambdaQueryWrapper queryWrapper = WrapperUtils.builder(projectPayment, projectPayment, commonParam); + IPage page = this.page( + new com.baomidou.mybatisplus.extension.plugins.pagination.Page<>(commonParam.getPage(), commonParam.getLimit()), + queryWrapper + ); + return new PageResult(page); + } } diff --git a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectService.java b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectService.java index d30b597..d83fd4b 100644 --- a/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectService.java +++ b/chushang-modules/chushang-module-inspection/inspection-service/src/main/java/com/chushang/inspection/project/service/WrkProjectService.java @@ -8,8 +8,10 @@ import com.chushang.common.mybatis.page.CommonParam; import com.chushang.common.mybatis.utils.PageResult; import com.chushang.common.mybatis.utils.WrapperUtils; import com.chushang.datascope.annotation.DataScope; +import com.chushang.inspection.project.entity.dto.ContractDTO; import com.chushang.inspection.project.entity.dto.ProjectDTO; import com.chushang.inspection.project.entity.po.WrkProjectContract; +import com.chushang.security.utils.SecurityUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -48,32 +50,28 @@ public class WrkProjectService extends ServiceImpl { WrkProject wrkProject = new WrkProject(); BeanUtil.copyProperties(project, wrkProject); -// Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId(); - Long deptId = 200L; + Long deptId = SecurityUtils.getLoginUser().getSysUser().getDeptId(); +// Long deptId = 200L; wrkProject.setDeptId(deptId); + + ContractDTO contract = project.getContract(); + LocalDateTime now = LocalDateTime.now(); + // 项目合同 + if (now.isBefore(contract.getContractStartTime()) && now.isAfter(contract.getContractEndTime())) { + wrkProject.setProjectEffect(0); + }else { + wrkProject.setProjectEffect(1); + } this.save(wrkProject); // 项目合同 - WrkProjectContract contract = WrkProjectContract.builder().build(); - BeanUtil.copyProperties(project.getContract(), contract); - contract.setProjectId(wrkProject.getProjectId()); + saveContract(contract); - LocalDateTime now = LocalDateTime.now(); - // 在 之前 && 在 之后 无效 - if (now.isBefore(contract.getContractStartTime()) && now.isAfter(contract.getContractEndTime())) { - contract.setProjectEffect(0); - }else { - contract.setProjectEffect(1); - } - // 未回款完成 - contract.setPaymentState(0); - // 项目合同 - contractService.save(contract); return wrkProject.getProjectId(); } /** - * 修改项目 + * 修改项目 -- 不同时修改 合同 */ @Transactional public Long update(ProjectDTO project) @@ -82,19 +80,84 @@ public class WrkProjectService extends ServiceImpl BeanUtil.copyProperties(project, wrkProject); this.updateById(wrkProject); // 项目合同 - WrkProjectContract contract = WrkProjectContract.builder().build(); - BeanUtil.copyProperties(project.getContract(), contract); - LocalDateTime now = LocalDateTime.now(); - // 在 之前 && 在 之后 无效 - if (now.isBefore(contract.getContractStartTime()) && now.isAfter(contract.getContractEndTime())) { - contract.setProjectEffect(0); - }else { - contract.setProjectEffect(1); - } - // 未回款完成 - contract.setPaymentState(0); +// WrkProjectContract contract = WrkProjectContract.builder().build(); +// BeanUtil.copyProperties(project.getContract(), contract); +// LocalDateTime now = LocalDateTime.now(); +// // 在 之前 && 在 之后 无效 +// if (now.isBefore(contract.getContractStartTime()) && now.isAfter(contract.getContractEndTime())) { +// contract.setProjectEffect(0); +// }else { +// contract.setProjectEffect(1); +// } +// // 未回款完成 +// contract.setPaymentState(0); // 项目合同 修改时不需要 项目id - contractService.updateById(contract); +// contractService.updateById(contract); return wrkProject.getProjectId(); } + + public void updateState(Long projectId, Integer projectEffect) + { + WrkProject project = new WrkProject(); + project.setProjectId(projectId); + project.setProjectEffect(projectEffect); + updateById(project); + } + + @Transactional + public Long delete(Long projectId) + { + WrkProject project = getById(projectId); + if (null != project){ + // 项目有效状态 + Integer projectEffect = project.getProjectEffect(); + if (1 == projectEffect){ + log.info("删除了有效项目, 但是此处不管"); + } + } + removeById(projectId); + return projectId; + } + + @Transactional + public Long saveContract(ContractDTO contract) { + // 项目合同 + WrkProjectContract projectContract = WrkProjectContract.builder().build(); + BeanUtil.copyProperties(contract, projectContract); + projectContract.setProjectId(contract.getProjectId()); + // 未回款完成 + projectContract.setPaymentState(0); + LocalDateTime now = LocalDateTime.now(); + boolean projectEffect = !now.isBefore(contract.getContractStartTime()) || !now.isAfter(contract.getContractEndTime()); + // 在 之前 && 在 之后 无效 + projectContract.setProjectEffect(projectEffect ? 1 : 0); + contractService.save(projectContract); + + updateState(contract.getProjectId(), projectEffect ? 1 : 0 ); + + return projectContract.getContractId(); + } + + @Transactional + public Long updateContract(ContractDTO contract) { + // 项目合同 + WrkProjectContract projectContract = WrkProjectContract.builder().build(); + BeanUtil.copyProperties(contract, projectContract); + projectContract.setProjectId(null); + + LocalDateTime now = LocalDateTime.now(); + boolean projectEffect = !now.isBefore(contract.getContractStartTime()) || !now.isAfter(contract.getContractEndTime()); + // 在 之前 && 在 之后 无效 + projectContract.setProjectEffect(projectEffect ? 1 : 0); + // 未回款完成 + projectContract.setPaymentState(0); + + contractService.updateById(projectContract); + updateState(contract.getProjectId(), projectEffect ? 1 : 0 ); + return projectContract.getContractId(); + } + + public void deleteContract(Long contractId) { + contractService.delete(contractId); + } }