diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countPlan/vo/CountPlanDetailBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countPlan/vo/CountPlanDetailBaseVO.java index 852affe0..4bd91ef3 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countPlan/vo/CountPlanDetailBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countPlan/vo/CountPlanDetailBaseVO.java @@ -1,5 +1,7 @@ package com.win.module.wms.controller.countPlan.vo; +import com.win.framework.excel.core.annotations.DictFormat; +import com.win.module.wms.enums.DictTypeConstants; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainBaseVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainBaseVO.java index f5058c38..5220488e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainBaseVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainBaseVO.java @@ -19,9 +19,6 @@ public class CountRequestMainBaseVO { @Schema(description = "id", example = "id") private Long id; - @Schema(description = "申请单号") - private String requestNumber; - @OnlyOne @Schema(description = "计划单号") private String planNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainExcelVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainExcelVO.java index 1bcc1a64..22158198 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainExcelVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainExcelVO.java @@ -18,9 +18,6 @@ import java.time.LocalDateTime; @Data public class CountRequestMainExcelVO { - @ExcelProperty("申请单号") - private String requestNumber; - @ExcelProperty("计划单号") private String planNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainExportReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainExportReqVO.java index 49823f58..747e6e67 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainExportReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainExportReqVO.java @@ -1,21 +1,17 @@ package com.win.module.wms.controller.countRequest.vo; -import lombok.*; -import java.util.*; import io.swagger.v3.oas.annotations.media.Schema; -import com.win.framework.common.pojo.PageParam; -import java.time.LocalDateTime; +import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Schema(description = "管理后台 - 盘点申请主 Excel 导出 Request VO,参数和 CountRequestMainPageReqVO 是一致的") @Data public class CountRequestMainExportReqVO { - @Schema(description = "申请单号") - private String requestNumber; - @Schema(description = "计划单号") private String planNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainPageReqVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainPageReqVO.java index 46b752c3..86804515 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainPageReqVO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/countRequest/vo/CountRequestMainPageReqVO.java @@ -1,10 +1,12 @@ package com.win.module.wms.controller.countRequest.vo; -import lombok.*; -import java.util.*; -import io.swagger.v3.oas.annotations.media.Schema; import com.win.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat; + import java.time.LocalDateTime; import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @@ -15,9 +17,6 @@ import static com.win.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY @ToString(callSuper = true) public class CountRequestMainPageReqVO extends PageParam { - @Schema(description = "申请单号") - private String requestNumber; - @Schema(description = "计划单号") private String planNumber; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/countRequest/CountRequestMainDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/countRequest/CountRequestMainDO.java index e8c9e48b..a362b088 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/countRequest/CountRequestMainDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/countRequest/CountRequestMainDO.java @@ -1,13 +1,12 @@ package com.win.module.wms.dal.dataobject.countRequest; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.sun.xml.bind.v2.TODO; +import com.win.framework.mybatis.core.dataobject.BaseDO; import lombok.*; -import java.util.*; -import java.time.LocalDateTime; -import java.time.LocalDateTime; -import java.time.LocalDateTime; + import java.time.LocalDateTime; -import com.baomidou.mybatisplus.annotation.*; -import com.win.framework.mybatis.core.dataobject.BaseDO; /** * 盘点申请主 DO @@ -28,10 +27,6 @@ public class CountRequestMainDO extends BaseDO { */ @TableId private Long id; - /** - * 申请单号 - */ - private String requestNumber; /** * 计划单号 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestMainMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestMainMapper.java index 355080a8..82cbfa4a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestMainMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/countRequest/CountRequestMainMapper.java @@ -23,7 +23,6 @@ public interface CountRequestMainMapper extends BaseMapperX default PageResult selectPage(CountRequestMainPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(CountRequestMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(CountRequestMainDO::getPlanNumber, reqVO.getPlanNumber()) .eqIfPresent(CountRequestMainDO::getStage, reqVO.getStage()) .eqIfPresent(CountRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode()) @@ -64,7 +63,6 @@ public interface CountRequestMainMapper extends BaseMapperX } default List selectList(CountRequestMainExportReqVO reqVO) { return selectList(new LambdaQueryWrapperX() - .eqIfPresent(CountRequestMainDO::getRequestNumber, reqVO.getRequestNumber()) .eqIfPresent(CountRequestMainDO::getPlanNumber, reqVO.getPlanNumber()) .eqIfPresent(CountRequestMainDO::getStage, reqVO.getStage()) .eqIfPresent(CountRequestMainDO::getWarehouseCode, reqVO.getWarehouseCode()) diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusState.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusState.java index 33307034..97e7ba81 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusState.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/enums/plan/PlanStatusState.java @@ -116,7 +116,7 @@ public class PlanStatusState { * @return */ public boolean publish() { - if(this.planStatusEnum.getCode().equals(PlanStatusEnum.AGREED.getCode())) { + if(this.planStatusEnum.getCode().equals(PlanStatusEnum.AGREED.getCode()) || this.planStatusEnum.getCode().equals(PlanStatusEnum.PUBLISHED.getCode())) { this.planStatusEnum = PlanStatusEnum.PUBLISHED; return Boolean.TRUE; } else { @@ -124,19 +124,6 @@ public class PlanStatusState { } } - /** - * 执行 - * @return - */ - public boolean execute() { - if(this.planStatusEnum.getCode().equals(PlanStatusEnum.PUBLISHED.getCode())) { - this.planStatusEnum = PlanStatusEnum.COMPLETED; - return Boolean.TRUE; - } else { - return Boolean.FALSE; - } - } - /** * 获取可执行的状态机 * @return diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java index a957f8db..80ee8506 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countPlan/CountPlanMainServiceImpl.java @@ -13,19 +13,32 @@ import com.win.module.wms.controller.countPlan.vo.CountPlanMainCreateReqVO; import com.win.module.wms.controller.countPlan.vo.CountPlanMainExportReqVO; import com.win.module.wms.controller.countPlan.vo.CountPlanMainPageReqVO; import com.win.module.wms.controller.countPlan.vo.CountPlanMainUpdateReqVO; +import com.win.module.wms.controller.countRequest.vo.CountRequestDetailCreateReqVO; +import com.win.module.wms.controller.countRequest.vo.CountRequestMainCreateReqVO; import com.win.module.wms.convert.countPlan.CountPlanDetailConvert; import com.win.module.wms.convert.countPlan.CountPlanMainConvert; +import com.win.module.wms.dal.dataobject.balance.BalanceDO; +import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; import com.win.module.wms.dal.dataobject.countPlan.CountPlanDetailDO; import com.win.module.wms.dal.dataobject.countPlan.CountPlanMainDO; +import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.mysql.balance.BalanceMapper; import com.win.module.wms.dal.mysql.countPlan.CountPlanDetailMapper; import com.win.module.wms.dal.mysql.countPlan.CountPlanMainMapper; import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper; import com.win.module.wms.enums.plan.PlanStatusState; +import com.win.module.wms.service.countRequest.CountRequestMainService; +import com.win.module.wms.service.itembasic.ItembasicService; +import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -50,12 +63,20 @@ public class CountPlanMainServiceImpl implements CountPlanMainService { private TrendsApi trendsApi; @Resource private SerialNumberApi serialNumberApi; + @Resource + private JobUtils jobUtils; + @Resource + private BalanceMapper balanceMapper; + @Resource + private ItembasicService itembasicService; + @Resource + private CountRequestMainService countRequestMainService; @Override public Long createCountPlanMain(CountPlanMainCreateReqVO createReqVO) { // 插入 CountPlanMainDO countPlanMain = CountPlanMainConvert.INSTANCE.convert(createReqVO); - String number = serialNumberApi.generateCode(RuleCodeEnum.PURCHASE_RECEIPT_REQUEST.getCode()); + String number = serialNumberApi.generateCode(RuleCodeEnum.COUNT_PLAN.getCode()); countPlanMain.setNumber(number); countPlanMainMapper.insert(countPlanMain); List subDOList = CountPlanDetailConvert.INSTANCE.convertList03(createReqVO.getSubList()); @@ -225,19 +246,19 @@ public class CountPlanMainServiceImpl implements CountPlanMainService { return countPlanMainMapper.updateById(mainDO); } - @Override @Transactional public Integer publishCountPlanMain(Long id) { // 校验存在存在下级单据 CountPlanMainDO mainDO = validateCountPlanMainExists(id); PlanStatusState planStatusState = new PlanStatusState(mainDO.getStatus()); - boolean flag = planStatusState.execute(); + boolean flag = planStatusState.publish(); if(!flag) { throw new ServiceException(COUNT_PLAN_CANNOT_PUBLISH); } mainDO.setStatus(planStatusState.getState().getCode());//增加操作记录 trendsApi.createTrends(id, "countPlan", "发布了盘点计划", TrendsTypeEnum.UPDATE); + this.generateRequest(mainDO); return countPlanMainMapper.updateById(mainDO); } @@ -256,4 +277,85 @@ public class CountPlanMainServiceImpl implements CountPlanMainService { return countPlanMainMapper.updateById(mainDO); } + /** + * 生成盘点申请 + * @param mainDO 盘点申请主 + */ + private void generateRequest(CountPlanMainDO mainDO) { + List detailDOList = countPlanDetailMapper.selectList(mainDO.getId()); + List balanceDOList = this.getBalanceDOList(detailDOList); + CountRequestMainCreateReqVO countRequestMainCreateReqVO = new CountRequestMainCreateReqVO(); + countRequestMainCreateReqVO.setPlanNumber(mainDO.getNumber()); + countRequestMainCreateReqVO.setStage("INITIAL_COUNT");//初盘 + countRequestMainCreateReqVO.setWarehouseCode(""); + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountRequest"); + countRequestMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); + countRequestMainCreateReqVO.setRequestTime(LocalDateTime.now()); + countRequestMainCreateReqVO.setDueTime(LocalDateTime.now()); + List subList = new ArrayList<>(); + for(BalanceDO balanceDO : balanceDOList) { + CountRequestDetailCreateReqVO countRequestDetailCreateReqVO = new CountRequestDetailCreateReqVO(); + BeanUtils.copyProperties(balanceDO, countRequestDetailCreateReqVO); + ItembasicDO itembasicDO = itembasicService.selectItembasic(balanceDO.getItemCode()); + countRequestDetailCreateReqVO.setItemName(itembasicDO.getName()); + countRequestDetailCreateReqVO.setItemDesc1(itembasicDO.getDesc1()); + countRequestDetailCreateReqVO.setItemDesc2(itembasicDO.getDesc2()); + subList.add(countRequestDetailCreateReqVO); + } + countRequestMainCreateReqVO.setSubList(subList); + countRequestMainService.createCountRequestMain(countRequestMainCreateReqVO); + } + + /** + * 根据盘点计划范围获取库存余额 + * @param detailDOList 盘点计划范围 + * @return + */ + private List getBalanceDOList(List detailDOList) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + //组装库存余额查询条件 + for(CountPlanDetailDO countPlanDetailDO : detailDOList) { + List paramList = new ArrayList<>(Arrays.asList(countPlanDetailDO.getValue().split(","))); + String inParams = "'" + countPlanDetailDO.getValue() + "'"; + inParams = inParams.replace(",", "','"); + switch (countPlanDetailDO.getType()) { + case "LOCATION_CODE" ://库位编码 + queryWrapper.in("location_code", paramList); + break; + case "LOCATIONGROUP_CODE" : + queryWrapper.in("location_group_code", paramList); + break; + case "AREABASIC_CODE" : + queryWrapper.in("area_code", paramList); + break; + case "WAREHOUSE_CODE" : + queryWrapper.in("warehouse_code", paramList); + break; + case "ITEMS_CODE" : + queryWrapper.in("item_code", paramList); + break; + case "OWNER" : + queryWrapper.in("owner_code", paramList); + break; + case "PROJECT" : + queryWrapper.inSql("item_code", "SELECT `code` FROM basic_itembasic WHERE project IN(" + inParams + ") AND available='TRUE'"); + break; + case "ITEMS_GROUP" : + queryWrapper.inSql("item_code", "SELECT `code` FROM basic_itembasic WHERE item_group IN(" + inParams + ") AND available='TRUE'"); + break; + case "ITEMS_TYPE" : + queryWrapper.inSql("item_code", "SELECT `code` FROM basic_itembasic WHERE `type` IN(" + inParams + ") AND available='TRUE'"); + break; + case "ABC" : + queryWrapper.inSql("item_code", "SELECT `code` FROM basic_itembasic WHERE abc_class IN(" + inParams + ") AND available='TRUE'"); + break; + case "SUPPLIER" : + queryWrapper.inSql("item_code", "SELECT item_code FROM basic_supplieritem WHERE supplier_code IN(" + inParams + ") AND available='TRUE'"); + break; + case "CUSTOMER" : + break; + } + } + return balanceMapper.selectList(queryWrapper); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java index 1cf7f404..ba448651 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/countRequest/CountRequestMainServiceImpl.java @@ -9,7 +9,11 @@ import com.win.module.infra.api.trends.TrendsApi; import com.win.module.infra.enums.TrendsTypeEnum; import com.win.module.system.api.serialnumber.SerialNumberApi; import com.win.module.system.enums.serialNumber.RuleCodeEnum; +import com.win.module.wms.controller.countRecord.vo.CountRecordDetailCreateReqVO; +import com.win.module.wms.controller.countRecord.vo.CountRecordMainCreateReqVO; import com.win.module.wms.controller.countRequest.vo.*; +import com.win.module.wms.convert.countRecord.CountRecordDetailConvert; +import com.win.module.wms.convert.countRecord.CountRecordMainConvert; import com.win.module.wms.convert.countRequest.CountRequestDetailConvert; import com.win.module.wms.convert.countRequest.CountRequestMainConvert; import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO; @@ -18,6 +22,8 @@ import com.win.module.wms.dal.dataobject.countRequest.CountRequestMainDO; import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO; import com.win.module.wms.dal.mysql.countJob.CountJobMainMapper; +import com.win.module.wms.dal.mysql.countRecord.CountRecordDetailMapper; +import com.win.module.wms.dal.mysql.countRecord.CountRecordMainMapper; import com.win.module.wms.dal.mysql.countRequest.CountRequestDetailMapper; import com.win.module.wms.dal.mysql.countRequest.CountRequestMainMapper; import com.win.module.wms.enums.request.RequestStatusEnum; @@ -29,6 +35,7 @@ import com.win.module.wms.service.requestsetting.RequestsettingService; import com.win.module.wms.service.shift.ShiftService; import com.win.module.wms.service.supplieritem.SupplieritemService; import com.win.module.wms.util.JobUtils; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; @@ -74,6 +81,10 @@ public class CountRequestMainServiceImpl implements CountRequestMainService { private TrendsApi trendsApi; @Resource private CountJobMainMapper countJobMainMapper; + @Resource + private CountRecordMainMapper countRecordMainMapper; + @Resource + private CountRecordDetailMapper countRecordDetailMapper; @Override @Transactional @@ -310,12 +321,30 @@ public class CountRequestMainServiceImpl implements CountRequestMainService { } /** - * 生成盘点任务,不要改动事务传播方式,否则会有事务问题 - * @param mainDO 采购收货主 - * @param detailDOList 采购收货子 + * 生成盘点任务 + * @param mainDO 盘点申请主 + * @param detailDOList 盘点申请子 */ private void generateJob(CountRequestMainDO mainDO, List detailDOList) { - + //跳过任务直接生成记录 + if("TRUE".equals(mainDO.getDirectCreateRecord())) { + CountRecordMainCreateReqVO countRecordMainCreateReqVO = new CountRecordMainCreateReqVO(); + BeanUtils.copyProperties(mainDO, countRecordMainCreateReqVO); + countRecordMainCreateReqVO.setRequestNumber(mainDO.getNumber()); + String number = serialNumberApi.generateCode(RuleCodeEnum.COUNT_RECORD.getCode()); + countRecordMainCreateReqVO.setNumber(number); + //增加业务类型 + BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("CountRecord"); + countRecordMainCreateReqVO.setBusinessType(businesstypeDO.getCode()); + countRecordMainMapper.insert(CountRecordMainConvert.INSTANCE.convert(countRecordMainCreateReqVO)); + for(CountRequestDetailDO countRequestDetailDO : detailDOList) { + CountRecordDetailCreateReqVO countRecordDetailCreateReqVO = new CountRecordDetailCreateReqVO(); + BeanUtils.copyProperties(countRequestDetailDO, countRecordDetailCreateReqVO); + countRecordDetailCreateReqVO.setNumber(number); + countRecordDetailMapper.insert(CountRecordDetailConvert.INSTANCE.convert(countRecordDetailCreateReqVO)); + } + return; + } } /** diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java index 51438278..aa4643bf 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/deliverPlan/DeliverPlanMainServiceImpl.java @@ -276,7 +276,7 @@ public class DeliverPlanMainServiceImpl implements DeliverPlanMainService { // 校验存在存在下级单据 DeliverPlanMainDO mainDO = validateDeliverPlanMainExists(id); PlanStatusState planStatusState = new PlanStatusState(mainDO.getStatus()); - boolean flag = planStatusState.execute(); + boolean flag = planStatusState.publish(); if(!flag) { throw new ServiceException(DELIVER_PLAN_CANNOT_PUBLISH); }