Commit 94329c8185f848ca863c6ecdb2f384e843a18daa

Authored by 杨鸣坤
1 parent 0a43e542

楚江ERP:订单申请延期实体搭建,增删改查接口完善

  1 +package com.lframework.xingyun.sc.bo.contract;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import com.lframework.starter.common.constants.StringPool;
  5 +import com.lframework.starter.web.core.bo.BaseBo;
  6 +import com.lframework.xingyun.sc.entity.SpecLockDelayApplication;
  7 +import io.swagger.annotations.ApiModelProperty;
  8 +import lombok.Data;
  9 +
  10 +import java.time.LocalDate;
  11 +
  12 +/**
  13 + * <p>
  14 + * 锁价无规格操作申请单 GetBo
  15 + * </p>
  16 + */
  17 +@Data
  18 +public class GetSpecLockDelayApplicationBo extends BaseBo<SpecLockDelayApplication> {
  19 +
  20 + /**
  21 + * ID
  22 + */
  23 + @ApiModelProperty("ID")
  24 + private String id;
  25 +
  26 + /**
  27 + * 合同主表ID
  28 + */
  29 + @ApiModelProperty("合同主表ID")
  30 + private String contractId;
  31 +
  32 + /**
  33 + * 合同编号
  34 + */
  35 + @ApiModelProperty("合同编号")
  36 + private String contractCode;
  37 +
  38 + /**
  39 + * 办事处名称
  40 + */
  41 + @ApiModelProperty("办事处名称")
  42 + private String deptName;
  43 +
  44 + /**
  45 + * 制单日期
  46 + */
  47 + @ApiModelProperty("制单日期")
  48 + private LocalDate contractDocumentDate;
  49 +
  50 + /**
  51 + * 订货日期
  52 + */
  53 + @ApiModelProperty("订货日期")
  54 + @JsonFormat(pattern = StringPool.DATE_PATTERN)
  55 + private LocalDate orderDate;
  56 +
  57 + /**
  58 + * 现申请锁规格日期
  59 + */
  60 + @ApiModelProperty("现申请锁规格日期")
  61 + @JsonFormat(pattern = StringPool.DATE_PATTERN)
  62 + private LocalDate specLockDate;
  63 +
  64 + /**
  65 + * 申请次数(第几次申请)
  66 + */
  67 + @ApiModelProperty("申请次数(第几次申请)")
  68 + private Integer applicationCount;
  69 +
  70 + /**
  71 + * 客户名称
  72 + */
  73 + @ApiModelProperty("客户名称")
  74 + private String customerName;
  75 +
  76 + /**
  77 + * 延迟原因
  78 + */
  79 + @ApiModelProperty("延迟原因")
  80 + private String delayReason;
  81 +
  82 + /**
  83 + * 审核状态
  84 + */
  85 + @ApiModelProperty("审核状态")
  86 + private String approvalStatus;
  87 +
  88 + private String approvalStatusName;
  89 +
  90 + /**
  91 + * 订单类型
  92 + */
  93 + @ApiModelProperty("订单类型")
  94 + private String contractType;
  95 +
  96 + /**
  97 + * 生产厂名称
  98 + */
  99 + @ApiModelProperty("生产厂名称")
  100 + private String workshopName;
  101 +
  102 + public GetSpecLockDelayApplicationBo() {
  103 +
  104 + }
  105 +
  106 + public GetSpecLockDelayApplicationBo(SpecLockDelayApplication dto) {
  107 +
  108 + super(dto);
  109 + }
  110 +
  111 + @Override
  112 + public BaseBo<SpecLockDelayApplication> convert(SpecLockDelayApplication dto) {
  113 + return super.convert(dto);
  114 + }
  115 +
  116 + @Override
  117 + protected void afterInit(SpecLockDelayApplication dto) {
  118 +
  119 + }
  120 +}
... ...
  1 +package com.lframework.xingyun.sc.bo.contract;
  2 +
  3 +import com.fasterxml.jackson.annotation.JsonFormat;
  4 +import com.lframework.starter.common.constants.StringPool;
  5 +import com.lframework.starter.web.core.bo.BaseBo;
  6 +import com.lframework.xingyun.sc.entity.SpecLockDelayApplication;
  7 +import io.swagger.annotations.ApiModelProperty;
  8 +import lombok.Data;
  9 +import org.hibernate.validator.constraints.Length;
  10 +
  11 +import java.time.LocalDate;
  12 +
  13 +/**
  14 + * <p>
  15 + * 锁价无规格操作申请单 QueryBo
  16 + * </p>
  17 + */
  18 +@Data
  19 +public class QuerySpecLockDelayApplicationBo extends BaseBo<SpecLockDelayApplication> {
  20 +
  21 + /**
  22 + * ID
  23 + */
  24 + @ApiModelProperty("ID")
  25 + private String id;
  26 +
  27 + /**
  28 + * 合同主表ID
  29 + */
  30 + @ApiModelProperty("合同主表ID")
  31 + private String contractId;
  32 +
  33 + /**
  34 + * 合同编号
  35 + */
  36 + @ApiModelProperty("合同编号")
  37 + private String contractCode;
  38 +
  39 + /**
  40 + * 办事处名称
  41 + */
  42 + @ApiModelProperty("办事处名称")
  43 + private String deptName;
  44 +
  45 + /**
  46 + * 制单日期
  47 + */
  48 + @ApiModelProperty("制单日期")
  49 + private LocalDate contractDocumentDate;
  50 +
  51 + /**
  52 + * 订货日期
  53 + */
  54 + @ApiModelProperty("订货日期")
  55 + @JsonFormat(pattern = StringPool.DATE_PATTERN)
  56 + private LocalDate orderDate;
  57 +
  58 + /**
  59 + * 现申请锁规格日期
  60 + */
  61 + @ApiModelProperty("现申请锁规格日期")
  62 + private LocalDate specLockDate;
  63 +
  64 + /**
  65 + * 申请次数(第几次申请)
  66 + */
  67 + @ApiModelProperty("申请次数(第几次申请)")
  68 + private Integer applicationCount;
  69 +
  70 + /**
  71 + * 客户名称
  72 + */
  73 + @ApiModelProperty("客户名称")
  74 + private String customerName;
  75 +
  76 + /**
  77 + * 审核状态
  78 + */
  79 + @ApiModelProperty("审核状态")
  80 + private String approvalStatus;
  81 +
  82 + private String approvalStatusName;
  83 +
  84 + /**
  85 + * 订单类型
  86 + */
  87 + @ApiModelProperty("订单类型")
  88 + private String contractType;
  89 +
  90 + /**
  91 + * 生产厂名称
  92 + */
  93 + @ApiModelProperty("生产厂名称")
  94 + private String workshopName;
  95 +
  96 + /**
  97 + * 延迟原因
  98 + */
  99 + @ApiModelProperty(value = "延迟原因")
  100 + private String delayReason;
  101 +
  102 + public QuerySpecLockDelayApplicationBo() {
  103 +
  104 + }
  105 +
  106 + public QuerySpecLockDelayApplicationBo(SpecLockDelayApplication dto) {
  107 +
  108 + super(dto);
  109 + }
  110 +
  111 + @Override
  112 + public BaseBo<SpecLockDelayApplication> convert(SpecLockDelayApplication dto) {
  113 + return super.convert(dto);
  114 + }
  115 +
  116 + @Override
  117 + protected void afterInit(SpecLockDelayApplication dto) {
  118 +
  119 + }
  120 +}
... ...
  1 +package com.lframework.xingyun.sc.controller.contract;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.Wrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.lframework.starter.common.exceptions.impl.DefaultClientException;
  6 +import com.lframework.starter.common.utils.CollectionUtil;
  7 +import com.lframework.starter.common.utils.DateUtil;
  8 +import com.lframework.starter.web.core.annotations.security.HasPermission;
  9 +import com.lframework.starter.web.core.components.resp.InvokeResult;
  10 +import com.lframework.starter.web.core.components.resp.InvokeResultBuilder;
  11 +import com.lframework.starter.web.core.components.resp.PageResult;
  12 +import com.lframework.starter.web.core.controller.DefaultBaseController;
  13 +import com.lframework.starter.web.core.utils.PageResultUtil;
  14 +import com.lframework.starter.web.inner.entity.SysDataDicItem;
  15 +import com.lframework.starter.web.inner.entity.SysDept;
  16 +import com.lframework.starter.web.inner.service.system.SysDataDicItemService;
  17 +import com.lframework.starter.web.inner.service.system.SysDeptService;
  18 +import com.lframework.xingyun.basedata.entity.Customer;
  19 +import com.lframework.xingyun.basedata.entity.Workshop;
  20 +import com.lframework.xingyun.basedata.service.customer.CustomerService;
  21 +import com.lframework.xingyun.basedata.service.workshop.WorkshopService;
  22 +import com.lframework.xingyun.sc.bo.contract.GetSpecLockDelayApplicationBo;
  23 +import com.lframework.xingyun.sc.bo.contract.QueryContractDistributorStandardBo;
  24 +import com.lframework.xingyun.sc.bo.contract.QuerySpecLockDelayApplicationBo;
  25 +import com.lframework.xingyun.sc.entity.ContractDistributorStandard;
  26 +import com.lframework.xingyun.sc.entity.SpecLockDelayApplication;
  27 +import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService;
  28 +import com.lframework.xingyun.sc.service.contract.SpecLockDelayApplicationService;
  29 +import com.lframework.xingyun.sc.vo.contract.createVo.CreateSpecLockDelayApplicationVo;
  30 +import com.lframework.xingyun.sc.vo.contract.queryVo.QuerySpecLockDelayApplicationVo;
  31 +import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateSpecLockDelayApplicationVo;
  32 +import io.swagger.annotations.Api;
  33 +import io.swagger.annotations.ApiImplicitParam;
  34 +import io.swagger.annotations.ApiOperation;
  35 +import org.apache.commons.collections4.CollectionUtils;
  36 +import org.apache.commons.lang3.StringUtils;
  37 +import org.springframework.beans.factory.annotation.Autowired;
  38 +import org.springframework.validation.annotation.Validated;
  39 +import org.springframework.web.bind.annotation.*;
  40 +
  41 +import javax.validation.constraints.NotBlank;
  42 +import java.util.List;
  43 +import java.util.Map;
  44 +import java.util.function.Function;
  45 +import java.util.stream.Collectors;
  46 +
  47 +/**
  48 + * 锁价无规格操作申请单 Controller
  49 + */
  50 +@Api(tags = "锁价无规格操作申请单")
  51 +@Validated
  52 +@RestController
  53 +@RequestMapping("/contract/specLockDelayApplication")
  54 +public class SpecLockDelayApplicationController extends DefaultBaseController {
  55 +
  56 + @Autowired
  57 + private SpecLockDelayApplicationService specLockDelayApplicationService;
  58 + @Autowired
  59 + private ContractDistributorStandardService contractDistributorStandardService;
  60 + @Autowired
  61 + private SysDeptService sysDeptService;
  62 + @Autowired
  63 + private SysDataDicItemService sysDataDicItemService;
  64 + @Autowired
  65 + private CustomerService customerService;
  66 + @Autowired
  67 + private WorkshopService workshopService;
  68 +
  69 + public static final String AUDIT_STATUS_DIC_CODE = "AUDIT_STATUS"; // 审核状态
  70 +
  71 +
  72 + /**
  73 + * 查询列表
  74 + */
  75 + @ApiOperation("查询列表")
  76 + @HasPermission({"entity:speclockdelayapplication:query"})
  77 + @GetMapping("/query")
  78 + public InvokeResult<PageResult<QuerySpecLockDelayApplicationBo>> query(QuerySpecLockDelayApplicationVo vo) {
  79 + if (vo != null && StringUtils.isNotBlank(vo.getContractCode())) {
  80 + Wrapper<ContractDistributorStandard> wrapper = Wrappers.lambdaQuery(ContractDistributorStandard.class)
  81 + .like(ContractDistributorStandard::getCode, vo.getContractCode());
  82 + List<ContractDistributorStandard> contractDistributorStandardList = contractDistributorStandardService.list(wrapper);
  83 + if (CollectionUtils.isEmpty(contractDistributorStandardList)) {
  84 + return InvokeResultBuilder.success(new PageResult<>());
  85 + }
  86 +
  87 + vo.setContractIdList(contractDistributorStandardList.stream().map(ContractDistributorStandard::getId).collect(Collectors.toList()));
  88 + }
  89 +
  90 +
  91 + PageResult<SpecLockDelayApplication> pageResult = specLockDelayApplicationService.query(getPageIndex(vo), getPageSize(vo), vo);
  92 +
  93 + List<SpecLockDelayApplication> datas = pageResult.getDatas();
  94 + List<QuerySpecLockDelayApplicationBo> results = null;
  95 +
  96 + if (!CollectionUtil.isEmpty(datas)) {
  97 + results = datas.stream().map(QuerySpecLockDelayApplicationBo::new).collect(Collectors.toList());
  98 + }
  99 +
  100 + if (CollectionUtils.isEmpty(results)) {
  101 + return InvokeResultBuilder.success(new PageResult<>());
  102 + }
  103 +
  104 + List<String> contractIdList = results.stream().map(QuerySpecLockDelayApplicationBo::getContractId).collect(Collectors.toList());
  105 + List<ContractDistributorStandard> contractDistributorStandardList = contractDistributorStandardService.listByIds(contractIdList);
  106 + Map<String, ContractDistributorStandard> contractDistributorStandardMap = contractDistributorStandardList
  107 + .stream().collect(Collectors.toMap(ContractDistributorStandard::getId, Function.identity()));
  108 + List<String> deptIdList = contractDistributorStandardList.stream().map(ContractDistributorStandard::getDeptId).collect(Collectors.toList());
  109 + Map<String, SysDept> sysDeptMap = CollectionUtils.emptyIfNull(sysDeptService.listByIds(deptIdList))
  110 + .stream()
  111 + .collect(Collectors.toMap(SysDept::getId, Function.identity()));
  112 + List<String> buyerIdList = contractDistributorStandardList.stream().map(ContractDistributorStandard::getBuyer).collect(Collectors.toList());
  113 + Map<String, Customer> customerMap = CollectionUtils.emptyIfNull(customerService.listByIds(buyerIdList))
  114 + .stream()
  115 + .collect(Collectors.toMap(Customer::getId, Function.identity()));
  116 + List<SysDataDicItem> sysDataDicItemList = sysDataDicItemService.findByDicCode(AUDIT_STATUS_DIC_CODE);
  117 + Map<String, String> auditCodeAndNameMap = CollectionUtils.emptyIfNull(sysDataDicItemList)
  118 + .stream()
  119 + .collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName));
  120 + List<String> workshopIdList = contractDistributorStandardList.stream().map(ContractDistributorStandard::getWorkshopId).collect(Collectors.toList());
  121 + Map<String, Workshop> workshopMap = CollectionUtils.emptyIfNull(workshopService.listByIds(workshopIdList))
  122 + .stream()
  123 + .collect(Collectors.toMap(Workshop::getId, Function.identity()));
  124 +
  125 + results.forEach(result -> {
  126 + if (result == null || StringUtils.isBlank(result.getContractId())) {
  127 + return;
  128 + }
  129 +
  130 + ContractDistributorStandard contractDistributorStandard = contractDistributorStandardMap.get(result.getContractId());
  131 + if (contractDistributorStandard == null) {
  132 + return;
  133 + }
  134 +
  135 + Customer customer = customerMap.get(contractDistributorStandard.getBuyer());
  136 + String auditName = auditCodeAndNameMap.get(result.getApprovalStatus());
  137 + SysDept sysDept = sysDeptMap.get(contractDistributorStandard.getDeptId());
  138 + Workshop workshop = workshopMap.get(contractDistributorStandard.getWorkshopId());
  139 + result.setContractCode(contractDistributorStandard.getCode());
  140 + result.setDeptName(sysDept.getName());
  141 + result.setContractDocumentDate(contractDistributorStandard.getCreateTime().toLocalDate());
  142 + result.setOrderDate(contractDistributorStandard.getOrderDate());
  143 + result.setCustomerName(customer.getName());
  144 + result.setApprovalStatusName(auditName);
  145 + result.setContractType(contractDistributorStandard.getType());
  146 + result.setWorkshopName(workshop.getName());
  147 + });
  148 +
  149 + return InvokeResultBuilder.success(PageResultUtil.rebuild(pageResult, results));
  150 + }
  151 +
  152 + /**
  153 + * 根据ID查询
  154 + */
  155 + @ApiOperation("根据ID查询")
  156 + @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true)
  157 + @HasPermission({"entity:speclockdelayapplication:query"})
  158 + @GetMapping
  159 + public InvokeResult<GetSpecLockDelayApplicationBo> get(@NotBlank(message = "id不能为空!") String id) {
  160 +
  161 + SpecLockDelayApplication data = specLockDelayApplicationService.findById(id);
  162 + if (data == null) {
  163 + throw new DefaultClientException("锁价无规格操作申请单不存在!");
  164 + }
  165 +
  166 + GetSpecLockDelayApplicationBo result = new GetSpecLockDelayApplicationBo(data);
  167 + ContractDistributorStandard contractDistributorStandard = contractDistributorStandardService.findById(result.getContractId());
  168 + if (contractDistributorStandard == null) {
  169 + throw new DefaultClientException("对应锁价无规格合同不存在!");
  170 + }
  171 +
  172 + SysDept sysDept = sysDeptService.findById(contractDistributorStandard.getDeptId());
  173 + Customer customer = customerService.findById(contractDistributorStandard.getBuyer());
  174 + SysDataDicItem sysDataDicItem = sysDataDicItemService.findByCode(AUDIT_STATUS_DIC_CODE, result.getApprovalStatus());
  175 + Workshop workshop = workshopService.findById(contractDistributorStandard.getWorkshopId());
  176 + result.setContractCode(contractDistributorStandard.getCode());
  177 + result.setDeptName(sysDept.getName());
  178 + result.setContractDocumentDate(contractDistributorStandard.getCreateTime().toLocalDate());
  179 + result.setOrderDate(contractDistributorStandard.getOrderDate());
  180 + result.setCustomerName(customer.getName());
  181 + result.setApprovalStatusName(sysDataDicItem.getName());
  182 + result.setContractType(contractDistributorStandard.getType());
  183 + result.setWorkshopName(workshop.getName());
  184 +
  185 + return InvokeResultBuilder.success(result);
  186 + }
  187 +
  188 + /**
  189 + * 新增
  190 + */
  191 + @ApiOperation("新增")
  192 + @HasPermission({"entity:speclockdelayapplication:add"})
  193 + @PostMapping
  194 + public InvokeResult<Void> create(@RequestBody CreateSpecLockDelayApplicationVo vo) {
  195 +
  196 + specLockDelayApplicationService.create(vo);
  197 +
  198 + return InvokeResultBuilder.success();
  199 + }
  200 +
  201 + /**
  202 + * 修改
  203 + */
  204 + @ApiOperation("修改")
  205 + @HasPermission({"entity:speclockdelayapplication:modify"})
  206 + @PutMapping
  207 + public InvokeResult<Void> update(@RequestBody UpdateSpecLockDelayApplicationVo vo) {
  208 +
  209 + specLockDelayApplicationService.update(vo);
  210 +
  211 + specLockDelayApplicationService.cleanCacheByKey(vo.getId());
  212 +
  213 + return InvokeResultBuilder.success();
  214 + }
  215 +
  216 + /**
  217 + * 获取订单申请延期数据
  218 + */
  219 + @ApiOperation("获取订单申请延期数据")
  220 + @GetMapping("/showContract")
  221 + public InvokeResult<GetSpecLockDelayApplicationBo> update(@NotBlank(message = "id不能为空!") String id) {
  222 +
  223 + ContractDistributorStandard contractDistributorStandard = contractDistributorStandardService.findById(id);
  224 + if (contractDistributorStandard == null) {
  225 + throw new DefaultClientException("对应锁价无规格合同不存在!");
  226 + }
  227 +
  228 + QuerySpecLockDelayApplicationVo vo = new QuerySpecLockDelayApplicationVo();
  229 + vo.setContractId(id);
  230 + List<SpecLockDelayApplication> specLockDelayApplicationList = specLockDelayApplicationService.query(vo);
  231 +
  232 + GetSpecLockDelayApplicationBo result = new GetSpecLockDelayApplicationBo();
  233 +
  234 + SysDept sysDept = sysDeptService.findById(contractDistributorStandard.getDeptId());
  235 + Customer customer = customerService.findById(contractDistributorStandard.getBuyer());
  236 + Workshop workshop = workshopService.findById(contractDistributorStandard.getWorkshopId());
  237 + result.setContractCode(contractDistributorStandard.getCode());
  238 + result.setContractId(id);
  239 + result.setDeptName(sysDept.getName());
  240 + result.setContractDocumentDate(contractDistributorStandard.getCreateTime().toLocalDate());
  241 + result.setOrderDate(contractDistributorStandard.getOrderDate());
  242 + result.setCustomerName(customer.getName());
  243 + result.setContractType(contractDistributorStandard.getType());
  244 + result.setWorkshopName(workshop.getName());
  245 + result.setApplicationCount(CollectionUtils.isEmpty(specLockDelayApplicationList) ? 0 : specLockDelayApplicationList.size() + 1);
  246 +
  247 + return InvokeResultBuilder.success(result);
  248 + }
  249 +
  250 +}
... ...
  1 +package com.lframework.xingyun.sc.entity;
  2 +
  3 +
  4 +import com.baomidou.mybatisplus.annotation.FieldFill;
  5 +import com.baomidou.mybatisplus.annotation.TableField;
  6 +import com.baomidou.mybatisplus.annotation.TableName;
  7 +import com.lframework.starter.web.core.dto.BaseDto;
  8 +import com.lframework.starter.web.core.entity.BaseEntity;
  9 +import lombok.Data;
  10 +
  11 +import java.time.LocalDate;
  12 +import java.time.LocalDateTime;
  13 +
  14 +/**
  15 + * <p>
  16 + * 锁价无规格操作申请单
  17 + * </p>
  18 + */
  19 +@Data
  20 +@TableName("tbl_spec_lock_delay_application")
  21 +public class SpecLockDelayApplication extends BaseEntity implements BaseDto {
  22 +
  23 + private static final long serialVersionUID = 1L;
  24 +
  25 + public static final String CACHE_NAME = "SpecLockDelayApplication";
  26 +
  27 + /**
  28 + * ID
  29 + */
  30 + private String id;
  31 +
  32 + /**
  33 + * 合同主表ID
  34 + */
  35 + private String contractId;
  36 +
  37 + /**
  38 + * 现申请锁规格日期
  39 + */
  40 + private LocalDate specLockDate;
  41 +
  42 + /**
  43 + * 申请次数(第几次申请)
  44 + */
  45 + private Integer applicationCount;
  46 +
  47 + /**
  48 + * 延迟原因
  49 + */
  50 + private String delayReason;
  51 +
  52 + /**
  53 + * 审核状态
  54 + */
  55 + private String approvalStatus;
  56 +
  57 + /**
  58 + * 审核人
  59 + */
  60 + private String approverId;
  61 +
  62 + /**
  63 + * 审核时间
  64 + */
  65 + private LocalDateTime approvedAt;
  66 +
  67 + /**
  68 + * 创建人ID
  69 + */
  70 + @TableField(fill = FieldFill.INSERT)
  71 + private String createById;
  72 +
  73 + /**
  74 + * 创建人
  75 + */
  76 + @TableField(fill = FieldFill.INSERT)
  77 + private String createBy;
  78 +
  79 + /**
  80 + * 更新人ID
  81 + */
  82 + @TableField(fill = FieldFill.INSERT_UPDATE)
  83 + private String updateById;
  84 +
  85 + /**
  86 + * 更新人
  87 + */
  88 + @TableField(fill = FieldFill.INSERT_UPDATE)
  89 + private String updateBy;
  90 +
  91 + /**
  92 + * 创建时间
  93 + */
  94 + @TableField(fill = FieldFill.INSERT)
  95 + private LocalDateTime createTime;
  96 +
  97 + /**
  98 + * 更新时间
  99 + */
  100 + @TableField(fill = FieldFill.INSERT_UPDATE)
  101 + private LocalDateTime updateTime;
  102 +
  103 +}
... ...
  1 +package com.lframework.xingyun.sc.impl.contract;
  2 +
  3 +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4 +import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  5 +import com.github.pagehelper.PageInfo;
  6 +import com.lframework.starter.common.exceptions.impl.DefaultClientException;
  7 +import com.lframework.starter.common.utils.Assert;
  8 +import com.lframework.starter.common.utils.ObjectUtil;
  9 +import com.lframework.starter.web.core.annotations.oplog.OpLog;
  10 +import com.lframework.starter.web.core.components.resp.PageResult;
  11 +import com.lframework.starter.web.core.impl.BaseMpServiceImpl;
  12 +import com.lframework.starter.web.core.utils.IdUtil;
  13 +import com.lframework.starter.web.core.utils.OpLogUtil;
  14 +import com.lframework.starter.web.core.utils.PageHelperUtil;
  15 +import com.lframework.starter.web.core.utils.PageResultUtil;
  16 +import com.lframework.starter.web.inner.components.oplog.OtherOpLogType;
  17 +import com.lframework.xingyun.sc.entity.SpecLockDelayApplication;
  18 +import com.lframework.xingyun.sc.mappers.SpecLockDelayApplicationMapper;
  19 +import com.lframework.xingyun.sc.service.contract.SpecLockDelayApplicationService;
  20 +import com.lframework.xingyun.sc.vo.contract.createVo.CreateSpecLockDelayApplicationVo;
  21 +import com.lframework.xingyun.sc.vo.contract.queryVo.QuerySpecLockDelayApplicationVo;
  22 +import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateSpecLockDelayApplicationVo;
  23 +import org.springframework.cache.annotation.CacheEvict;
  24 +import org.springframework.cache.annotation.Cacheable;
  25 +import org.springframework.stereotype.Service;
  26 +import org.springframework.transaction.annotation.Transactional;
  27 +
  28 +import java.io.Serializable;
  29 +import java.util.List;
  30 +
  31 +@Service
  32 +public class SpecLockDelayApplicationServiceImpl extends BaseMpServiceImpl<SpecLockDelayApplicationMapper, SpecLockDelayApplication> implements SpecLockDelayApplicationService {
  33 +
  34 + @Override
  35 + public PageResult<SpecLockDelayApplication> query(Integer pageIndex, Integer pageSize, QuerySpecLockDelayApplicationVo vo) {
  36 +
  37 + Assert.greaterThanZero(pageIndex);
  38 + Assert.greaterThanZero(pageSize);
  39 +
  40 + PageHelperUtil.startPage(pageIndex, pageSize);
  41 + List<SpecLockDelayApplication> datas = this.query(vo);
  42 +
  43 + return PageResultUtil.convert(new PageInfo<>(datas));
  44 + }
  45 +
  46 + @Override
  47 + public List<SpecLockDelayApplication> query(QuerySpecLockDelayApplicationVo vo) {
  48 +
  49 + return getBaseMapper().query(vo);
  50 + }
  51 +
  52 + @Cacheable(value = SpecLockDelayApplication.CACHE_NAME, key = "@cacheVariables.tenantId() + #id", unless = "#result == null")
  53 + @Override
  54 + public SpecLockDelayApplication findById(String id) {
  55 +
  56 + return getBaseMapper().selectById(id);
  57 + }
  58 +
  59 + @OpLog(type = OtherOpLogType.class, name = "新增锁价无规格操作申请单,ID:{}", params = {"#id"})
  60 + @Transactional(rollbackFor = Exception.class)
  61 + @Override
  62 + public String create(CreateSpecLockDelayApplicationVo vo) {
  63 +
  64 + SpecLockDelayApplication data = new SpecLockDelayApplication();
  65 + data.setId(IdUtil.getUUID());
  66 + data.setContractId(vo.getContractId());
  67 + data.setSpecLockDate(vo.getSpecLockDate());
  68 + data.setApplicationCount(vo.getApplicationCount());
  69 + data.setDelayReason(vo.getDelayReason());
  70 + data.setApprovalStatus(vo.getApprovalStatus());
  71 +
  72 + getBaseMapper().insert(data);
  73 +
  74 + OpLogUtil.setVariable("id", data.getId());
  75 + OpLogUtil.setExtra(vo);
  76 +
  77 + return data.getId();
  78 + }
  79 +
  80 + @OpLog(type = OtherOpLogType.class, name = "修改锁价无规格操作申请单,ID:{}", params = {"#id"})
  81 + @Transactional(rollbackFor = Exception.class)
  82 + @Override
  83 + public void update(UpdateSpecLockDelayApplicationVo vo) {
  84 +
  85 + SpecLockDelayApplication data = getBaseMapper().selectById(vo.getId());
  86 + if (ObjectUtil.isNull(data)) {
  87 + throw new DefaultClientException("锁价无规格操作申请单不存在!");
  88 + }
  89 +
  90 + LambdaUpdateWrapper<SpecLockDelayApplication> updateWrapper = Wrappers.lambdaUpdate(SpecLockDelayApplication.class)
  91 + .set(SpecLockDelayApplication::getContractId, vo.getContractId())
  92 + .set(SpecLockDelayApplication::getSpecLockDate, vo.getSpecLockDate())
  93 + .set(SpecLockDelayApplication::getApplicationCount, vo.getApplicationCount())
  94 + .set(SpecLockDelayApplication::getDelayReason, vo.getDelayReason())
  95 + .set(SpecLockDelayApplication::getApprovalStatus, vo.getApprovalStatus())
  96 + .eq(SpecLockDelayApplication::getId, vo.getId());
  97 +
  98 + getBaseMapper().update(updateWrapper);
  99 +
  100 + OpLogUtil.setVariable("id", data.getId());
  101 + OpLogUtil.setExtra(vo);
  102 + }
  103 +
  104 + @CacheEvict(value = SpecLockDelayApplication.CACHE_NAME, key = "@cacheVariables.tenantId() + #key")
  105 + @Override
  106 + public void cleanCacheByKey(Serializable key) {
  107 +
  108 + }
  109 +}
... ...
  1 +package com.lframework.xingyun.sc.mappers;
  2 +
  3 +import com.lframework.starter.web.core.mapper.BaseMapper;
  4 +import com.lframework.xingyun.sc.entity.SpecLockDelayApplication;
  5 +import com.lframework.xingyun.sc.vo.contract.queryVo.QuerySpecLockDelayApplicationVo;
  6 +import org.apache.ibatis.annotations.Param;
  7 +
  8 +import java.util.List;
  9 +
  10 +/**
  11 + * <p>
  12 + * 锁价无规格操作申请单 Mapper 接口
  13 + * </p>
  14 + */
  15 +public interface SpecLockDelayApplicationMapper extends BaseMapper<SpecLockDelayApplication> {
  16 +
  17 + /**
  18 + * 查询列表
  19 + *
  20 + * @param vo
  21 + * @return
  22 + */
  23 + List<SpecLockDelayApplication> query(@Param("vo") QuerySpecLockDelayApplicationVo vo);
  24 +}
... ...
  1 +package com.lframework.xingyun.sc.service.contract;
  2 +
  3 +import com.lframework.starter.web.core.components.resp.PageResult;
  4 +import com.lframework.starter.web.core.service.BaseMpService;
  5 +import com.lframework.xingyun.sc.entity.SpecLockDelayApplication;
  6 +import com.lframework.xingyun.sc.vo.contract.createVo.CreateSpecLockDelayApplicationVo;
  7 +import com.lframework.xingyun.sc.vo.contract.queryVo.QuerySpecLockDelayApplicationVo;
  8 +import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateSpecLockDelayApplicationVo;
  9 +
  10 +import java.util.List;
  11 +
  12 +/**
  13 + * 锁价无规格操作申请单 Service
  14 + */
  15 +public interface SpecLockDelayApplicationService extends BaseMpService<SpecLockDelayApplication> {
  16 +
  17 + /**
  18 + * 查询列表
  19 + *
  20 + * @return
  21 + */
  22 + PageResult<SpecLockDelayApplication> query(Integer pageIndex, Integer pageSize, QuerySpecLockDelayApplicationVo vo);
  23 +
  24 + /**
  25 + * 查询列表
  26 + *
  27 + * @param vo
  28 + * @return
  29 + */
  30 + List<SpecLockDelayApplication> query(QuerySpecLockDelayApplicationVo vo);
  31 +
  32 + /**
  33 + * 根据ID查询
  34 + *
  35 + * @param id
  36 + * @return
  37 + */
  38 + SpecLockDelayApplication findById(String id);
  39 +
  40 + /**
  41 + * 创建
  42 + *
  43 + * @param vo
  44 + * @return
  45 + */
  46 + String create(CreateSpecLockDelayApplicationVo vo);
  47 +
  48 + /**
  49 + * 修改
  50 + *
  51 + * @param vo
  52 + */
  53 + void update(UpdateSpecLockDelayApplicationVo vo);
  54 +
  55 +}
  56 +
... ...
  1 +package com.lframework.xingyun.sc.vo.contract.createVo;
  2 +
  3 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  4 +import com.lframework.starter.web.core.vo.BaseVo;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +import org.hibernate.validator.constraints.Length;
  8 +
  9 +import java.io.Serializable;
  10 +import java.time.LocalDate;
  11 +
  12 +@Data
  13 +public class CreateSpecLockDelayApplicationVo implements BaseVo, Serializable {
  14 +
  15 + private static final long serialVersionUID = 1L;
  16 +
  17 + /**
  18 + * 合同主表ID
  19 + */
  20 + @ApiModelProperty(value = "合同主表ID")
  21 + @Length(message = "合同主表ID最多允许32个字符!")
  22 + private String contractId;
  23 +
  24 + /**
  25 + * 现申请锁规格日期
  26 + */
  27 + @ApiModelProperty(value = "现申请锁规格日期")
  28 + @TypeMismatch(message = "现申请锁规格日期格式有误!")
  29 + private LocalDate specLockDate;
  30 +
  31 + /**
  32 + * 申请次数(第几次申请)
  33 + */
  34 + @ApiModelProperty(value = "申请次数(第几次申请)")
  35 + @TypeMismatch(message = "申请次数(第几次申请)格式有误!")
  36 + private Integer applicationCount;
  37 +
  38 + /**
  39 + * 延迟原因
  40 + */
  41 + @ApiModelProperty(value = "延迟原因")
  42 + @Length(message = "延迟原因最多允许200个字符!")
  43 + private String delayReason;
  44 +
  45 + /**
  46 + * 审核状态
  47 + */
  48 + @ApiModelProperty(value = "审核状态")
  49 + @Length(message = "审核状态最多允许50个字符!")
  50 + private String approvalStatus;
  51 +
  52 +}
... ...
  1 +package com.lframework.xingyun.sc.vo.contract.queryVo;
  2 +
  3 +import com.lframework.starter.web.core.vo.BaseVo;
  4 +import com.lframework.starter.web.core.vo.PageVo;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +
  8 +import java.io.Serializable;
  9 +import java.util.List;
  10 +
  11 +@Data
  12 +public class QuerySpecLockDelayApplicationVo extends PageVo implements BaseVo, Serializable {
  13 +
  14 + private static final long serialVersionUID = 1L;
  15 +
  16 + /**
  17 + * 合同主表ID
  18 + */
  19 + @ApiModelProperty("合同主表ID")
  20 + private String contractId;
  21 +
  22 + /**
  23 + * 合同编号
  24 + */
  25 + @ApiModelProperty("合同编号")
  26 + private String contractCode;
  27 +
  28 + /**
  29 + * 审核状态
  30 + */
  31 + @ApiModelProperty("审核状态")
  32 + private String approvalStatus;
  33 +
  34 + /**
  35 + * 合同主表ID集合
  36 + */
  37 + @ApiModelProperty("合同主表ID集合")
  38 + private List<String> contractIdList;
  39 +}
... ...
  1 +package com.lframework.xingyun.sc.vo.contract.updateVo;
  2 +
  3 +import com.lframework.starter.web.core.components.validation.TypeMismatch;
  4 +import com.lframework.starter.web.core.vo.BaseVo;
  5 +import io.swagger.annotations.ApiModelProperty;
  6 +import lombok.Data;
  7 +import org.hibernate.validator.constraints.Length;
  8 +
  9 +import java.io.Serializable;
  10 +import java.time.LocalDate;
  11 +
  12 +@Data
  13 +public class UpdateSpecLockDelayApplicationVo implements BaseVo, Serializable {
  14 +
  15 + private static final long serialVersionUID = 1L;
  16 +
  17 + /**
  18 + * ID
  19 + */
  20 + @ApiModelProperty(value = "ID")
  21 + private String id;
  22 +
  23 + /**
  24 + * 合同主表ID
  25 + */
  26 + @ApiModelProperty(value = "合同主表ID")
  27 + @Length(message = "合同主表ID最多允许32个字符!")
  28 + private String contractId;
  29 +
  30 + /**
  31 + * 现申请锁规格日期
  32 + */
  33 + @ApiModelProperty(value = "现申请锁规格日期")
  34 + @TypeMismatch(message = "现申请锁规格日期格式有误!")
  35 + private LocalDate specLockDate;
  36 +
  37 + /**
  38 + * 申请次数(第几次申请)
  39 + */
  40 + @ApiModelProperty(value = "申请次数(第几次申请)")
  41 + @TypeMismatch(message = "申请次数(第几次申请)格式有误!")
  42 + private Integer applicationCount;
  43 +
  44 + /**
  45 + * 延迟原因
  46 + */
  47 + @ApiModelProperty(value = "延迟原因")
  48 + @Length(message = "延迟原因最多允许200个字符!")
  49 + private String delayReason;
  50 +
  51 + /**
  52 + * 审核状态
  53 + */
  54 + @ApiModelProperty(value = "审核状态")
  55 + @Length(message = "审核状态最多允许50个字符!")
  56 + private String approvalStatus;
  57 +
  58 +}
... ...
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="com.lframework.xingyun.sc.mappers.SpecLockDelayApplicationMapper">
  4 +
  5 + <resultMap id="SpecLockDelayApplication" type="com.lframework.xingyun.sc.entity.SpecLockDelayApplication">
  6 + <id column="id" property="id"/>
  7 + <result column="contract_id" property="contractId"/>
  8 + <result column="spec_lock_date" property="specLockDate"/>
  9 + <result column="application_count" property="applicationCount"/>
  10 + <result column="delay_reason" property="delayReason"/>
  11 + <result column="approval_status" property="approvalStatus"/>
  12 + <result column="approver_id" property="approverId"/>
  13 + <result column="approved_at" property="approvedAt"/>
  14 + <result column="create_by_id" property="createById"/>
  15 + <result column="create_by" property="createBy"/>
  16 + <result column="update_by_id" property="updateById"/>
  17 + <result column="update_by" property="updateBy"/>
  18 + <result column="create_time" property="createTime"/>
  19 + <result column="update_time" property="updateTime"/>
  20 + </resultMap>
  21 +
  22 + <sql id="SpecLockDelayApplication_sql">
  23 + SELECT tb.id,
  24 + tb.contract_id,
  25 + tb.spec_lock_date,
  26 + tb.application_count,
  27 + tb.delay_reason,
  28 + tb.approval_status,
  29 + tb.approver_id,
  30 + tb.approved_at,
  31 + tb.create_by_id,
  32 + tb.create_by,
  33 + tb.update_by_id,
  34 + tb.update_by,
  35 + tb.create_time,
  36 + tb.update_time
  37 + FROM tbl_spec_lock_delay_application AS tb
  38 + </sql>
  39 +
  40 + <select id="query" resultMap="SpecLockDelayApplication">
  41 + <include refid="SpecLockDelayApplication_sql"/>
  42 + <where>
  43 + <if test="vo.contractId != null and vo.contractId != ''">
  44 + AND tb.contract_id = #{vo.contractId}
  45 + </if>
  46 + <if test="vo.approvalStatus != null and vo.approvalStatus != ''">
  47 + AND tb.approval_status = #{vo.approvalStatus}
  48 + </if>
  49 + <if test="vo.contractIdList != null and vo.contractIdList.size() > 0">
  50 + AND tb.contract_id IN
  51 + <foreach collection="vo.contractIdList" open="(" separator="," close=")" item="item">
  52 + #{item}
  53 + </foreach>
  54 + </if>
  55 + </where>
  56 + </select>
  57 +</mapper>
... ...