Showing
10 changed files
with
413 additions
and
50 deletions
| ... | ... | @@ -1474,12 +1474,10 @@ CREATE TABLE IF NOT EXISTS `tbl_contract_change_application` |
| 1474 | 1474 | `contract_code` varchar(50) NOT NULL COMMENT '合同编号', |
| 1475 | 1475 | `contract_type` varchar(50) NOT NULL COMMENT '合同类型', |
| 1476 | 1476 | `contract_stage` varchar(20) NOT NULL COMMENT '合同阶段(FORMAL:正式合同,STANDARD:标准合同)', |
| 1477 | - `change_reason` varchar(200) DEFAULT NULL COMMENT '变更原因', | |
| 1477 | + `change_reason` varchar(500) DEFAULT NULL COMMENT '变更原因', | |
| 1478 | 1478 | `before_data_json` longtext DEFAULT NULL COMMENT '变更前数据JSON', |
| 1479 | 1479 | `after_data_json` longtext DEFAULT NULL COMMENT '变更后数据JSON', |
| 1480 | 1480 | `approval_status` varchar(20) NOT NULL COMMENT '审核状态', |
| 1481 | - `approver_id` varchar(32) DEFAULT NULL COMMENT '审核人ID', | |
| 1482 | - `approved_at` datetime DEFAULT NULL COMMENT '审核时间', | |
| 1483 | 1481 | `create_by_id` varchar(32) DEFAULT NULL COMMENT '创建人ID', |
| 1484 | 1482 | `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', |
| 1485 | 1483 | `update_by_id` varchar(32) DEFAULT NULL COMMENT '更新人ID', | ... | ... |
| ... | ... | @@ -2,7 +2,6 @@ package com.lframework.xingyun.sc.bo.contract; |
| 2 | 2 | |
| 3 | 3 | import com.lframework.starter.web.core.bo.BaseBo; |
| 4 | 4 | import com.lframework.xingyun.sc.entity.ContractChangeApplication; |
| 5 | -import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo; | |
| 6 | 5 | import io.swagger.annotations.ApiModelProperty; |
| 7 | 6 | import lombok.Data; |
| 8 | 7 | |
| ... | ... | @@ -86,7 +85,7 @@ public class GetContractChangeApplicationBo extends BaseBo<ContractChangeApplica |
| 86 | 85 | * 变更后的合同数据 |
| 87 | 86 | */ |
| 88 | 87 | @ApiModelProperty("变更后的合同数据") |
| 89 | - private UpdateContractDistributorStandardVo contractData; | |
| 88 | + private GetContractDistributorStandardBo contractData; | |
| 90 | 89 | |
| 91 | 90 | public GetContractChangeApplicationBo() { |
| 92 | 91 | } | ... | ... |
xingyun-sc/src/main/java/com/lframework/xingyun/sc/bo/contract/QueryContractChangeApplicationBo.java
| ... | ... | @@ -5,6 +5,7 @@ import com.lframework.xingyun.sc.entity.ContractChangeApplication; |
| 5 | 5 | import io.swagger.annotations.ApiModelProperty; |
| 6 | 6 | import lombok.Data; |
| 7 | 7 | |
| 8 | +import java.math.BigDecimal; | |
| 8 | 9 | import java.time.LocalDateTime; |
| 9 | 10 | |
| 10 | 11 | /** |
| ... | ... | @@ -76,6 +77,48 @@ public class QueryContractChangeApplicationBo extends BaseBo<ContractChangeAppli |
| 76 | 77 | private String createBy; |
| 77 | 78 | |
| 78 | 79 | /** |
| 80 | + * 办事处编码 | |
| 81 | + */ | |
| 82 | + @ApiModelProperty("办事处编码") | |
| 83 | + private String deptCode; | |
| 84 | + | |
| 85 | + /** | |
| 86 | + * 办事处名称 | |
| 87 | + */ | |
| 88 | + @ApiModelProperty("办事处名称") | |
| 89 | + private String deptCodeName; | |
| 90 | + | |
| 91 | + /** | |
| 92 | + * 生产厂编码 | |
| 93 | + */ | |
| 94 | + @ApiModelProperty("生产厂编码") | |
| 95 | + private String workshopCode; | |
| 96 | + | |
| 97 | + /** | |
| 98 | + * 生产厂名称 | |
| 99 | + */ | |
| 100 | + @ApiModelProperty("生产厂名称") | |
| 101 | + private String workshopName; | |
| 102 | + | |
| 103 | + /** | |
| 104 | + * 变更后的需方名称 | |
| 105 | + */ | |
| 106 | + @ApiModelProperty("变更后的需方名称") | |
| 107 | + private String buyerName; | |
| 108 | + | |
| 109 | + /** | |
| 110 | + * 变更后的合计金额 | |
| 111 | + */ | |
| 112 | + @ApiModelProperty("变更后的合计金额") | |
| 113 | + private BigDecimal totalAmountIncludingTax; | |
| 114 | + | |
| 115 | + /** | |
| 116 | + * 变更后的合计数量 | |
| 117 | + */ | |
| 118 | + @ApiModelProperty("变更后的合计数量") | |
| 119 | + private BigDecimal totalQuantity; | |
| 120 | + | |
| 121 | + /** | |
| 79 | 122 | * 创建时间 |
| 80 | 123 | */ |
| 81 | 124 | @ApiModelProperty("创建时间") | ... | ... |
| 1 | 1 | package com.lframework.xingyun.sc.controller.contract; |
| 2 | 2 | |
| 3 | 3 | import com.lframework.starter.common.exceptions.impl.DefaultClientException; |
| 4 | +import com.lframework.starter.web.core.annotations.security.HasPermission; | |
| 4 | 5 | import com.lframework.starter.web.core.components.resp.InvokeResult; |
| 5 | 6 | import com.lframework.starter.web.core.components.resp.InvokeResultBuilder; |
| 6 | 7 | import com.lframework.starter.web.core.components.resp.PageResult; |
| 7 | 8 | import com.lframework.starter.web.core.controller.DefaultBaseController; |
| 8 | 9 | import com.lframework.starter.web.core.utils.JsonUtil; |
| 9 | 10 | import com.lframework.starter.web.core.utils.PageResultUtil; |
| 11 | +import com.lframework.starter.web.inner.dto.dic.city.DicCityDto; | |
| 12 | +import com.lframework.starter.web.inner.entity.SysDataDicItem; | |
| 13 | +import com.lframework.starter.web.inner.service.DicCityService; | |
| 14 | +import com.lframework.starter.web.inner.service.system.SysDataDicItemService; | |
| 10 | 15 | import com.lframework.starter.web.inner.entity.SysDept; |
| 11 | 16 | import com.lframework.starter.web.inner.service.system.SysDeptService; |
| 12 | 17 | import com.lframework.xingyun.basedata.entity.Customer; |
| ... | ... | @@ -14,6 +19,7 @@ import com.lframework.xingyun.basedata.entity.Workshop; |
| 14 | 19 | import com.lframework.xingyun.basedata.service.customer.CustomerService; |
| 15 | 20 | import com.lframework.xingyun.basedata.service.workshop.WorkshopService; |
| 16 | 21 | import com.lframework.xingyun.sc.bo.contract.GetContractChangeApplicationBo; |
| 22 | +import com.lframework.xingyun.sc.bo.contract.GetContractDistributorStandardBo; | |
| 17 | 23 | import com.lframework.xingyun.sc.bo.contract.QueryContractChangeApplicationBo; |
| 18 | 24 | import com.lframework.xingyun.sc.bo.contract.QueryContractDistributorStandardBo; |
| 19 | 25 | import com.lframework.xingyun.sc.entity.ContractChangeApplication; |
| ... | ... | @@ -23,15 +29,14 @@ import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractChangeApplic |
| 23 | 29 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeApplicationVo; |
| 24 | 30 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeSelectableContractVo; |
| 25 | 31 | import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractChangeApplicationVo; |
| 26 | -import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo; | |
| 27 | 32 | import io.swagger.annotations.Api; |
| 28 | 33 | import io.swagger.annotations.ApiImplicitParam; |
| 29 | 34 | import io.swagger.annotations.ApiOperation; |
| 30 | 35 | import org.apache.commons.collections4.CollectionUtils; |
| 36 | +import org.apache.commons.lang3.StringUtils; | |
| 31 | 37 | import org.springframework.beans.factory.annotation.Autowired; |
| 32 | 38 | import org.springframework.validation.annotation.Validated; |
| 33 | 39 | import org.springframework.web.bind.annotation.*; |
| 34 | - | |
| 35 | 40 | import javax.validation.Valid; |
| 36 | 41 | import javax.validation.constraints.NotBlank; |
| 37 | 42 | import java.util.Map; |
| ... | ... | @@ -56,11 +61,16 @@ public class ContractChangeApplicationController extends DefaultBaseController { |
| 56 | 61 | private SysDeptService sysDeptService; |
| 57 | 62 | @Autowired |
| 58 | 63 | private WorkshopService workshopService; |
| 64 | + @Autowired | |
| 65 | + private SysDataDicItemService sysDataDicItemService; | |
| 66 | + @Autowired | |
| 67 | + private DicCityService dicCityService; | |
| 59 | 68 | |
| 60 | 69 | /** |
| 61 | 70 | * 查询列表 |
| 62 | 71 | */ |
| 63 | 72 | @ApiOperation("查询列表") |
| 73 | + @HasPermission({"contract-manage:change-contract:query"}) | |
| 64 | 74 | @GetMapping("/query") |
| 65 | 75 | public InvokeResult<PageResult<QueryContractChangeApplicationBo>> query(QueryContractChangeApplicationVo vo) { |
| 66 | 76 | PageResult<ContractChangeApplication> pageResult = contractChangeApplicationService.query(getPageIndex(vo), getPageSize(vo), vo); |
| ... | ... | @@ -76,6 +86,7 @@ public class ContractChangeApplicationController extends DefaultBaseController { |
| 76 | 86 | */ |
| 77 | 87 | @ApiOperation("根据ID查询") |
| 78 | 88 | @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true) |
| 89 | + @HasPermission({"contract-manage:change-contract:query","contract-manage:change-contract:review"}) | |
| 79 | 90 | @GetMapping |
| 80 | 91 | public InvokeResult<GetContractChangeApplicationBo> get(@NotBlank(message = "id不能为空!") String id) { |
| 81 | 92 | ContractChangeApplication data = contractChangeApplicationService.findById(id); |
| ... | ... | @@ -84,8 +95,10 @@ public class ContractChangeApplicationController extends DefaultBaseController { |
| 84 | 95 | } |
| 85 | 96 | |
| 86 | 97 | GetContractChangeApplicationBo result = new GetContractChangeApplicationBo(data); |
| 87 | - if (org.apache.commons.lang3.StringUtils.isNotBlank(data.getAfterDataJson())) { | |
| 88 | - result.setContractData(JsonUtil.parseObject(data.getAfterDataJson(), UpdateContractDistributorStandardVo.class)); | |
| 98 | + if (StringUtils.isNotBlank(data.getAfterDataJson())) { | |
| 99 | + GetContractDistributorStandardBo contractData = JsonUtil.parseObject(data.getAfterDataJson(), GetContractDistributorStandardBo.class); | |
| 100 | + fillContractDataDisplayInfo(contractData); | |
| 101 | + result.setContractData(contractData); | |
| 89 | 102 | } |
| 90 | 103 | return InvokeResultBuilder.success(result); |
| 91 | 104 | } |
| ... | ... | @@ -94,6 +107,15 @@ public class ContractChangeApplicationController extends DefaultBaseController { |
| 94 | 107 | * 查询可发起变更的合同 |
| 95 | 108 | */ |
| 96 | 109 | @ApiOperation("查询可发起变更的合同") |
| 110 | + @HasPermission({ | |
| 111 | + "contract-manage:distribution-standard-contract:query", | |
| 112 | + "contract-manage:distribution-inventory-contract:query", | |
| 113 | + "contract-manage:distribution-unlocked-contract:query", | |
| 114 | + "contract-manage:foreign-trade-standard-contract:query", | |
| 115 | + "contract-manage:foreign-trade-inventory-contract:query", | |
| 116 | + "contract-manage:foreign-trade-unlocked-contract:query", | |
| 117 | + "contract-manage:processed-standard-contract:query" | |
| 118 | + }) | |
| 97 | 119 | @GetMapping("/querySelectableContracts") |
| 98 | 120 | public InvokeResult<PageResult<QueryContractDistributorStandardBo>> querySelectableContracts(QueryContractChangeSelectableContractVo vo) { |
| 99 | 121 | PageResult<ContractDistributorStandard> pageResult = contractChangeApplicationService |
| ... | ... | @@ -138,6 +160,7 @@ public class ContractChangeApplicationController extends DefaultBaseController { |
| 138 | 160 | * 新增 |
| 139 | 161 | */ |
| 140 | 162 | @ApiOperation("新增") |
| 163 | + @HasPermission({"contract-manage:change-contract:add"}) | |
| 141 | 164 | @PostMapping |
| 142 | 165 | public InvokeResult<Void> create(@Valid @RequestBody CreateContractChangeApplicationVo vo) throws Exception { |
| 143 | 166 | contractChangeApplicationService.create(vo); |
| ... | ... | @@ -148,6 +171,7 @@ public class ContractChangeApplicationController extends DefaultBaseController { |
| 148 | 171 | * 修改 |
| 149 | 172 | */ |
| 150 | 173 | @ApiOperation("修改") |
| 174 | + @HasPermission({"contract-manage:change-contract:modify","contract-manage:change-contract:approve"}) | |
| 151 | 175 | @PutMapping |
| 152 | 176 | public InvokeResult<Void> update(@Valid @RequestBody UpdateContractChangeApplicationVo vo) throws Exception { |
| 153 | 177 | contractChangeApplicationService.update(vo); |
| ... | ... | @@ -159,9 +183,108 @@ public class ContractChangeApplicationController extends DefaultBaseController { |
| 159 | 183 | */ |
| 160 | 184 | @ApiOperation("取消") |
| 161 | 185 | @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true) |
| 162 | - @DeleteMapping | |
| 186 | + @HasPermission({"contract-manage:change-contract:cancel"}) | |
| 187 | + @PostMapping("/cancel") | |
| 163 | 188 | public InvokeResult<Void> cancel(@NotBlank(message = "id不能为空!") String id) { |
| 164 | 189 | contractChangeApplicationService.cancelApplication(id); |
| 165 | 190 | return InvokeResultBuilder.success(); |
| 166 | 191 | } |
| 192 | + | |
| 193 | + /** | |
| 194 | + * 填充变更后合同数据的展示字段 | |
| 195 | + * | |
| 196 | + * @param contractData 合同数据 | |
| 197 | + */ | |
| 198 | + private void fillContractDataDisplayInfo(GetContractDistributorStandardBo contractData) { | |
| 199 | + if (contractData == null) { | |
| 200 | + return; | |
| 201 | + } | |
| 202 | + | |
| 203 | + if (StringUtils.isNotBlank(contractData.getBuyer())) { | |
| 204 | + Customer customer = customerService.findById(contractData.getBuyer()); | |
| 205 | + contractData.setBuyerName(customer == null ? null : customer.getName()); | |
| 206 | + } | |
| 207 | + if (StringUtils.isNotBlank(contractData.getStockUpCompanyId())) { | |
| 208 | + Customer customer = customerService.findById(contractData.getStockUpCompanyId()); | |
| 209 | + contractData.setStockUpCompanyName(customer == null ? null : customer.getName()); | |
| 210 | + } | |
| 211 | + if (StringUtils.isNotBlank(contractData.getDeptId())) { | |
| 212 | + SysDept dept = sysDeptService.findById(contractData.getDeptId()); | |
| 213 | + contractData.setDeptName(dept == null ? null : dept.getName()); | |
| 214 | + } | |
| 215 | + if (StringUtils.isNotBlank(contractData.getRegion())) { | |
| 216 | + SysDept dept = sysDeptService.findById(contractData.getRegion()); | |
| 217 | + contractData.setRegionName(dept == null ? null : dept.getName()); | |
| 218 | + } | |
| 219 | + if (StringUtils.isNotBlank(contractData.getWorkshopId())) { | |
| 220 | + Workshop workshop = workshopService.findById(contractData.getWorkshopId()); | |
| 221 | + contractData.setWorkshopName(workshop == null ? null : workshop.getName()); | |
| 222 | + } | |
| 223 | + | |
| 224 | + SysDataDicItem supplierDicItem = sysDataDicItemService.findByCode(ContractDistributorStandardController.SUPPLIER_DIC_CODE, | |
| 225 | + contractData.getSupplier()); | |
| 226 | + contractData.setSupplierName(supplierDicItem == null ? null : supplierDicItem.getName()); | |
| 227 | + SysDataDicItem unitDicItem = sysDataDicItemService.findByCode(ContractDistributorStandardController.UNIT_DIC_CODE, | |
| 228 | + contractData.getUnit()); | |
| 229 | + contractData.setUnitName(unitDicItem == null ? null : unitDicItem.getName()); | |
| 230 | + SysDataDicItem requiredDicItem = sysDataDicItemService.findByCode(ContractDistributorStandardController.CONDITIONS_REQUIRED_DIC_CODE, | |
| 231 | + contractData.getSpecialTerms()); | |
| 232 | + contractData.setSpecialTermsName(requiredDicItem == null ? null : requiredDicItem.getName()); | |
| 233 | + SysDataDicItem standardDicItem = sysDataDicItemService.findByCode(ContractDistributorStandardController.APPLICABLE_STANDARD_DIC_CODE, | |
| 234 | + contractData.getExecutionStandard()); | |
| 235 | + contractData.setExecutionStandardName(standardDicItem == null ? null : standardDicItem.getName()); | |
| 236 | + | |
| 237 | + List<DicCityDto> dicCityDtoList = dicCityService.getChainById(contractData.getDestination()); | |
| 238 | + if (CollectionUtils.isNotEmpty(dicCityDtoList) && dicCityDtoList.size() == 3) { | |
| 239 | + contractData.setProvinceId(dicCityDtoList.get(0).getId()); | |
| 240 | + contractData.setProvinceName(dicCityDtoList.get(0).getName()); | |
| 241 | + contractData.setCityId(dicCityDtoList.get(1).getId()); | |
| 242 | + contractData.setCityName(dicCityDtoList.get(1).getName()); | |
| 243 | + contractData.setDistrictId(dicCityDtoList.get(2).getId()); | |
| 244 | + contractData.setDistrictName(dicCityDtoList.get(2).getName()); | |
| 245 | + } | |
| 246 | + | |
| 247 | + fillContractLineDisplayInfo(contractData); | |
| 248 | + } | |
| 249 | + | |
| 250 | + /** | |
| 251 | + * 填充变更后合同物料行展示字段 | |
| 252 | + * | |
| 253 | + * @param contractData 合同数据 | |
| 254 | + */ | |
| 255 | + private void fillContractLineDisplayInfo(GetContractDistributorStandardBo contractData) { | |
| 256 | + if (contractData == null) { | |
| 257 | + return; | |
| 258 | + } | |
| 259 | + | |
| 260 | + Map<String, String> productCodeAndNameMap = sysDataDicItemService.findByDicCode(ContractDistributorStandardController.CONTRACT_PRODUCT_DIC_CODE) | |
| 261 | + .stream() | |
| 262 | + .collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName)); | |
| 263 | + | |
| 264 | + if (CollectionUtils.isNotEmpty(contractData.getContractDistributorLineList())) { | |
| 265 | + contractData.getContractDistributorLineList().forEach(line -> line.setProductName(productCodeAndNameMap.get(line.getProductId()))); | |
| 266 | + } | |
| 267 | + | |
| 268 | + if (CollectionUtils.isNotEmpty(contractData.getContractStdProcessingLineList())) { | |
| 269 | + Map<String, String> rawToProdRatioCodeAndNameMap = sysDataDicItemService | |
| 270 | + .findByDicCode(ContractDistributorStandardController.RAW_TO_PROD_RATIO_DIC_CODE) | |
| 271 | + .stream() | |
| 272 | + .collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName)); | |
| 273 | + Map<String, String> rawMaterialCodeAndNameMap = sysDataDicItemService | |
| 274 | + .findByDicCode(ContractDistributorStandardController.RAW_MATERIAL) | |
| 275 | + .stream() | |
| 276 | + .collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName)); | |
| 277 | + Map<String, String> rawProductGradeCodeAndNameMap = sysDataDicItemService | |
| 278 | + .findByDicCode(ContractDistributorStandardController.RAW_MATERIAL_GRADE) | |
| 279 | + .stream() | |
| 280 | + .collect(Collectors.toMap(SysDataDicItem::getCode, SysDataDicItem::getName)); | |
| 281 | + | |
| 282 | + contractData.getContractStdProcessingLineList().forEach(line -> { | |
| 283 | + line.setRawProductName(rawMaterialCodeAndNameMap.get(line.getRawProductId())); | |
| 284 | + line.setRawProductGradeName(rawProductGradeCodeAndNameMap.get(line.getRawProductGrade())); | |
| 285 | + line.setMaterialProductRatioName(rawToProdRatioCodeAndNameMap.get(line.getMaterialProductRatio())); | |
| 286 | + line.setProductName(productCodeAndNameMap.get(line.getProductId())); | |
| 287 | + }); | |
| 288 | + } | |
| 289 | + } | |
| 167 | 290 | } | ... | ... |
| ... | ... | @@ -7,6 +7,7 @@ import com.lframework.starter.web.core.dto.BaseDto; |
| 7 | 7 | import com.lframework.starter.web.core.entity.BaseEntity; |
| 8 | 8 | import lombok.Data; |
| 9 | 9 | |
| 10 | +import java.math.BigDecimal; | |
| 10 | 11 | import java.time.LocalDateTime; |
| 11 | 12 | |
| 12 | 13 | /** |
| ... | ... | @@ -73,26 +74,46 @@ public class ContractChangeApplication extends BaseEntity implements BaseDto { |
| 73 | 74 | private String approvalStatus; |
| 74 | 75 | |
| 75 | 76 | /** |
| 76 | - * 审核人ID | |
| 77 | + * 办事处编码(非持久化字段) | |
| 77 | 78 | */ |
| 78 | - private String approverId; | |
| 79 | + @TableField(exist = false) | |
| 80 | + private String deptCode; | |
| 79 | 81 | |
| 80 | 82 | /** |
| 81 | - * 审核时间 | |
| 83 | + * 办事处名称(非持久化字段) | |
| 82 | 84 | */ |
| 83 | - private LocalDateTime approvedAt; | |
| 85 | + @TableField(exist = false) | |
| 86 | + private String deptCodeName; | |
| 84 | 87 | |
| 85 | 88 | /** |
| 86 | - * 办事处编码(非持久化字段) | |
| 89 | + * 生产厂编码(非持久化字段) | |
| 87 | 90 | */ |
| 88 | 91 | @TableField(exist = false) |
| 89 | - private String deptCode; | |
| 92 | + private String workshopCode; | |
| 90 | 93 | |
| 91 | 94 | /** |
| 92 | - * 生产厂编码(非持久化字段) | |
| 95 | + * 生产厂名称(非持久化字段) | |
| 93 | 96 | */ |
| 94 | 97 | @TableField(exist = false) |
| 95 | - private String workshopCode; | |
| 98 | + private String workshopName; | |
| 99 | + | |
| 100 | + /** | |
| 101 | + * 变更后的需方名称(非持久化字段) | |
| 102 | + */ | |
| 103 | + @TableField(exist = false) | |
| 104 | + private String buyerName; | |
| 105 | + | |
| 106 | + /** | |
| 107 | + * 变更后的合计金额(非持久化字段) | |
| 108 | + */ | |
| 109 | + @TableField(exist = false) | |
| 110 | + private BigDecimal totalAmountIncludingTax; | |
| 111 | + | |
| 112 | + /** | |
| 113 | + * 变更后的合计数量(非持久化字段) | |
| 114 | + */ | |
| 115 | + @TableField(exist = false) | |
| 116 | + private BigDecimal totalQuantity; | |
| 96 | 117 | |
| 97 | 118 | /** |
| 98 | 119 | * 是否展示审核按钮(非持久化字段) | ... | ... |
| ... | ... | @@ -291,7 +291,7 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic |
| 291 | 291 | || FlowInstanceStatus.TERMINATION.getCode().equals(flowStatus)) { |
| 292 | 292 | contractChangeApplicationService.updateAuditStatus(businessId, "REFUSE"); |
| 293 | 293 | } else if (FlowInstanceStatus.UNDO.getCode().equals(flowStatus)) { |
| 294 | - contractChangeApplicationService.updateAuditStatus(businessId, "CANCEL"); | |
| 294 | + contractChangeApplicationService.updateAuditStatus(businessId, "REFUSE"); | |
| 295 | 295 | } |
| 296 | 296 | } |
| 297 | 297 | ... | ... |
| 1 | 1 | package com.lframework.xingyun.sc.impl.contract; |
| 2 | 2 | |
| 3 | -import cn.hutool.core.bean.BeanUtil; | |
| 4 | 3 | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| 5 | 4 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| 6 | 5 | import com.github.pagehelper.PageInfo; |
| ... | ... | @@ -23,6 +22,9 @@ import com.lframework.starter.web.core.utils.PageResultUtil; |
| 23 | 22 | import com.lframework.starter.web.inner.components.oplog.OtherOpLogType; |
| 24 | 23 | import com.lframework.starter.web.inner.entity.SysDept; |
| 25 | 24 | import com.lframework.starter.web.inner.service.system.SysDeptService; |
| 25 | +import com.lframework.xingyun.basedata.entity.Customer; | |
| 26 | +import com.lframework.xingyun.basedata.service.customer.CustomerService; | |
| 27 | +import com.lframework.xingyun.basedata.vo.customer.QueryCustomerVo; | |
| 26 | 28 | import com.lframework.xingyun.basedata.entity.Workshop; |
| 27 | 29 | import com.lframework.xingyun.basedata.service.workshop.WorkshopService; |
| 28 | 30 | import com.lframework.xingyun.sc.entity.ContractChangeApplication; |
| ... | ... | @@ -38,8 +40,6 @@ import com.lframework.xingyun.sc.service.contract.ContractChangeApplicationServi |
| 38 | 40 | import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService; |
| 39 | 41 | import com.lframework.xingyun.sc.service.contract.ContractStdProcessingLineService; |
| 40 | 42 | import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractChangeApplicationVo; |
| 41 | -import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractDistributorLineVo; | |
| 42 | -import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractStdProcessingLineVo; | |
| 43 | 43 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeApplicationVo; |
| 44 | 44 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeSelectableContractVo; |
| 45 | 45 | import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractChangeApplicationVo; |
| ... | ... | @@ -59,8 +59,11 @@ import java.io.Serializable; |
| 59 | 59 | import java.time.LocalDateTime; |
| 60 | 60 | import java.util.ArrayList; |
| 61 | 61 | import java.util.Arrays; |
| 62 | +import java.util.Collections; | |
| 62 | 63 | import java.util.List; |
| 64 | +import java.util.Map; | |
| 63 | 65 | import java.util.Set; |
| 66 | +import java.util.function.Function; | |
| 64 | 67 | import java.util.stream.Collectors; |
| 65 | 68 | |
| 66 | 69 | /** |
| ... | ... | @@ -89,20 +92,62 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont |
| 89 | 92 | private WorkshopService workshopService; |
| 90 | 93 | @Resource |
| 91 | 94 | private SysDeptService sysDeptService; |
| 95 | + @Resource | |
| 96 | + private CustomerService customerService; | |
| 92 | 97 | |
| 93 | 98 | @Override |
| 94 | 99 | public PageResult<ContractChangeApplication> query(Integer pageIndex, Integer pageSize, QueryContractChangeApplicationVo vo) { |
| 95 | 100 | Assert.greaterThanZero(pageIndex); |
| 96 | 101 | Assert.greaterThanZero(pageSize); |
| 97 | 102 | |
| 103 | + List<String> buyerIds = null; | |
| 104 | + List<String> contractIdsByBuyer = null; | |
| 105 | + if (StringUtils.isNotBlank(vo.getBuyerName())) { | |
| 106 | + QueryCustomerVo queryCustomerVo = new QueryCustomerVo(); | |
| 107 | + queryCustomerVo.setName(vo.getBuyerName()); | |
| 108 | + List<Customer> customerList = customerService.query(queryCustomerVo); | |
| 109 | + if (CollectionUtils.isEmpty(customerList)) { | |
| 110 | + return PageResultUtil.convert(new PageInfo<>(Collections.emptyList())); | |
| 111 | + } | |
| 112 | + | |
| 113 | + buyerIds = customerList.stream().map(Customer::getId).distinct().collect(Collectors.toList()); | |
| 114 | + Wrapper<ContractDistributorStandard> contractWrapper = Wrappers.lambdaQuery(ContractDistributorStandard.class) | |
| 115 | + .select(ContractDistributorStandard::getId) | |
| 116 | + .in(ContractDistributorStandard::getBuyer, buyerIds); | |
| 117 | + contractIdsByBuyer = CollectionUtils.emptyIfNull(contractDistributorStandardMapper.selectList(contractWrapper)) | |
| 118 | + .stream() | |
| 119 | + .map(ContractDistributorStandard::getId) | |
| 120 | + .distinct() | |
| 121 | + .collect(Collectors.toList()); | |
| 122 | + } | |
| 123 | + | |
| 98 | 124 | PageHelperUtil.startPage(pageIndex, pageSize); |
| 99 | - Wrapper<ContractChangeApplication> wrapper = Wrappers.lambdaQuery(ContractChangeApplication.class) | |
| 125 | + com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<ContractChangeApplication> wrapper = | |
| 126 | + Wrappers.lambdaQuery(ContractChangeApplication.class) | |
| 100 | 127 | .like(StringUtils.isNotBlank(vo.getContractCode()), ContractChangeApplication::getContractCode, vo.getContractCode()) |
| 101 | 128 | .eq(StringUtils.isNotBlank(vo.getContractType()), ContractChangeApplication::getContractType, vo.getContractType()) |
| 102 | - .eq(StringUtils.isNotBlank(vo.getContractStage()), ContractChangeApplication::getContractStage, vo.getContractStage()) | |
| 103 | - .eq(StringUtils.isNotBlank(vo.getApprovalStatus()), ContractChangeApplication::getApprovalStatus, vo.getApprovalStatus()) | |
| 104 | - .orderByDesc(ContractChangeApplication::getCreateTime); | |
| 129 | + .eq(StringUtils.isNotBlank(vo.getApprovalStatus()), ContractChangeApplication::getApprovalStatus, vo.getApprovalStatus()); | |
| 130 | + if (CollectionUtils.isNotEmpty(buyerIds)) { | |
| 131 | + List<String> finalBuyerIds = buyerIds; | |
| 132 | + List<String> finalContractIdsByBuyer = contractIdsByBuyer; | |
| 133 | + wrapper.and(q -> { | |
| 134 | + boolean hasCondition = false; | |
| 135 | + if (CollectionUtils.isNotEmpty(finalContractIdsByBuyer)) { | |
| 136 | + q.in(ContractChangeApplication::getContractId, finalContractIdsByBuyer); | |
| 137 | + hasCondition = true; | |
| 138 | + } | |
| 139 | + for (String buyerId : finalBuyerIds) { | |
| 140 | + if (hasCondition) { | |
| 141 | + q.or(); | |
| 142 | + } | |
| 143 | + q.like(ContractChangeApplication::getAfterDataJson, "\"buyer\":\"" + buyerId + "\""); | |
| 144 | + hasCondition = true; | |
| 145 | + } | |
| 146 | + }); | |
| 147 | + } | |
| 148 | + wrapper.orderByDesc(ContractChangeApplication::getCreateTime); | |
| 105 | 149 | List<ContractChangeApplication> datas = list(wrapper); |
| 150 | + fillDisplayInfo(datas); | |
| 106 | 151 | fillShowExamine(datas); |
| 107 | 152 | return PageResultUtil.convert(new PageInfo<>(datas)); |
| 108 | 153 | } |
| ... | ... | @@ -113,6 +158,7 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont |
| 113 | 158 | if (data == null) { |
| 114 | 159 | return null; |
| 115 | 160 | } |
| 161 | + fillDisplayInfo(Collections.singletonList(data)); | |
| 116 | 162 | fillShowExamine(Arrays.asList(data)); |
| 117 | 163 | return data; |
| 118 | 164 | } |
| ... | ... | @@ -201,8 +247,6 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont |
| 201 | 247 | |
| 202 | 248 | Wrapper<ContractChangeApplication> wrapper = Wrappers.lambdaUpdate(ContractChangeApplication.class) |
| 203 | 249 | .set(ContractChangeApplication::getApprovalStatus, CustomerDevelopStatus.CANCEL.name()) |
| 204 | - .set(ContractChangeApplication::getApprovedAt, LocalDateTime.now()) | |
| 205 | - .set(ContractChangeApplication::getApproverId, SecurityUtil.getCurrentUser().getId()) | |
| 206 | 250 | .eq(ContractChangeApplication::getId, id); |
| 207 | 251 | update(wrapper); |
| 208 | 252 | |
| ... | ... | @@ -224,8 +268,6 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont |
| 224 | 268 | |
| 225 | 269 | Wrapper<ContractChangeApplication> wrapper = Wrappers.lambdaUpdate(ContractChangeApplication.class) |
| 226 | 270 | .set(ContractChangeApplication::getApprovalStatus, approvalStatus) |
| 227 | - .set(ContractChangeApplication::getApprovedAt, LocalDateTime.now()) | |
| 228 | - .set(ContractChangeApplication::getApproverId, SecurityUtil.getCurrentUser().getId()) | |
| 229 | 271 | .eq(ContractChangeApplication::getId, id); |
| 230 | 272 | update(wrapper); |
| 231 | 273 | |
| ... | ... | @@ -289,6 +331,125 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont |
| 289 | 331 | } |
| 290 | 332 | |
| 291 | 333 | /** |
| 334 | + * 填充列表展示信息 | |
| 335 | + * | |
| 336 | + * @param datas 申请单列表 | |
| 337 | + */ | |
| 338 | + private void fillDisplayInfo(List<ContractChangeApplication> datas) { | |
| 339 | + if (CollectionUtils.isEmpty(datas)) { | |
| 340 | + return; | |
| 341 | + } | |
| 342 | + | |
| 343 | + Map<String, UpdateContractDistributorStandardVo> afterDataMap = datas.stream() | |
| 344 | + .filter(item -> StringUtils.isNotBlank(item.getAfterDataJson())) | |
| 345 | + .collect(Collectors.toMap(ContractChangeApplication::getId, | |
| 346 | + item -> JsonUtil.parseObject(item.getAfterDataJson(), UpdateContractDistributorStandardVo.class))); | |
| 347 | + | |
| 348 | + List<String> contractIds = datas.stream() | |
| 349 | + .filter(item -> !afterDataMap.containsKey(item.getId())) | |
| 350 | + .map(ContractChangeApplication::getContractId) | |
| 351 | + .filter(StringUtils::isNotBlank) | |
| 352 | + .distinct() | |
| 353 | + .collect(Collectors.toList()); | |
| 354 | + final Map<String, ContractDistributorStandard> contractMap; | |
| 355 | + if (CollectionUtils.isNotEmpty(contractIds)) { | |
| 356 | + Wrapper<ContractDistributorStandard> contractWrapper = Wrappers.lambdaQuery(ContractDistributorStandard.class) | |
| 357 | + .select(ContractDistributorStandard::getId, ContractDistributorStandard::getDeptId, | |
| 358 | + ContractDistributorStandard::getWorkshopId, ContractDistributorStandard::getBuyer, | |
| 359 | + ContractDistributorStandard::getTotalAmountIncludingTax, ContractDistributorStandard::getTotalQuantity) | |
| 360 | + .in(ContractDistributorStandard::getId, contractIds); | |
| 361 | + contractMap = CollectionUtils.emptyIfNull(contractDistributorStandardMapper.selectList(contractWrapper)) | |
| 362 | + .stream() | |
| 363 | + .collect(Collectors.toMap(ContractDistributorStandard::getId, Function.identity())); | |
| 364 | + } else { | |
| 365 | + contractMap = Collections.emptyMap(); | |
| 366 | + } | |
| 367 | + | |
| 368 | + List<String> deptIds = new ArrayList<>(); | |
| 369 | + List<String> workshopIds = new ArrayList<>(); | |
| 370 | + List<String> customerIds = new ArrayList<>(); | |
| 371 | + datas.forEach(item -> { | |
| 372 | + UpdateContractDistributorStandardVo afterData = afterDataMap.get(item.getId()); | |
| 373 | + if (afterData != null) { | |
| 374 | + if (StringUtils.isNotBlank(afterData.getDeptId())) { | |
| 375 | + deptIds.add(afterData.getDeptId()); | |
| 376 | + } | |
| 377 | + if (StringUtils.isNotBlank(afterData.getWorkshopId())) { | |
| 378 | + workshopIds.add(afterData.getWorkshopId()); | |
| 379 | + } | |
| 380 | + if (StringUtils.isNotBlank(afterData.getBuyer())) { | |
| 381 | + customerIds.add(afterData.getBuyer()); | |
| 382 | + } | |
| 383 | + return; | |
| 384 | + } | |
| 385 | + | |
| 386 | + ContractDistributorStandard contract = contractMap.get(item.getContractId()); | |
| 387 | + if (contract != null) { | |
| 388 | + if (StringUtils.isNotBlank(contract.getDeptId())) { | |
| 389 | + deptIds.add(contract.getDeptId()); | |
| 390 | + } | |
| 391 | + if (StringUtils.isNotBlank(contract.getWorkshopId())) { | |
| 392 | + workshopIds.add(contract.getWorkshopId()); | |
| 393 | + } | |
| 394 | + if (StringUtils.isNotBlank(contract.getBuyer())) { | |
| 395 | + customerIds.add(contract.getBuyer()); | |
| 396 | + } | |
| 397 | + } | |
| 398 | + }); | |
| 399 | + | |
| 400 | + Map<String, SysDept> deptMap = CollectionUtils.emptyIfNull(sysDeptService.listByIds(deptIds.stream().distinct().collect(Collectors.toList()))) | |
| 401 | + .stream() | |
| 402 | + .collect(Collectors.toMap(SysDept::getId, Function.identity())); | |
| 403 | + Map<String, Workshop> workshopMap = CollectionUtils.emptyIfNull(workshopService.listByIds(workshopIds.stream().distinct().collect(Collectors.toList()))) | |
| 404 | + .stream() | |
| 405 | + .collect(Collectors.toMap(Workshop::getId, Function.identity())); | |
| 406 | + Map<String, Customer> customerMap = CollectionUtils.emptyIfNull(customerService.listByIds(customerIds.stream().distinct().collect(Collectors.toList()))) | |
| 407 | + .stream() | |
| 408 | + .collect(Collectors.toMap(Customer::getId, Function.identity())); | |
| 409 | + | |
| 410 | + datas.forEach(item -> { | |
| 411 | + String deptId = null; | |
| 412 | + String workshopId = null; | |
| 413 | + String buyerId = null; | |
| 414 | + | |
| 415 | + UpdateContractDistributorStandardVo afterData = afterDataMap.get(item.getId()); | |
| 416 | + if (afterData != null) { | |
| 417 | + deptId = afterData.getDeptId(); | |
| 418 | + workshopId = afterData.getWorkshopId(); | |
| 419 | + buyerId = afterData.getBuyer(); | |
| 420 | + item.setTotalAmountIncludingTax(afterData.getTotalAmountIncludingTax()); | |
| 421 | + item.setTotalQuantity(afterData.getTotalQuantity()); | |
| 422 | + } else { | |
| 423 | + ContractDistributorStandard contract = contractMap.get(item.getContractId()); | |
| 424 | + if (contract != null) { | |
| 425 | + deptId = contract.getDeptId(); | |
| 426 | + workshopId = contract.getWorkshopId(); | |
| 427 | + buyerId = contract.getBuyer(); | |
| 428 | + item.setTotalAmountIncludingTax(contract.getTotalAmountIncludingTax()); | |
| 429 | + item.setTotalQuantity(contract.getTotalQuantity()); | |
| 430 | + } | |
| 431 | + } | |
| 432 | + | |
| 433 | + SysDept dept = deptMap.get(deptId); | |
| 434 | + if (dept != null) { | |
| 435 | + item.setDeptCode(dept.getCode()); | |
| 436 | + item.setDeptCodeName(dept.getName()); | |
| 437 | + } | |
| 438 | + | |
| 439 | + Workshop workshop = workshopMap.get(workshopId); | |
| 440 | + if (workshop != null) { | |
| 441 | + item.setWorkshopCode(workshop.getCode()); | |
| 442 | + item.setWorkshopName(workshop.getName()); | |
| 443 | + } | |
| 444 | + | |
| 445 | + Customer customer = customerMap.get(buyerId); | |
| 446 | + if (customer != null) { | |
| 447 | + item.setBuyerName(customer.getName()); | |
| 448 | + } | |
| 449 | + }); | |
| 450 | + } | |
| 451 | + | |
| 452 | + /** | |
| 292 | 453 | * 获取合同,不存在则抛异常 |
| 293 | 454 | * |
| 294 | 455 | * @param contractId 合同ID |
| ... | ... | @@ -526,6 +687,12 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont |
| 526 | 687 | .set(ContractDistributorStandard::getDesignatedConsignee, vo.getDesignatedConsignee()) |
| 527 | 688 | .set(ContractDistributorStandard::getSpecialInstructions, vo.getSpecialInstructions()) |
| 528 | 689 | .set(ContractDistributorStandard::getRemarks, vo.getRemarks()) |
| 690 | + .set(ContractDistributorStandard::getFormalFileId, vo.getFormalFileId()) | |
| 691 | + .set(ContractDistributorStandard::getFormalFileName, vo.getFormalFileName()) | |
| 692 | + .set(ContractDistributorStandard::getFormalStandardized, vo.getFormalStandardized()) | |
| 693 | + .set(ContractDistributorStandard::getStandardFileId, vo.getStandardFileId()) | |
| 694 | + .set(ContractDistributorStandard::getStandardFileName, vo.getStandardFileName()) | |
| 695 | + .set(ContractDistributorStandard::getStandardStandardized, vo.getStandardStandardized()) | |
| 529 | 696 | .set(ContractDistributorStandard::getTotalQuantity, vo.getTotalQuantity()) |
| 530 | 697 | .set(ContractDistributorStandard::getTotalAmountExcludingTax, vo.getTotalAmountExcludingTax()) |
| 531 | 698 | .set(ContractDistributorStandard::getTotalAmountIncludingTax, vo.getTotalAmountIncludingTax()) |
| ... | ... | @@ -544,21 +711,24 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont |
| 544 | 711 | * @param vo 合同数据 |
| 545 | 712 | */ |
| 546 | 713 | private void overwriteDistributorLines(String contractId, UpdateContractDistributorStandardVo vo) { |
| 547 | - Wrapper<ContractDistributorLine> removeWrapper = Wrappers.lambdaQuery(ContractDistributorLine.class) | |
| 548 | - .eq(ContractDistributorLine::getContractId, contractId); | |
| 549 | - contractDistributorLineService.remove(removeWrapper); | |
| 550 | - | |
| 551 | 714 | if (CollectionUtils.isEmpty(vo.getContractDistributorLineList())) { |
| 552 | 715 | return; |
| 553 | 716 | } |
| 554 | 717 | |
| 555 | 718 | for (int i = 0; i < vo.getContractDistributorLineList().size(); i++) { |
| 556 | 719 | UpdateContractDistributorLineVo lineVo = vo.getContractDistributorLineList().get(i); |
| 557 | - CreateContractDistributorLineVo createVo = new CreateContractDistributorLineVo(); | |
| 558 | - BeanUtil.copyProperties(lineVo, createVo); | |
| 559 | - createVo.setContractId(contractId); | |
| 560 | - createVo.setShowOrder(i); | |
| 561 | - contractDistributorLineService.create(createVo); | |
| 720 | + if (StringUtils.isBlank(lineVo.getId())) { | |
| 721 | + throw new DefaultClientException("合同变更后的普通合同行存在缺少ID的数据,不允许新增或删除物料行!"); | |
| 722 | + } | |
| 723 | + | |
| 724 | + ContractDistributorLine line = contractDistributorLineService.findById(lineVo.getId()); | |
| 725 | + if (line == null || !StringUtils.equals(contractId, line.getContractId())) { | |
| 726 | + throw new DefaultClientException("合同变更后的普通合同行数据异常,存在不属于当前合同的物料行!"); | |
| 727 | + } | |
| 728 | + | |
| 729 | + lineVo.setContractId(contractId); | |
| 730 | + lineVo.setShowOrder(i); | |
| 731 | + contractDistributorLineService.update(lineVo); | |
| 562 | 732 | } |
| 563 | 733 | } |
| 564 | 734 | |
| ... | ... | @@ -569,21 +739,24 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont |
| 569 | 739 | * @param vo 合同数据 |
| 570 | 740 | */ |
| 571 | 741 | private void overwriteProcessingLines(String contractId, UpdateContractDistributorStandardVo vo) { |
| 572 | - Wrapper<ContractStdProcessingLine> removeWrapper = Wrappers.lambdaQuery(ContractStdProcessingLine.class) | |
| 573 | - .eq(ContractStdProcessingLine::getContractId, contractId); | |
| 574 | - contractStdProcessingLineService.remove(removeWrapper); | |
| 575 | - | |
| 576 | 742 | if (CollectionUtils.isEmpty(vo.getContractStdProcessingLineList())) { |
| 577 | 743 | return; |
| 578 | 744 | } |
| 579 | 745 | |
| 580 | 746 | for (int i = 0; i < vo.getContractStdProcessingLineList().size(); i++) { |
| 581 | 747 | UpdateContractStdProcessingLineVo lineVo = vo.getContractStdProcessingLineList().get(i); |
| 582 | - CreateContractStdProcessingLineVo createVo = new CreateContractStdProcessingLineVo(); | |
| 583 | - BeanUtil.copyProperties(lineVo, createVo); | |
| 584 | - createVo.setContractId(contractId); | |
| 585 | - createVo.setShowOrder(i); | |
| 586 | - contractStdProcessingLineService.create(createVo); | |
| 748 | + if (StringUtils.isBlank(lineVo.getId())) { | |
| 749 | + throw new DefaultClientException("合同变更后的加工合同行存在缺少ID的数据,不允许新增或删除物料行!"); | |
| 750 | + } | |
| 751 | + | |
| 752 | + ContractStdProcessingLine line = contractStdProcessingLineService.findById(lineVo.getId()); | |
| 753 | + if (line == null || !StringUtils.equals(contractId, line.getContractId())) { | |
| 754 | + throw new DefaultClientException("合同变更后的加工合同行数据异常,存在不属于当前合同的物料行!"); | |
| 755 | + } | |
| 756 | + | |
| 757 | + lineVo.setContractId(contractId); | |
| 758 | + lineVo.setShowOrder(i); | |
| 759 | + contractStdProcessingLineService.update(lineVo); | |
| 587 | 760 | } |
| 588 | 761 | } |
| 589 | 762 | } | ... | ... |
| ... | ... | @@ -30,7 +30,7 @@ public class CreateContractChangeApplicationVo implements BaseVo, Serializable { |
| 30 | 30 | * 变更原因 |
| 31 | 31 | */ |
| 32 | 32 | @ApiModelProperty(value = "变更原因") |
| 33 | - @Length(message = "变更原因最多允许200个字符!") | |
| 33 | + @Length(message = "变更原因最多允许500个字符!") | |
| 34 | 34 | private String changeReason; |
| 35 | 35 | |
| 36 | 36 | /** | ... | ... |
| ... | ... | @@ -29,7 +29,7 @@ public class UpdateContractChangeApplicationVo implements BaseVo, Serializable { |
| 29 | 29 | * 变更原因 |
| 30 | 30 | */ |
| 31 | 31 | @ApiModelProperty(value = "变更原因") |
| 32 | - @Length(message = "变更原因最多允许200个字符!") | |
| 32 | + @Length(message = "变更原因最多允许500个字符!") | |
| 33 | 33 | private String changeReason; |
| 34 | 34 | |
| 35 | 35 | /** | ... | ... |