diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostContractController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostContractController.java new file mode 100644 index 00000000..12b57345 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostContractController.java @@ -0,0 +1,147 @@ +package com.qs.serve.modules.tbs.controller; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.model.annotation.SysLog; +import com.qs.serve.common.model.dto.PageVo; +import com.qs.serve.common.model.dto.R; +import com.qs.serve.common.model.enums.BizType; +import com.qs.serve.common.model.enums.SystemModule; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.PageUtil; +import com.qs.serve.common.util.CopierUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.sys.entity.SysAttach; +import com.qs.serve.modules.sys.service.SysAttachService; +import com.qs.serve.modules.tbs.entity.bo.TbsCostContractBo; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import com.qs.serve.modules.tbs.entity.TbsCostContract; +import com.qs.serve.modules.tbs.service.TbsCostContractService; + +import javax.validation.Valid; +import java.util.Arrays; +import java.util.List; + +/** + * 预算 费用合同 + * @author YenHex + * @since 2023-03-14 + */ +@Slf4j +@AllArgsConstructor +@RestController +@RequestMapping("tbs/costContract") +public class TbsCostContractController { + + private TbsCostContractService tbsCostContractService; + private SysAttachService attachService; + + /** + * 列表 + * @param param + * @return + */ + @GetMapping("/list") + @PreAuthorize("hasRole('tbs:costApply:query')") + public R> getList(TbsCostContract param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + PageUtil.startPage(); + List list = tbsCostContractService.list(lqw); + for (TbsCostContract contract : list) { + if(CollectionUtil.isNotEmpty(contract.getAttachIds())){ + List attachIds = Arrays.asList(contract.getAttachIds()); + List attachList = attachService.listByIds(attachIds); + contract.setAttachInfoList(attachList); + } + } + return R.ok(list); + } + + /** + * 翻页 + * @param param + * @return + */ + @GetMapping("/page") + @PreAuthorize("hasRole('tbs:costApply:query')") + public R> getPage(TbsCostContract param){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(param); + PageUtil.startPage(); + List list = tbsCostContractService.list(lqw); + for (TbsCostContract contract : list) { + if(CollectionUtil.isNotEmpty(contract.getAttachIds())){ + List attachIds = Arrays.asList(contract.getAttachIds()); + List attachList = attachService.listByIds(attachIds); + contract.setAttachInfoList(attachList); + } + } + return R.byPageHelperList(list); + } + + /** + * ID查询 + * @param id + * @return + */ + @GetMapping("/getById/{id}") + @SysLog(module = SystemModule.Budget, title = "费用合同", biz = BizType.QUERY) + @PreAuthorize("hasRole('tbs:costApply:query')") + public R getById(@PathVariable("id") String id){ + TbsCostContract contract = tbsCostContractService.getById(id); + if(CollectionUtil.isNotEmpty(contract.getAttachIds())){ + List attachIds = Arrays.asList(contract.getAttachIds()); + List attachList = attachService.listByIds(attachIds); + contract.setAttachInfoList(attachList); + } + return R.ok(contract); + } + + + + /** + * 更新 + * @param param + * @return + */ + @PostMapping("/updateById") + @SysLog(module = SystemModule.Budget, title = "费用合同", biz = BizType.UPDATE) + @PreAuthorize("hasRole('tbs:costApply:update')") + public R updateById(@RequestBody @Valid TbsCostContractBo param){ + TbsCostContract entity = CopierUtil.copy(param,new TbsCostContract()); + boolean result = tbsCostContractService.updateById(entity); + return R.isTrue(result); + } + + /** + * 新增 + * @param param + * @return + */ + @PostMapping("/save") + @SysLog(module = SystemModule.Budget, title = "费用合同", biz = BizType.INSERT) + @PreAuthorize("hasRole('tbs:costApply:insert')") + public R save(@RequestBody @Valid TbsCostContractBo param){ + TbsCostContract entity = CopierUtil.copy(param,new TbsCostContract()); + boolean result = tbsCostContractService.save(entity); + return R.isTrue(result); + } + + /** + * 删除 + * @param ids + * @return + */ + @DeleteMapping("/deleteById/{ids}") + @SysLog(module = SystemModule.Budget, title = "费用合同", biz = BizType.DELETE) + @PreAuthorize("hasRole('tbs:costApply:delete')") + public R deleteById(@PathVariable("ids") String ids){ + List idsLong = StringUtils.splitIdLong(ids); + boolean result = tbsCostContractService.removeByIds(idsLong); + return R.isTrue(result); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostContract.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostContract.java new file mode 100644 index 00000000..f929d547 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostContract.java @@ -0,0 +1,125 @@ +package com.qs.serve.modules.tbs.entity; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler; +import lombok.Data; +import org.apache.ibatis.type.JdbcType; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * 费用合同 实体类 + * @author YenHex + * @since 2023-03-14 + */ +@Data +@TableName(value = "tbs_cost_contract",autoResultMap = true) +public class TbsCostContract implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + @TableId(type = IdType.AUTO) + private Long id; + + /** 费用申请id */ + @NotNull(message = "费用申请id不能为空") + private Long costApplyId; + + /** 合同名称 */ + @NotBlank(message = "合同名称不能为空") + @Length(max = 50,message = "合同名称长度不能超过50字") + private String contractName; + + /** 合同金额 */ + private BigDecimal contractAmount; + + /** 合同条件(文本框) */ + private String contractCondition; + + /** 合同附件地址 */ + @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) + private String[] attachIds; + + /** 签约时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime signTime; + + /** 到期时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + private LocalDateTime expireTime; + + /** 备注 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String remark; + + /** 创建时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 最后更新时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") + @TableField(fill = FieldFill.UPDATE) + private LocalDateTime updateTime; + + /** 所属租户 */ + @JsonIgnore + @JsonProperty + private String tenantId; + + /** 创建人 */ + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 更新人 */ + @TableField(fill = FieldFill.UPDATE) + private String updateBy; + + /** 逻辑删除标记(0:显示;1:隐藏) */ + @JsonIgnore + @JsonProperty + private String delFlag; + + /** 附件信息列表 */ + @TableField(exist = false) + private List attachInfoList; + + public static TbsCostContract toNewObject(TbsCostContract source){ + TbsCostContract costContract = new TbsCostContract(); + costContract.setId(source.getId()); + costContract.setCostApplyId(source.getCostApplyId()); + costContract.setContractName(source.getContractName()); + costContract.setContractAmount(source.getContractAmount()); + costContract.setContractCondition(source.getContractCondition()); + costContract.setAttachIds(source.getAttachIds()); + costContract.setSignTime(source.getSignTime()); + costContract.setExpireTime(source.getExpireTime()); + costContract.setRemark(source.getRemark()); + costContract.setCreateTime(source.getCreateTime()); + costContract.setUpdateTime(source.getUpdateTime()); + costContract.setTenantId(source.getTenantId()); + costContract.setCreateBy(source.getCreateBy()); + costContract.setUpdateBy(source.getUpdateBy()); + costContract.setDelFlag(source.getDelFlag()); + return costContract; + } + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostContractBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostContractBo.java new file mode 100644 index 00000000..3387e238 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCostContractBo.java @@ -0,0 +1,57 @@ +package com.qs.serve.modules.tbs.entity.bo; + +import java.time.LocalDate; +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; +import org.hibernate.validator.constraints.Length; +import org.springframework.format.annotation.DateTimeFormat; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.NotBlank; + +/** + * 费用合同 Bo + * @author YenHex + * @since 2023-03-14 + */ +@Data +public class TbsCostContractBo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** id */ + private Long id; + + /** 费用申请id */ + @NotNull(message = "费用申请id不能为空") + private Long costApplyId; + + /** 合同名称 */ + @NotBlank(message = "合同名称不能为空") + private String contractName; + + /** 合同金额 */ + private BigDecimal contractAmount; + + /** 合同条件(文本框) */ + private String contractCondition; + + /** 合同附件地址 */ + private String[] attachIds; + + /** 签约时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime signTime; + + /** 到期时间 */ + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime expireTime; + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostContractMapper.java b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostContractMapper.java new file mode 100644 index 00000000..d7249ddb --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/mapper/TbsCostContractMapper.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.tbs.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qs.serve.modules.tbs.entity.TbsCostContract; + +/** + * 费用合同 Mapper + * @author YenHex + * @date 2023-03-14 + */ +public interface TbsCostContractMapper extends BaseMapper { + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractService.java new file mode 100644 index 00000000..8791a8ab --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostContractService.java @@ -0,0 +1,14 @@ +package com.qs.serve.modules.tbs.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.qs.serve.modules.tbs.entity.TbsCostContract; + +/** + * 费用合同 服务接口 + * @author YenHex + * @date 2023-03-14 + */ +public interface TbsCostContractService extends IService { + +} + diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostContractServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostContractServiceImpl.java new file mode 100644 index 00000000..94f7766d --- /dev/null +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostContractServiceImpl.java @@ -0,0 +1,22 @@ +package com.qs.serve.modules.tbs.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import com.qs.serve.modules.tbs.entity.TbsCostContract; +import com.qs.serve.modules.tbs.service.TbsCostContractService; +import com.qs.serve.modules.tbs.mapper.TbsCostContractMapper; + +/** + * 费用合同 服务实现类 + * @author YenHex + * @since 2023-03-14 + */ +@Slf4j +@Service +@AllArgsConstructor +public class TbsCostContractServiceImpl extends ServiceImpl implements TbsCostContractService { + +} +