Showing
10 changed files
with
413 additions
and
50 deletions
| @@ -1474,12 +1474,10 @@ CREATE TABLE IF NOT EXISTS `tbl_contract_change_application` | @@ -1474,12 +1474,10 @@ CREATE TABLE IF NOT EXISTS `tbl_contract_change_application` | ||
| 1474 | `contract_code` varchar(50) NOT NULL COMMENT '合同编号', | 1474 | `contract_code` varchar(50) NOT NULL COMMENT '合同编号', |
| 1475 | `contract_type` varchar(50) NOT NULL COMMENT '合同类型', | 1475 | `contract_type` varchar(50) NOT NULL COMMENT '合同类型', |
| 1476 | `contract_stage` varchar(20) NOT NULL COMMENT '合同阶段(FORMAL:正式合同,STANDARD:标准合同)', | 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 | `before_data_json` longtext DEFAULT NULL COMMENT '变更前数据JSON', | 1478 | `before_data_json` longtext DEFAULT NULL COMMENT '变更前数据JSON', |
| 1479 | `after_data_json` longtext DEFAULT NULL COMMENT '变更后数据JSON', | 1479 | `after_data_json` longtext DEFAULT NULL COMMENT '变更后数据JSON', |
| 1480 | `approval_status` varchar(20) NOT NULL COMMENT '审核状态', | 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 | `create_by_id` varchar(32) DEFAULT NULL COMMENT '创建人ID', | 1481 | `create_by_id` varchar(32) DEFAULT NULL COMMENT '创建人ID', |
| 1484 | `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', | 1482 | `create_by` varchar(50) DEFAULT NULL COMMENT '创建人', |
| 1485 | `update_by_id` varchar(32) DEFAULT NULL COMMENT '更新人ID', | 1483 | `update_by_id` varchar(32) DEFAULT NULL COMMENT '更新人ID', |
| @@ -2,7 +2,6 @@ package com.lframework.xingyun.sc.bo.contract; | @@ -2,7 +2,6 @@ package com.lframework.xingyun.sc.bo.contract; | ||
| 2 | 2 | ||
| 3 | import com.lframework.starter.web.core.bo.BaseBo; | 3 | import com.lframework.starter.web.core.bo.BaseBo; |
| 4 | import com.lframework.xingyun.sc.entity.ContractChangeApplication; | 4 | import com.lframework.xingyun.sc.entity.ContractChangeApplication; |
| 5 | -import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo; | ||
| 6 | import io.swagger.annotations.ApiModelProperty; | 5 | import io.swagger.annotations.ApiModelProperty; |
| 7 | import lombok.Data; | 6 | import lombok.Data; |
| 8 | 7 | ||
| @@ -86,7 +85,7 @@ public class GetContractChangeApplicationBo extends BaseBo<ContractChangeApplica | @@ -86,7 +85,7 @@ public class GetContractChangeApplicationBo extends BaseBo<ContractChangeApplica | ||
| 86 | * 变更后的合同数据 | 85 | * 变更后的合同数据 |
| 87 | */ | 86 | */ |
| 88 | @ApiModelProperty("变更后的合同数据") | 87 | @ApiModelProperty("变更后的合同数据") |
| 89 | - private UpdateContractDistributorStandardVo contractData; | 88 | + private GetContractDistributorStandardBo contractData; |
| 90 | 89 | ||
| 91 | public GetContractChangeApplicationBo() { | 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,6 +5,7 @@ import com.lframework.xingyun.sc.entity.ContractChangeApplication; | ||
| 5 | import io.swagger.annotations.ApiModelProperty; | 5 | import io.swagger.annotations.ApiModelProperty; |
| 6 | import lombok.Data; | 6 | import lombok.Data; |
| 7 | 7 | ||
| 8 | +import java.math.BigDecimal; | ||
| 8 | import java.time.LocalDateTime; | 9 | import java.time.LocalDateTime; |
| 9 | 10 | ||
| 10 | /** | 11 | /** |
| @@ -76,6 +77,48 @@ public class QueryContractChangeApplicationBo extends BaseBo<ContractChangeAppli | @@ -76,6 +77,48 @@ public class QueryContractChangeApplicationBo extends BaseBo<ContractChangeAppli | ||
| 76 | private String createBy; | 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 | @ApiModelProperty("创建时间") | 124 | @ApiModelProperty("创建时间") |
| 1 | package com.lframework.xingyun.sc.controller.contract; | 1 | package com.lframework.xingyun.sc.controller.contract; |
| 2 | 2 | ||
| 3 | import com.lframework.starter.common.exceptions.impl.DefaultClientException; | 3 | import com.lframework.starter.common.exceptions.impl.DefaultClientException; |
| 4 | +import com.lframework.starter.web.core.annotations.security.HasPermission; | ||
| 4 | import com.lframework.starter.web.core.components.resp.InvokeResult; | 5 | import com.lframework.starter.web.core.components.resp.InvokeResult; |
| 5 | import com.lframework.starter.web.core.components.resp.InvokeResultBuilder; | 6 | import com.lframework.starter.web.core.components.resp.InvokeResultBuilder; |
| 6 | import com.lframework.starter.web.core.components.resp.PageResult; | 7 | import com.lframework.starter.web.core.components.resp.PageResult; |
| 7 | import com.lframework.starter.web.core.controller.DefaultBaseController; | 8 | import com.lframework.starter.web.core.controller.DefaultBaseController; |
| 8 | import com.lframework.starter.web.core.utils.JsonUtil; | 9 | import com.lframework.starter.web.core.utils.JsonUtil; |
| 9 | import com.lframework.starter.web.core.utils.PageResultUtil; | 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 | import com.lframework.starter.web.inner.entity.SysDept; | 15 | import com.lframework.starter.web.inner.entity.SysDept; |
| 11 | import com.lframework.starter.web.inner.service.system.SysDeptService; | 16 | import com.lframework.starter.web.inner.service.system.SysDeptService; |
| 12 | import com.lframework.xingyun.basedata.entity.Customer; | 17 | import com.lframework.xingyun.basedata.entity.Customer; |
| @@ -14,6 +19,7 @@ import com.lframework.xingyun.basedata.entity.Workshop; | @@ -14,6 +19,7 @@ import com.lframework.xingyun.basedata.entity.Workshop; | ||
| 14 | import com.lframework.xingyun.basedata.service.customer.CustomerService; | 19 | import com.lframework.xingyun.basedata.service.customer.CustomerService; |
| 15 | import com.lframework.xingyun.basedata.service.workshop.WorkshopService; | 20 | import com.lframework.xingyun.basedata.service.workshop.WorkshopService; |
| 16 | import com.lframework.xingyun.sc.bo.contract.GetContractChangeApplicationBo; | 21 | import com.lframework.xingyun.sc.bo.contract.GetContractChangeApplicationBo; |
| 22 | +import com.lframework.xingyun.sc.bo.contract.GetContractDistributorStandardBo; | ||
| 17 | import com.lframework.xingyun.sc.bo.contract.QueryContractChangeApplicationBo; | 23 | import com.lframework.xingyun.sc.bo.contract.QueryContractChangeApplicationBo; |
| 18 | import com.lframework.xingyun.sc.bo.contract.QueryContractDistributorStandardBo; | 24 | import com.lframework.xingyun.sc.bo.contract.QueryContractDistributorStandardBo; |
| 19 | import com.lframework.xingyun.sc.entity.ContractChangeApplication; | 25 | import com.lframework.xingyun.sc.entity.ContractChangeApplication; |
| @@ -23,15 +29,14 @@ import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractChangeApplic | @@ -23,15 +29,14 @@ import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractChangeApplic | ||
| 23 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeApplicationVo; | 29 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeApplicationVo; |
| 24 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeSelectableContractVo; | 30 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeSelectableContractVo; |
| 25 | import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractChangeApplicationVo; | 31 | import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractChangeApplicationVo; |
| 26 | -import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractDistributorStandardVo; | ||
| 27 | import io.swagger.annotations.Api; | 32 | import io.swagger.annotations.Api; |
| 28 | import io.swagger.annotations.ApiImplicitParam; | 33 | import io.swagger.annotations.ApiImplicitParam; |
| 29 | import io.swagger.annotations.ApiOperation; | 34 | import io.swagger.annotations.ApiOperation; |
| 30 | import org.apache.commons.collections4.CollectionUtils; | 35 | import org.apache.commons.collections4.CollectionUtils; |
| 36 | +import org.apache.commons.lang3.StringUtils; | ||
| 31 | import org.springframework.beans.factory.annotation.Autowired; | 37 | import org.springframework.beans.factory.annotation.Autowired; |
| 32 | import org.springframework.validation.annotation.Validated; | 38 | import org.springframework.validation.annotation.Validated; |
| 33 | import org.springframework.web.bind.annotation.*; | 39 | import org.springframework.web.bind.annotation.*; |
| 34 | - | ||
| 35 | import javax.validation.Valid; | 40 | import javax.validation.Valid; |
| 36 | import javax.validation.constraints.NotBlank; | 41 | import javax.validation.constraints.NotBlank; |
| 37 | import java.util.Map; | 42 | import java.util.Map; |
| @@ -56,11 +61,16 @@ public class ContractChangeApplicationController extends DefaultBaseController { | @@ -56,11 +61,16 @@ public class ContractChangeApplicationController extends DefaultBaseController { | ||
| 56 | private SysDeptService sysDeptService; | 61 | private SysDeptService sysDeptService; |
| 57 | @Autowired | 62 | @Autowired |
| 58 | private WorkshopService workshopService; | 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 | @ApiOperation("查询列表") | 72 | @ApiOperation("查询列表") |
| 73 | + @HasPermission({"contract-manage:change-contract:query"}) | ||
| 64 | @GetMapping("/query") | 74 | @GetMapping("/query") |
| 65 | public InvokeResult<PageResult<QueryContractChangeApplicationBo>> query(QueryContractChangeApplicationVo vo) { | 75 | public InvokeResult<PageResult<QueryContractChangeApplicationBo>> query(QueryContractChangeApplicationVo vo) { |
| 66 | PageResult<ContractChangeApplication> pageResult = contractChangeApplicationService.query(getPageIndex(vo), getPageSize(vo), vo); | 76 | PageResult<ContractChangeApplication> pageResult = contractChangeApplicationService.query(getPageIndex(vo), getPageSize(vo), vo); |
| @@ -76,6 +86,7 @@ public class ContractChangeApplicationController extends DefaultBaseController { | @@ -76,6 +86,7 @@ public class ContractChangeApplicationController extends DefaultBaseController { | ||
| 76 | */ | 86 | */ |
| 77 | @ApiOperation("根据ID查询") | 87 | @ApiOperation("根据ID查询") |
| 78 | @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true) | 88 | @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true) |
| 89 | + @HasPermission({"contract-manage:change-contract:query","contract-manage:change-contract:review"}) | ||
| 79 | @GetMapping | 90 | @GetMapping |
| 80 | public InvokeResult<GetContractChangeApplicationBo> get(@NotBlank(message = "id不能为空!") String id) { | 91 | public InvokeResult<GetContractChangeApplicationBo> get(@NotBlank(message = "id不能为空!") String id) { |
| 81 | ContractChangeApplication data = contractChangeApplicationService.findById(id); | 92 | ContractChangeApplication data = contractChangeApplicationService.findById(id); |
| @@ -84,8 +95,10 @@ public class ContractChangeApplicationController extends DefaultBaseController { | @@ -84,8 +95,10 @@ public class ContractChangeApplicationController extends DefaultBaseController { | ||
| 84 | } | 95 | } |
| 85 | 96 | ||
| 86 | GetContractChangeApplicationBo result = new GetContractChangeApplicationBo(data); | 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 | return InvokeResultBuilder.success(result); | 103 | return InvokeResultBuilder.success(result); |
| 91 | } | 104 | } |
| @@ -94,6 +107,15 @@ public class ContractChangeApplicationController extends DefaultBaseController { | @@ -94,6 +107,15 @@ public class ContractChangeApplicationController extends DefaultBaseController { | ||
| 94 | * 查询可发起变更的合同 | 107 | * 查询可发起变更的合同 |
| 95 | */ | 108 | */ |
| 96 | @ApiOperation("查询可发起变更的合同") | 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 | @GetMapping("/querySelectableContracts") | 119 | @GetMapping("/querySelectableContracts") |
| 98 | public InvokeResult<PageResult<QueryContractDistributorStandardBo>> querySelectableContracts(QueryContractChangeSelectableContractVo vo) { | 120 | public InvokeResult<PageResult<QueryContractDistributorStandardBo>> querySelectableContracts(QueryContractChangeSelectableContractVo vo) { |
| 99 | PageResult<ContractDistributorStandard> pageResult = contractChangeApplicationService | 121 | PageResult<ContractDistributorStandard> pageResult = contractChangeApplicationService |
| @@ -138,6 +160,7 @@ public class ContractChangeApplicationController extends DefaultBaseController { | @@ -138,6 +160,7 @@ public class ContractChangeApplicationController extends DefaultBaseController { | ||
| 138 | * 新增 | 160 | * 新增 |
| 139 | */ | 161 | */ |
| 140 | @ApiOperation("新增") | 162 | @ApiOperation("新增") |
| 163 | + @HasPermission({"contract-manage:change-contract:add"}) | ||
| 141 | @PostMapping | 164 | @PostMapping |
| 142 | public InvokeResult<Void> create(@Valid @RequestBody CreateContractChangeApplicationVo vo) throws Exception { | 165 | public InvokeResult<Void> create(@Valid @RequestBody CreateContractChangeApplicationVo vo) throws Exception { |
| 143 | contractChangeApplicationService.create(vo); | 166 | contractChangeApplicationService.create(vo); |
| @@ -148,6 +171,7 @@ public class ContractChangeApplicationController extends DefaultBaseController { | @@ -148,6 +171,7 @@ public class ContractChangeApplicationController extends DefaultBaseController { | ||
| 148 | * 修改 | 171 | * 修改 |
| 149 | */ | 172 | */ |
| 150 | @ApiOperation("修改") | 173 | @ApiOperation("修改") |
| 174 | + @HasPermission({"contract-manage:change-contract:modify","contract-manage:change-contract:approve"}) | ||
| 151 | @PutMapping | 175 | @PutMapping |
| 152 | public InvokeResult<Void> update(@Valid @RequestBody UpdateContractChangeApplicationVo vo) throws Exception { | 176 | public InvokeResult<Void> update(@Valid @RequestBody UpdateContractChangeApplicationVo vo) throws Exception { |
| 153 | contractChangeApplicationService.update(vo); | 177 | contractChangeApplicationService.update(vo); |
| @@ -159,9 +183,108 @@ public class ContractChangeApplicationController extends DefaultBaseController { | @@ -159,9 +183,108 @@ public class ContractChangeApplicationController extends DefaultBaseController { | ||
| 159 | */ | 183 | */ |
| 160 | @ApiOperation("取消") | 184 | @ApiOperation("取消") |
| 161 | @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true) | 185 | @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true) |
| 162 | - @DeleteMapping | 186 | + @HasPermission({"contract-manage:change-contract:cancel"}) |
| 187 | + @PostMapping("/cancel") | ||
| 163 | public InvokeResult<Void> cancel(@NotBlank(message = "id不能为空!") String id) { | 188 | public InvokeResult<Void> cancel(@NotBlank(message = "id不能为空!") String id) { |
| 164 | contractChangeApplicationService.cancelApplication(id); | 189 | contractChangeApplicationService.cancelApplication(id); |
| 165 | return InvokeResultBuilder.success(); | 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,6 +7,7 @@ import com.lframework.starter.web.core.dto.BaseDto; | ||
| 7 | import com.lframework.starter.web.core.entity.BaseEntity; | 7 | import com.lframework.starter.web.core.entity.BaseEntity; |
| 8 | import lombok.Data; | 8 | import lombok.Data; |
| 9 | 9 | ||
| 10 | +import java.math.BigDecimal; | ||
| 10 | import java.time.LocalDateTime; | 11 | import java.time.LocalDateTime; |
| 11 | 12 | ||
| 12 | /** | 13 | /** |
| @@ -73,26 +74,46 @@ public class ContractChangeApplication extends BaseEntity implements BaseDto { | @@ -73,26 +74,46 @@ public class ContractChangeApplication extends BaseEntity implements BaseDto { | ||
| 73 | private String approvalStatus; | 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 | @TableField(exist = false) | 91 | @TableField(exist = false) |
| 89 | - private String deptCode; | 92 | + private String workshopCode; |
| 90 | 93 | ||
| 91 | /** | 94 | /** |
| 92 | - * 生产厂编码(非持久化字段) | 95 | + * 生产厂名称(非持久化字段) |
| 93 | */ | 96 | */ |
| 94 | @TableField(exist = false) | 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,7 +291,7 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic | ||
| 291 | || FlowInstanceStatus.TERMINATION.getCode().equals(flowStatus)) { | 291 | || FlowInstanceStatus.TERMINATION.getCode().equals(flowStatus)) { |
| 292 | contractChangeApplicationService.updateAuditStatus(businessId, "REFUSE"); | 292 | contractChangeApplicationService.updateAuditStatus(businessId, "REFUSE"); |
| 293 | } else if (FlowInstanceStatus.UNDO.getCode().equals(flowStatus)) { | 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 | package com.lframework.xingyun.sc.impl.contract; | 1 | package com.lframework.xingyun.sc.impl.contract; |
| 2 | 2 | ||
| 3 | -import cn.hutool.core.bean.BeanUtil; | ||
| 4 | import com.baomidou.mybatisplus.core.conditions.Wrapper; | 3 | import com.baomidou.mybatisplus.core.conditions.Wrapper; |
| 5 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 4 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| 6 | import com.github.pagehelper.PageInfo; | 5 | import com.github.pagehelper.PageInfo; |
| @@ -23,6 +22,9 @@ import com.lframework.starter.web.core.utils.PageResultUtil; | @@ -23,6 +22,9 @@ import com.lframework.starter.web.core.utils.PageResultUtil; | ||
| 23 | import com.lframework.starter.web.inner.components.oplog.OtherOpLogType; | 22 | import com.lframework.starter.web.inner.components.oplog.OtherOpLogType; |
| 24 | import com.lframework.starter.web.inner.entity.SysDept; | 23 | import com.lframework.starter.web.inner.entity.SysDept; |
| 25 | import com.lframework.starter.web.inner.service.system.SysDeptService; | 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 | import com.lframework.xingyun.basedata.entity.Workshop; | 28 | import com.lframework.xingyun.basedata.entity.Workshop; |
| 27 | import com.lframework.xingyun.basedata.service.workshop.WorkshopService; | 29 | import com.lframework.xingyun.basedata.service.workshop.WorkshopService; |
| 28 | import com.lframework.xingyun.sc.entity.ContractChangeApplication; | 30 | import com.lframework.xingyun.sc.entity.ContractChangeApplication; |
| @@ -38,8 +40,6 @@ import com.lframework.xingyun.sc.service.contract.ContractChangeApplicationServi | @@ -38,8 +40,6 @@ import com.lframework.xingyun.sc.service.contract.ContractChangeApplicationServi | ||
| 38 | import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService; | 40 | import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService; |
| 39 | import com.lframework.xingyun.sc.service.contract.ContractStdProcessingLineService; | 41 | import com.lframework.xingyun.sc.service.contract.ContractStdProcessingLineService; |
| 40 | import com.lframework.xingyun.sc.vo.contract.createVo.CreateContractChangeApplicationVo; | 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 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeApplicationVo; | 43 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeApplicationVo; |
| 44 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeSelectableContractVo; | 44 | import com.lframework.xingyun.sc.vo.contract.queryVo.QueryContractChangeSelectableContractVo; |
| 45 | import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractChangeApplicationVo; | 45 | import com.lframework.xingyun.sc.vo.contract.updateVo.UpdateContractChangeApplicationVo; |
| @@ -59,8 +59,11 @@ import java.io.Serializable; | @@ -59,8 +59,11 @@ import java.io.Serializable; | ||
| 59 | import java.time.LocalDateTime; | 59 | import java.time.LocalDateTime; |
| 60 | import java.util.ArrayList; | 60 | import java.util.ArrayList; |
| 61 | import java.util.Arrays; | 61 | import java.util.Arrays; |
| 62 | +import java.util.Collections; | ||
| 62 | import java.util.List; | 63 | import java.util.List; |
| 64 | +import java.util.Map; | ||
| 63 | import java.util.Set; | 65 | import java.util.Set; |
| 66 | +import java.util.function.Function; | ||
| 64 | import java.util.stream.Collectors; | 67 | import java.util.stream.Collectors; |
| 65 | 68 | ||
| 66 | /** | 69 | /** |
| @@ -89,20 +92,62 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | @@ -89,20 +92,62 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | ||
| 89 | private WorkshopService workshopService; | 92 | private WorkshopService workshopService; |
| 90 | @Resource | 93 | @Resource |
| 91 | private SysDeptService sysDeptService; | 94 | private SysDeptService sysDeptService; |
| 95 | + @Resource | ||
| 96 | + private CustomerService customerService; | ||
| 92 | 97 | ||
| 93 | @Override | 98 | @Override |
| 94 | public PageResult<ContractChangeApplication> query(Integer pageIndex, Integer pageSize, QueryContractChangeApplicationVo vo) { | 99 | public PageResult<ContractChangeApplication> query(Integer pageIndex, Integer pageSize, QueryContractChangeApplicationVo vo) { |
| 95 | Assert.greaterThanZero(pageIndex); | 100 | Assert.greaterThanZero(pageIndex); |
| 96 | Assert.greaterThanZero(pageSize); | 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 | PageHelperUtil.startPage(pageIndex, pageSize); | 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 | .like(StringUtils.isNotBlank(vo.getContractCode()), ContractChangeApplication::getContractCode, vo.getContractCode()) | 127 | .like(StringUtils.isNotBlank(vo.getContractCode()), ContractChangeApplication::getContractCode, vo.getContractCode()) |
| 101 | .eq(StringUtils.isNotBlank(vo.getContractType()), ContractChangeApplication::getContractType, vo.getContractType()) | 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 | List<ContractChangeApplication> datas = list(wrapper); | 149 | List<ContractChangeApplication> datas = list(wrapper); |
| 150 | + fillDisplayInfo(datas); | ||
| 106 | fillShowExamine(datas); | 151 | fillShowExamine(datas); |
| 107 | return PageResultUtil.convert(new PageInfo<>(datas)); | 152 | return PageResultUtil.convert(new PageInfo<>(datas)); |
| 108 | } | 153 | } |
| @@ -113,6 +158,7 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | @@ -113,6 +158,7 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | ||
| 113 | if (data == null) { | 158 | if (data == null) { |
| 114 | return null; | 159 | return null; |
| 115 | } | 160 | } |
| 161 | + fillDisplayInfo(Collections.singletonList(data)); | ||
| 116 | fillShowExamine(Arrays.asList(data)); | 162 | fillShowExamine(Arrays.asList(data)); |
| 117 | return data; | 163 | return data; |
| 118 | } | 164 | } |
| @@ -201,8 +247,6 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | @@ -201,8 +247,6 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | ||
| 201 | 247 | ||
| 202 | Wrapper<ContractChangeApplication> wrapper = Wrappers.lambdaUpdate(ContractChangeApplication.class) | 248 | Wrapper<ContractChangeApplication> wrapper = Wrappers.lambdaUpdate(ContractChangeApplication.class) |
| 203 | .set(ContractChangeApplication::getApprovalStatus, CustomerDevelopStatus.CANCEL.name()) | 249 | .set(ContractChangeApplication::getApprovalStatus, CustomerDevelopStatus.CANCEL.name()) |
| 204 | - .set(ContractChangeApplication::getApprovedAt, LocalDateTime.now()) | ||
| 205 | - .set(ContractChangeApplication::getApproverId, SecurityUtil.getCurrentUser().getId()) | ||
| 206 | .eq(ContractChangeApplication::getId, id); | 250 | .eq(ContractChangeApplication::getId, id); |
| 207 | update(wrapper); | 251 | update(wrapper); |
| 208 | 252 | ||
| @@ -224,8 +268,6 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | @@ -224,8 +268,6 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | ||
| 224 | 268 | ||
| 225 | Wrapper<ContractChangeApplication> wrapper = Wrappers.lambdaUpdate(ContractChangeApplication.class) | 269 | Wrapper<ContractChangeApplication> wrapper = Wrappers.lambdaUpdate(ContractChangeApplication.class) |
| 226 | .set(ContractChangeApplication::getApprovalStatus, approvalStatus) | 270 | .set(ContractChangeApplication::getApprovalStatus, approvalStatus) |
| 227 | - .set(ContractChangeApplication::getApprovedAt, LocalDateTime.now()) | ||
| 228 | - .set(ContractChangeApplication::getApproverId, SecurityUtil.getCurrentUser().getId()) | ||
| 229 | .eq(ContractChangeApplication::getId, id); | 271 | .eq(ContractChangeApplication::getId, id); |
| 230 | update(wrapper); | 272 | update(wrapper); |
| 231 | 273 | ||
| @@ -289,6 +331,125 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | @@ -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 | * @param contractId 合同ID | 455 | * @param contractId 合同ID |
| @@ -526,6 +687,12 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | @@ -526,6 +687,12 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | ||
| 526 | .set(ContractDistributorStandard::getDesignatedConsignee, vo.getDesignatedConsignee()) | 687 | .set(ContractDistributorStandard::getDesignatedConsignee, vo.getDesignatedConsignee()) |
| 527 | .set(ContractDistributorStandard::getSpecialInstructions, vo.getSpecialInstructions()) | 688 | .set(ContractDistributorStandard::getSpecialInstructions, vo.getSpecialInstructions()) |
| 528 | .set(ContractDistributorStandard::getRemarks, vo.getRemarks()) | 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 | .set(ContractDistributorStandard::getTotalQuantity, vo.getTotalQuantity()) | 696 | .set(ContractDistributorStandard::getTotalQuantity, vo.getTotalQuantity()) |
| 530 | .set(ContractDistributorStandard::getTotalAmountExcludingTax, vo.getTotalAmountExcludingTax()) | 697 | .set(ContractDistributorStandard::getTotalAmountExcludingTax, vo.getTotalAmountExcludingTax()) |
| 531 | .set(ContractDistributorStandard::getTotalAmountIncludingTax, vo.getTotalAmountIncludingTax()) | 698 | .set(ContractDistributorStandard::getTotalAmountIncludingTax, vo.getTotalAmountIncludingTax()) |
| @@ -544,21 +711,24 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | @@ -544,21 +711,24 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | ||
| 544 | * @param vo 合同数据 | 711 | * @param vo 合同数据 |
| 545 | */ | 712 | */ |
| 546 | private void overwriteDistributorLines(String contractId, UpdateContractDistributorStandardVo vo) { | 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 | if (CollectionUtils.isEmpty(vo.getContractDistributorLineList())) { | 714 | if (CollectionUtils.isEmpty(vo.getContractDistributorLineList())) { |
| 552 | return; | 715 | return; |
| 553 | } | 716 | } |
| 554 | 717 | ||
| 555 | for (int i = 0; i < vo.getContractDistributorLineList().size(); i++) { | 718 | for (int i = 0; i < vo.getContractDistributorLineList().size(); i++) { |
| 556 | UpdateContractDistributorLineVo lineVo = vo.getContractDistributorLineList().get(i); | 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,21 +739,24 @@ public class ContractChangeApplicationServiceImpl extends BaseMpServiceImpl<Cont | ||
| 569 | * @param vo 合同数据 | 739 | * @param vo 合同数据 |
| 570 | */ | 740 | */ |
| 571 | private void overwriteProcessingLines(String contractId, UpdateContractDistributorStandardVo vo) { | 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 | if (CollectionUtils.isEmpty(vo.getContractStdProcessingLineList())) { | 742 | if (CollectionUtils.isEmpty(vo.getContractStdProcessingLineList())) { |
| 577 | return; | 743 | return; |
| 578 | } | 744 | } |
| 579 | 745 | ||
| 580 | for (int i = 0; i < vo.getContractStdProcessingLineList().size(); i++) { | 746 | for (int i = 0; i < vo.getContractStdProcessingLineList().size(); i++) { |
| 581 | UpdateContractStdProcessingLineVo lineVo = vo.getContractStdProcessingLineList().get(i); | 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,7 +30,7 @@ public class CreateContractChangeApplicationVo implements BaseVo, Serializable { | ||
| 30 | * 变更原因 | 30 | * 变更原因 |
| 31 | */ | 31 | */ |
| 32 | @ApiModelProperty(value = "变更原因") | 32 | @ApiModelProperty(value = "变更原因") |
| 33 | - @Length(message = "变更原因最多允许200个字符!") | 33 | + @Length(message = "变更原因最多允许500个字符!") |
| 34 | private String changeReason; | 34 | private String changeReason; |
| 35 | 35 | ||
| 36 | /** | 36 | /** |
| @@ -38,4 +38,10 @@ public class QueryContractChangeApplicationVo extends PageVo implements BaseVo, | @@ -38,4 +38,10 @@ public class QueryContractChangeApplicationVo extends PageVo implements BaseVo, | ||
| 38 | */ | 38 | */ |
| 39 | @ApiModelProperty("审核状态") | 39 | @ApiModelProperty("审核状态") |
| 40 | private String approvalStatus; | 40 | private String approvalStatus; |
| 41 | + | ||
| 42 | + /** | ||
| 43 | + * 需方名称 | ||
| 44 | + */ | ||
| 45 | + @ApiModelProperty("需方名称") | ||
| 46 | + private String buyerName; | ||
| 41 | } | 47 | } |
| @@ -29,7 +29,7 @@ public class UpdateContractChangeApplicationVo implements BaseVo, Serializable { | @@ -29,7 +29,7 @@ public class UpdateContractChangeApplicationVo implements BaseVo, Serializable { | ||
| 29 | * 变更原因 | 29 | * 变更原因 |
| 30 | */ | 30 | */ |
| 31 | @ApiModelProperty(value = "变更原因") | 31 | @ApiModelProperty(value = "变更原因") |
| 32 | - @Length(message = "变更原因最多允许200个字符!") | 32 | + @Length(message = "变更原因最多允许500个字符!") |
| 33 | private String changeReason; | 33 | private String changeReason; |
| 34 | 34 | ||
| 35 | /** | 35 | /** |