Showing
5 changed files
with
140 additions
and
2 deletions
| @@ -22,6 +22,7 @@ import com.lframework.xingyun.sc.procurement.entity.ProcurementDomesticCustomerC | @@ -22,6 +22,7 @@ import com.lframework.xingyun.sc.procurement.entity.ProcurementDomesticCustomerC | ||
| 22 | import com.lframework.xingyun.sc.procurement.entity.ProcurementForeignTradeCredit; | 22 | import com.lframework.xingyun.sc.procurement.entity.ProcurementForeignTradeCredit; |
| 23 | import com.lframework.xingyun.sc.procurement.service.credit.ProcurementDomesticCustomerCreditService; | 23 | import com.lframework.xingyun.sc.procurement.service.credit.ProcurementDomesticCustomerCreditService; |
| 24 | import com.lframework.xingyun.sc.procurement.service.credit.ProcurementForeignTradeCreditService; | 24 | import com.lframework.xingyun.sc.procurement.service.credit.ProcurementForeignTradeCreditService; |
| 25 | +import com.lframework.xingyun.sc.procurement.service.plan.ProcurementPlanService; | ||
| 25 | import com.lframework.xingyun.sc.procurement.service.quotation.SalesmanQuotationService; | 26 | import com.lframework.xingyun.sc.procurement.service.quotation.SalesmanQuotationService; |
| 26 | import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService; | 27 | import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService; |
| 27 | import com.lframework.xingyun.sc.service.contract.ContractChangeApplicationService; | 28 | import com.lframework.xingyun.sc.service.contract.ContractChangeApplicationService; |
| @@ -157,6 +158,8 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic | @@ -157,6 +158,8 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic | ||
| 157 | private ProcurementForeignTradeCreditService procurementForeignTradeCreditService; | 158 | private ProcurementForeignTradeCreditService procurementForeignTradeCreditService; |
| 158 | @Resource | 159 | @Resource |
| 159 | private SalesmanQuotationService salesmanQuotationService; | 160 | private SalesmanQuotationService salesmanQuotationService; |
| 161 | + @Resource | ||
| 162 | + private ProcurementPlanService procurementPlanService; | ||
| 160 | 163 | ||
| 161 | 164 | ||
| 162 | 165 | ||
| @@ -247,6 +250,9 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic | @@ -247,6 +250,9 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic | ||
| 247 | case "SALESMAN_QUOTATION": | 250 | case "SALESMAN_QUOTATION": |
| 248 | handleSalesmanQuotationData(flowStatus, businessId); | 251 | handleSalesmanQuotationData(flowStatus, businessId); |
| 249 | break; | 252 | break; |
| 253 | + case "PROCUREMENT_PLAN": | ||
| 254 | + handleProcurementPlanData(flowStatus, businessId); | ||
| 255 | + break; | ||
| 250 | default: | 256 | default: |
| 251 | break; | 257 | break; |
| 252 | } | 258 | } |
| @@ -1123,4 +1129,22 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic | @@ -1123,4 +1129,22 @@ public class BusinessDataHandlerServiceImpl implements BusinessDataHandlerServic | ||
| 1123 | salesmanQuotationService.updateApprovalStatus(businessId, "REFUSE"); | 1129 | salesmanQuotationService.updateApprovalStatus(businessId, "REFUSE"); |
| 1124 | } | 1130 | } |
| 1125 | } | 1131 | } |
| 1132 | + | ||
| 1133 | + /** | ||
| 1134 | + * 采购计划审核业务数据处理 | ||
| 1135 | + * | ||
| 1136 | + * @param flowStatus 审核结果 | ||
| 1137 | + * @param businessId 业务ID | ||
| 1138 | + */ | ||
| 1139 | + private void handleProcurementPlanData(String flowStatus, String businessId) { | ||
| 1140 | + if (FlowInstanceStatus.APPROVE_PASS.getCode().equals(flowStatus) | ||
| 1141 | + || FlowInstanceStatus.FINISH.getCode().equals(flowStatus)) { | ||
| 1142 | + procurementPlanService.updateApprovalStatus(businessId, "PASS"); | ||
| 1143 | + } else if (FlowInstanceStatus.REVOKE.getCode().equals(flowStatus) | ||
| 1144 | + || FlowInstanceStatus.REFUSE.getCode().equals(flowStatus) | ||
| 1145 | + || FlowInstanceStatus.TERMINATION.getCode().equals(flowStatus)) { | ||
| 1146 | + procurementPlanService.updateApprovalStatus(businessId, "REFUSE"); | ||
| 1147 | + } | ||
| 1148 | + } | ||
| 1149 | + | ||
| 1126 | } | 1150 | } |
| @@ -17,6 +17,7 @@ import com.lframework.xingyun.sc.entity.ContractDistributorStandard; | @@ -17,6 +17,7 @@ import com.lframework.xingyun.sc.entity.ContractDistributorStandard; | ||
| 17 | import com.lframework.xingyun.sc.entity.FundCoordination; | 17 | import com.lframework.xingyun.sc.entity.FundCoordination; |
| 18 | import com.lframework.xingyun.sc.entity.ProductSampleConfirmationSlip; | 18 | import com.lframework.xingyun.sc.entity.ProductSampleConfirmationSlip; |
| 19 | import com.lframework.xingyun.sc.handlers.TransactorHandler; | 19 | import com.lframework.xingyun.sc.handlers.TransactorHandler; |
| 20 | +import com.lframework.xingyun.sc.procurement.service.plan.ProcurementPlanService; | ||
| 20 | import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; | 21 | import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; |
| 21 | import com.lframework.xingyun.sc.service.customer.CustomerCreditService; | 22 | import com.lframework.xingyun.sc.service.customer.CustomerCreditService; |
| 22 | import com.lframework.xingyun.sc.service.ledger.FundCoordinationService; | 23 | import com.lframework.xingyun.sc.service.ledger.FundCoordinationService; |
| @@ -59,6 +60,8 @@ public class FlowTaskServiceImpl implements FlowTaskService { | @@ -59,6 +60,8 @@ public class FlowTaskServiceImpl implements FlowTaskService { | ||
| 59 | private SampleResultTrackingService sampleResultTrackingService; | 60 | private SampleResultTrackingService sampleResultTrackingService; |
| 60 | @Resource | 61 | @Resource |
| 61 | private ContractDistributorStandardService contractDistributorStandardService; | 62 | private ContractDistributorStandardService contractDistributorStandardService; |
| 63 | + @Resource | ||
| 64 | + private ProcurementPlanService procurementPlanService; | ||
| 62 | 65 | ||
| 63 | 66 | ||
| 64 | @OpLog(type = OtherOpLogType.class, name = "修改客户资信,ID:{}", params = {"#id"}) | 67 | @OpLog(type = OtherOpLogType.class, name = "修改客户资信,ID:{}", params = {"#id"}) |
| @@ -437,6 +440,15 @@ public class FlowTaskServiceImpl implements FlowTaskService { | @@ -437,6 +440,15 @@ public class FlowTaskServiceImpl implements FlowTaskService { | ||
| 437 | } | 440 | } |
| 438 | 441 | ||
| 439 | @Override | 442 | @Override |
| 443 | + public void updateProcurementPlanMap(Map<String, Object> map) { | ||
| 444 | + //主键 | ||
| 445 | + Object i = map.get("id"); | ||
| 446 | + String id = String.valueOf(i); | ||
| 447 | + | ||
| 448 | + procurementPlanService.updateExamine(id); | ||
| 449 | + } | ||
| 450 | + | ||
| 451 | + @Override | ||
| 440 | public Map<String, Object> findById(String s) { | 452 | public Map<String, Object> findById(String s) { |
| 441 | ProductSampleConfirmationSlip slip = productSampleConfirmationSlipService.findById(s); | 453 | ProductSampleConfirmationSlip slip = productSampleConfirmationSlipService.findById(s); |
| 442 | Map<String, Object> map = new HashMap<>(); | 454 | Map<String, Object> map = new HashMap<>(); |
| @@ -133,6 +133,20 @@ public class ProcurementPlanController extends DefaultBaseController { | @@ -133,6 +133,20 @@ public class ProcurementPlanController extends DefaultBaseController { | ||
| 133 | } | 133 | } |
| 134 | 134 | ||
| 135 | /** | 135 | /** |
| 136 | + * 发起审核 | ||
| 137 | + */ | ||
| 138 | + @ApiOperation("发起审核") | ||
| 139 | + @ApiImplicitParam(value = "ID", name = "id", paramType = "query", required = true) | ||
| 140 | + @HasPermission({"plan-manage:domestic-plan:goapprove"}) | ||
| 141 | + @PostMapping("/submitAudit") | ||
| 142 | + public InvokeResult<Void> submitAudit(@NotBlank(message = "ID不能为空!") String id) { | ||
| 143 | + | ||
| 144 | + procurementPlanService.submitAudit(id); | ||
| 145 | + | ||
| 146 | + return InvokeResultBuilder.success(); | ||
| 147 | + } | ||
| 148 | + | ||
| 149 | + /** | ||
| 136 | * 删除 | 150 | * 删除 |
| 137 | */ | 151 | */ |
| 138 | @ApiOperation("删除") | 152 | @ApiOperation("删除") |
| @@ -5,17 +5,19 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; | @@ -5,17 +5,19 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper; | ||
| 5 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | 5 | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; |
| 6 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | 6 | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| 7 | import com.github.pagehelper.PageInfo; | 7 | import com.github.pagehelper.PageInfo; |
| 8 | +import com.lframework.starter.bpm.service.FlowInstanceWrapperService; | ||
| 8 | import com.lframework.starter.common.exceptions.impl.DefaultClientException; | 9 | import com.lframework.starter.common.exceptions.impl.DefaultClientException; |
| 9 | import com.lframework.starter.common.exceptions.impl.InputErrorException; | 10 | import com.lframework.starter.common.exceptions.impl.InputErrorException; |
| 10 | import com.lframework.starter.common.utils.Assert; | 11 | import com.lframework.starter.common.utils.Assert; |
| 11 | import com.lframework.starter.common.utils.CollectionUtil; | 12 | import com.lframework.starter.common.utils.CollectionUtil; |
| 12 | import com.lframework.starter.common.utils.NumberUtil; | 13 | import com.lframework.starter.common.utils.NumberUtil; |
| 13 | import com.lframework.starter.common.utils.StringUtil; | 14 | import com.lframework.starter.common.utils.StringUtil; |
| 15 | +import com.lframework.starter.web.core.annotations.oplog.OpLog; | ||
| 14 | import com.lframework.starter.web.core.impl.BaseMpServiceImpl; | 16 | import com.lframework.starter.web.core.impl.BaseMpServiceImpl; |
| 15 | import com.lframework.starter.web.core.utils.IdUtil; | 17 | import com.lframework.starter.web.core.utils.IdUtil; |
| 18 | +import com.lframework.starter.web.core.utils.OpLogUtil; | ||
| 16 | import com.lframework.starter.web.core.utils.PageHelperUtil; | 19 | import com.lframework.starter.web.core.utils.PageHelperUtil; |
| 17 | -import com.lframework.starter.web.inner.entity.SysDept; | ||
| 18 | -import com.lframework.starter.web.inner.service.system.SysDeptService; | 20 | +import com.lframework.starter.web.inner.components.oplog.OtherOpLogType; |
| 19 | import com.lframework.starter.web.core.components.resp.PageResult; | 21 | import com.lframework.starter.web.core.components.resp.PageResult; |
| 20 | import com.lframework.starter.web.core.utils.PageResultUtil; | 22 | import com.lframework.starter.web.core.utils.PageResultUtil; |
| 21 | import com.lframework.xingyun.basedata.entity.Workshop; | 23 | import com.lframework.xingyun.basedata.entity.Workshop; |
| @@ -53,10 +55,14 @@ import javax.annotation.Resource; | @@ -53,10 +55,14 @@ import javax.annotation.Resource; | ||
| 53 | public class ProcurementPlanServiceImpl extends BaseMpServiceImpl<ProcurementPlanMapper, ProcurementPlan> | 55 | public class ProcurementPlanServiceImpl extends BaseMpServiceImpl<ProcurementPlanMapper, ProcurementPlan> |
| 54 | implements ProcurementPlanService { | 56 | implements ProcurementPlanService { |
| 55 | 57 | ||
| 58 | + private static final String BPM_FLAG = "PROCUREMENT_PLAN"; | ||
| 59 | + | ||
| 56 | @Autowired | 60 | @Autowired |
| 57 | private ProcurementPlanLineService procurementPlanLineService; | 61 | private ProcurementPlanLineService procurementPlanLineService; |
| 58 | @Resource | 62 | @Resource |
| 59 | private WorkshopService workshopService; | 63 | private WorkshopService workshopService; |
| 64 | + @Resource | ||
| 65 | + private FlowInstanceWrapperService flowInstanceWrapperService; | ||
| 60 | 66 | ||
| 61 | @Override | 67 | @Override |
| 62 | public PageResult<ProcurementPlan> query(Integer pageIndex, Integer pageSize, | 68 | public PageResult<ProcurementPlan> query(Integer pageIndex, Integer pageSize, |
| @@ -353,6 +359,71 @@ public class ProcurementPlanServiceImpl extends BaseMpServiceImpl<ProcurementPla | @@ -353,6 +359,71 @@ public class ProcurementPlanServiceImpl extends BaseMpServiceImpl<ProcurementPla | ||
| 353 | getBaseMapper().update(mainUpdateWrapper); | 359 | getBaseMapper().update(mainUpdateWrapper); |
| 354 | } | 360 | } |
| 355 | 361 | ||
| 362 | + @OpLog(type = OtherOpLogType.class, name = "发起采购计划审核,ID:{}", params = {"#id"}) | ||
| 363 | + @Transactional(rollbackFor = Exception.class) | ||
| 364 | + @Override | ||
| 365 | + public void submitAudit(String id) { | ||
| 366 | + if (StringUtil.isBlank(id)) { | ||
| 367 | + throw new InputErrorException("ID不能为空!"); | ||
| 368 | + } | ||
| 369 | + | ||
| 370 | + ProcurementPlan plan = getBaseMapper().findById(id); | ||
| 371 | + if (plan == null) { | ||
| 372 | + throw new DefaultClientException("采购计划不存在!"); | ||
| 373 | + } | ||
| 374 | + | ||
| 375 | + if (Boolean.TRUE.equals(plan.getFrozen())) { | ||
| 376 | + throw new DefaultClientException("当前采购计划已冻结,无法发起审核!"); | ||
| 377 | + } | ||
| 378 | + | ||
| 379 | + List<ProcurementPlanLine> planLineList = procurementPlanLineService.getByProcurementPlanId(id); | ||
| 380 | + if (CollectionUtil.isEmpty(planLineList)) { | ||
| 381 | + throw new DefaultClientException("采购计划明细为空,无法发起审核!"); | ||
| 382 | + } | ||
| 383 | + | ||
| 384 | + // 更新主表审核状态/流程节点:标记为已发起审核中 | ||
| 385 | + LambdaUpdateWrapper<ProcurementPlan> updateWrapper = Wrappers.lambdaUpdate(ProcurementPlan.class) | ||
| 386 | + .set(ProcurementPlan::getApprovalStatus, "AUDIT") | ||
| 387 | + .set(ProcurementPlan::getProcessStatus, "AUDIT") | ||
| 388 | + .set(ProcurementPlan::getProcessNode, "GYBZG") | ||
| 389 | + .eq(ProcurementPlan::getId, id); | ||
| 390 | + getBaseMapper().update(updateWrapper); | ||
| 391 | + | ||
| 392 | + ProcurementPlan freshPlan = getBaseMapper().findById(id); | ||
| 393 | + flowInstanceWrapperService.startInstance(BPM_FLAG, freshPlan.getId(), BPM_FLAG, freshPlan); | ||
| 394 | + | ||
| 395 | + OpLogUtil.setVariable("id", freshPlan.getId()); | ||
| 396 | + OpLogUtil.setExtra(freshPlan); | ||
| 397 | + } | ||
| 398 | + | ||
| 399 | + @Transactional(rollbackFor = Exception.class) | ||
| 400 | + @Override | ||
| 401 | + public void updateApprovalStatus(String id, String approvalStatus) { | ||
| 402 | + if (StringUtils.isBlank(id) || StringUtils.isBlank(approvalStatus)) { | ||
| 403 | + throw new DefaultClientException("采购计划ID、审核状态不能为空!"); | ||
| 404 | + } | ||
| 405 | + | ||
| 406 | + Wrapper<ProcurementPlan> wrapper = Wrappers.lambdaUpdate(ProcurementPlan.class) | ||
| 407 | + .set(ProcurementPlan::getApprovalStatus, approvalStatus) | ||
| 408 | + .set(ProcurementPlan::getProcessStatus, approvalStatus.equals("PASS") ? "COMPLETED" : "REFUSE") | ||
| 409 | + .set(ProcurementPlan::getProcessNode, approvalStatus.equals("PASS") ? null : "GYGLKZG") | ||
| 410 | + .eq(ProcurementPlan::getId, id); | ||
| 411 | + getBaseMapper().update(wrapper); | ||
| 412 | + } | ||
| 413 | + | ||
| 414 | + @Transactional(rollbackFor = Exception.class) | ||
| 415 | + @Override | ||
| 416 | + public void updateExamine(String id) { | ||
| 417 | + if (StringUtils.isBlank(id)) { | ||
| 418 | + throw new DefaultClientException("采购计划ID不能为空!"); | ||
| 419 | + } | ||
| 420 | + | ||
| 421 | + Wrapper<ProcurementPlan> wrapper = Wrappers.lambdaUpdate(ProcurementPlan.class) | ||
| 422 | + .set(ProcurementPlan::getProcessNode, "YSFG") | ||
| 423 | + .eq(ProcurementPlan::getId, id); | ||
| 424 | + getBaseMapper().update(wrapper); | ||
| 425 | + } | ||
| 426 | + | ||
| 356 | /** | 427 | /** |
| 357 | * 子计划创建:与 create() 逻辑一致,但不重新 buildPlanCode(因为子计划编号已按父code+后缀生成) | 428 | * 子计划创建:与 create() 逻辑一致,但不重新 buildPlanCode(因为子计划编号已按父code+后缀生成) |
| 358 | */ | 429 | */ |
| @@ -72,4 +72,21 @@ public interface ProcurementPlanService extends BaseMpService<ProcurementPlan> { | @@ -72,4 +72,21 @@ public interface ProcurementPlanService extends BaseMpService<ProcurementPlan> { | ||
| 72 | * @param id | 72 | * @param id |
| 73 | */ | 73 | */ |
| 74 | void submit(String id); | 74 | void submit(String id); |
| 75 | + | ||
| 76 | + /** | ||
| 77 | + * 发起审核 | ||
| 78 | + * | ||
| 79 | + * @param id | ||
| 80 | + */ | ||
| 81 | + void submitAudit(String id); | ||
| 82 | + | ||
| 83 | + /** | ||
| 84 | + * 更新审核状态 | ||
| 85 | + * | ||
| 86 | + * @param id | ||
| 87 | + * @param approvalStatus | ||
| 88 | + */ | ||
| 89 | + void updateApprovalStatus(String id, String approvalStatus); | ||
| 90 | + | ||
| 91 | + void updateExamine(String id); | ||
| 75 | } | 92 | } |