Browse Source

备料计划

master
陈薪名 2 years ago
parent
commit
9ef6b923da
  1. 7
      win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java
  2. 17
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/PreparetoissueDetailController.java
  3. 162
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/PreparetoissueMainController.java
  4. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/vo/PreparetoissueDetailBaseVO.java
  5. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/vo/PreparetoissueDetailPageReqVO.java
  6. 8
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/vo/PreparetoissueMainCreateReqVO.java
  7. 34
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/vo/PreparetoissueMainExcelVO.java
  8. 26
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/production/ProductionMainController.java
  9. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/preparetoissue/PreparetoissueDetailConvert.java
  10. 16
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/preparetoissue/PreparetoissueMainConvert.java
  11. 37
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/preparetoissue/PreparetoissueDetailMapper.java
  12. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/preparetoissue/PreparetoissueMainMapper.java
  13. 15
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueDetailService.java
  14. 89
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueDetailServiceImpl.java
  15. 33
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueMainService.java
  16. 304
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueMainServiceImpl.java
  17. 33
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java

7
win-module-wms/win-module-wms-api/src/main/java/com/win/module/wms/enums/ErrorCodeConstants.java

@ -499,6 +499,13 @@ public interface ErrorCodeConstants {
//备料计划子ErrorCode
ErrorCode PREPARETOISSUE_DETAIL_NOT_EXISTS = new ErrorCode(1_000_085_001, "备料计划子不存在");
ErrorCode PREPARETOISSUE_REQUEST_IMPORT_LIST_IS_EMPTY = new ErrorCode(1_000_085_002, "导入备料计划不能为空");
ErrorCode PREPARETOISSUE_MAIN_CANNOT_CLOSE = new ErrorCode(1_000_085_003, "备料计划状态不支持关闭");
ErrorCode PREPARETOISSUE_MAIN_CANNOT_SUBMIT = new ErrorCode(1_000_085_004, "备料计划状态不支持提交");
ErrorCode PREPARETOISSUE_MAIN_CANNOT_OPEN = new ErrorCode(1_000_085_005, "备料计划状态不支持打开");
ErrorCode PREPARETOISSUE_MAIN_CANNOT_REJECT = new ErrorCode(1_000_085_006, "备料计划状态不支持驳回");
ErrorCode PREPARETOISSUE_MAIN_CANNOT_AGREE = new ErrorCode(1_000_085_007, "备料计划状态不支持审批通过");
ErrorCode PREPARETOISSUE_MAIN_CANNOT_PUBLISH = new ErrorCode(1_000_085_008, "备料计划状态不支持发布");
ErrorCode PREPARETOISSUE_MAIN_CANNOT_RESETTING = new ErrorCode(1_000_085_009, "备料计划状态不支持重置");
//补料申请主ErrorCode
ErrorCode REPLEINSH_REQUEST_MAIN_NOT_EXISTS = new ErrorCode(1_000_086_000, "补料申请主不存在");

17
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/PreparetoissueDetailController.java

@ -90,23 +90,6 @@ public class PreparetoissueDetailController {
return success(PreparetoissueDetailConvert.INSTANCE.convertPage(pageResult));
}
@GetMapping("/export-excel")
@Operation(summary = "导出备料计划子 Excel")
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-detail:export')")
@OperateLog(type = EXPORT)
public void exportPreparetoissueDetailExcel(@Valid PreparetoissueDetailExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<PreparetoissueDetailDO> list = preparetoissueDetailService.getPreparetoissueDetailList(exportReqVO);
// 导出 Excel
List<PreparetoissueDetailExcelVO> datas = PreparetoissueDetailConvert.INSTANCE.convertList02(list);
for(PreparetoissueDetailExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
ExcelUtils.write(response, "备料计划子.xls", "数据", PreparetoissueDetailExcelVO.class, datas);
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得备料计划子分页")
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-detail:query')")

162
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/PreparetoissueMainController.java

@ -3,14 +3,26 @@ package com.win.module.wms.controller.preparetoissue;
import com.win.framework.common.pojo.CommonResult;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.dict.core.util.DictFrameworkUtils;
import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.preparetoissue.vo.*;
import com.win.module.wms.controller.production.vo.ProductionMainExcelVO;
import com.win.module.wms.controller.production.vo.ProductionMainImportVO;
import com.win.module.wms.convert.preparetoissue.PreparetoissueDetailConvert;
import com.win.module.wms.convert.preparetoissue.PreparetoissueMainConvert;
import com.win.module.wms.convert.production.ProductionMainConvert;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueDetailDO;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueMainDO;
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import com.win.module.wms.dal.mysql.production.ProductionDetailMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.preparetoissue.PreparetoissueDetailService;
import com.win.module.wms.service.preparetoissue.PreparetoissueMainService;
import com.win.module.wms.service.production.ProductionMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -22,8 +34,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import java.util.*;
import static com.win.framework.common.pojo.CommonResult.success;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@ -34,10 +45,16 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Validated
public class PreparetoissueMainController {
@Resource
private PreparetoissueDetailService preparetoissueDetailService;
@Resource
private PreparetoissueMainService preparetoissueMainService;
@Resource
private AdminUserApi userApi;
@Resource
private ProductionMainService productionMainService;
@Resource
private ProductionDetailMapper productionDetailMapper;
@PostMapping("/create")
@Operation(summary = "创建备料计划主")
@ -89,6 +106,35 @@ public class PreparetoissueMainController {
return success(PreparetoissueMainConvert.INSTANCE.convertPage(pageResult));
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得备料计划主分页")
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:query')")
public CommonResult<PageResult<PreparetoissueMainRespVO>> getPreparetoissueMainSenior(@Valid @RequestBody CustomConditions conditions) {
PageResult<PreparetoissueMainDO> pageResult = preparetoissueMainService.getPreparetoissueMainSenior(conditions);
PageResult<PreparetoissueMainRespVO> result = PreparetoissueMainConvert.INSTANCE.convertPage(pageResult);
for(PreparetoissueMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
return success(result);
}
private List<PreparetoissueMainExcelVO> getExcelVo(List<PreparetoissueMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(13, available);
List<PreparetoissueMainExcelVO> resultList = new ArrayList<>();
// 导出
for(PreparetoissueMainDO mainDO : list) {
List<PreparetoissueDetailDO> subList = preparetoissueDetailService.selectList(mainDO.getId());
for(PreparetoissueDetailDO detailDO : subList) {
PreparetoissueMainExcelVO vo = PreparetoissueMainConvert.INSTANCE.convert(mainDO, detailDO);
resultList.add(vo);
}
}
return resultList;
}
@GetMapping("/export-excel")
@Operation(summary = "导出备料计划主 Excel")
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:export')")
@ -96,28 +142,108 @@ public class PreparetoissueMainController {
public void exportPreparetoissueMainExcel(@Valid PreparetoissueMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<PreparetoissueMainDO> list = preparetoissueMainService.getPreparetoissueMainList(exportReqVO);
// 导出 Excel
List<PreparetoissueMainExcelVO> datas = PreparetoissueMainConvert.INSTANCE.convertList02(list);
for(PreparetoissueMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<PreparetoissueMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
for(PreparetoissueMainExcelVO vo : resultList) {
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname());
//后端创建个字段作为前端展示的虚拟字段
vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname());
}
ExcelUtils.write(response, "备料计划主.xls", "数据", PreparetoissueMainExcelVO.class, datas);
ExcelUtils.write(response, "备料计划主.xls", "备料计划主", PreparetoissueMainExcelVO.class, resultList);
}
@PostMapping("/senior")
@Operation(summary = "高级搜索获得备料计划主分页")
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:query')")
public CommonResult<PageResult<PreparetoissueMainRespVO>> getPreparetoissueMainSenior(@Valid @RequestBody CustomConditions conditions) {
PageResult<PreparetoissueMainDO> pageResult = preparetoissueMainService.getPreparetoissueMainSenior(conditions);
PageResult<PreparetoissueMainRespVO> result = PreparetoissueMainConvert.INSTANCE.convertPage(pageResult);
for(PreparetoissueMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
@GetMapping("/export-excel-senior")
@Operation(summary = "导出备料计划主 Excel")
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:export')")
@OperateLog(type = EXPORT)
public void exportProductionMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<PreparetoissueMainDO> list = preparetoissueMainService.getPreparetoissueMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<PreparetoissueMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
for(PreparetoissueMainExcelVO vo : resultList) {
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname());
//后端创建个字段作为前端展示的虚拟字段
vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname());
}
return success(result);
ExcelUtils.write(response, "生产计划.xlsx", "生产计划", PreparetoissueMainExcelVO.class, resultList, mapDropDown);
}
@GetMapping("/getBomDisassemble")
@Operation(summary = "关闭")
@Parameter(name = "id", description = "编号", required = true)
public CommonResult<List<PreparetoissueDetailDO>> getBomDisassemble(@RequestParam("id") Long id) {
ProductionMainDO productionMainDO = productionMainService.getProductionMain(id);
List<PreparetoissueDetailCreateReqVO> list = preparetoissueMainService.BomDisassemble(productionMainDO, productionDetailMapper.selectList(productionMainDO.getId()));
return success(PreparetoissueDetailConvert.INSTANCE.convertList03(list));
}
@PutMapping("/close")
@Operation(summary = "关闭")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:close')")
public CommonResult<Boolean> closePreparetoissueMain(@RequestParam("id") Long id) {
Integer count = preparetoissueMainService.closeProductionMain(id);
return success(count > 0);
}
@PutMapping("/submit")
@Operation(summary = "提交")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:submit')")
public CommonResult<Boolean> submitPreparetoissueMain(@RequestParam("id") Long id) {
Integer count = preparetoissueMainService.submitProductionMain(id);
return success(count > 0);
}
@PutMapping("/open")
@Operation(summary = "打开")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:open')")
public CommonResult<Boolean> openPreparetoissueMain(@RequestParam("id") Long id) {
Integer count = preparetoissueMainService.openProductionMain(id);
return success(count > 0);
}
@PutMapping("/reject")
@Operation(summary = "驳回")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:reject')")
public CommonResult<Boolean> rejectPreparetoissueMain(@RequestParam("id") Long id) {
Integer count = preparetoissueMainService.rejectProductionMain(id);
return success(count > 0);
}
@PutMapping("/agree")
@Operation(summary = "审批通过")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:agree')")
public CommonResult<Boolean> agreePreparetoissueMain(@RequestParam("id") Long id) {
Integer count = preparetoissueMainService.agreeProductionMain(id);
return success(count > 0);
}
@PutMapping("/publish")
@Operation(summary = "发布")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:publish')")
public CommonResult<Boolean> publishPreparetoissueMain(@RequestParam("id") Long id) {
Integer count = preparetoissueMainService.publishProductionMain(id);
return success(count > 0);
}
@PutMapping("/resetting")
@Operation(summary = "重置")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('wms:preparetoissue-main:resetting')")
public CommonResult<Boolean> resettingPreparetoissueMain(@RequestParam("id") Long id) {
Integer count = preparetoissueMainService.resettingProductionMain(id);
return success(count > 0);
}
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/vo/PreparetoissueDetailBaseVO.java

@ -44,7 +44,6 @@ public class PreparetoissueDetailBaseVO {
private String remark;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "创建时间不能为空")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime createTime;
@ -69,4 +68,7 @@ public class PreparetoissueDetailBaseVO {
@Schema(description = "是否可用")
private String available;
@Schema(description = "主表ID")
private Long masterId;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/vo/PreparetoissueDetailPageReqVO.java

@ -36,6 +36,9 @@ public class PreparetoissueDetailPageReqVO extends PageParam {
@Schema(description = "备注")
private String remark;
@Schema(description = "主表ID")
private String masterId;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;

8
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/vo/PreparetoissueMainCreateReqVO.java

@ -1,12 +1,20 @@
package com.win.module.wms.controller.preparetoissue.vo;
import com.win.framework.excel.core.annotations.SubObject;
import com.win.module.wms.controller.production.vo.ProductionDetailCreateReqVO;
import lombok.*;
import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
@Schema(description = "管理后台 - 备料计划主创建 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PreparetoissueMainCreateReqVO extends PreparetoissueMainBaseVO {
@SubObject
@Schema(description = "子表数据")
private List<PreparetoissueDetailCreateReqVO> subList;
}

34
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/preparetoissue/vo/PreparetoissueMainExcelVO.java

@ -1,7 +1,10 @@
package com.win.module.wms.controller.preparetoissue.vo;
import com.win.module.wms.enums.DictTypeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
@ -65,14 +68,39 @@ public class PreparetoissueMainExcelVO {
@DictFormat("plan_status") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String status;
@ExcelProperty("是否可用")
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String available;
@ExcelProperty("最后更新时间")
private LocalDateTime updateTime;
@ExcelProperty("最后更新者用户名")
private String updater;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat("true_false") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String available;
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("目标库位")
private String toLocationCode;
@ExcelProperty("工位")
private String workStation;
@ExcelProperty("截止时间")
private LocalDateTime dueTime;
@ExcelProperty("计划数量")
private BigDecimal planQty;
@ExcelProperty("计量单位")
private String uom;
@ExcelProperty("是否可用")
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String availableDetail;
@ExcelProperty("备注")
private String remarkDetail;
}

26
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/production/ProductionMainController.java

@ -100,7 +100,14 @@ public class ProductionMainController {
@PreAuthorize("@ss.hasPermission('wms:production-main:query')")
public CommonResult<PageResult<ProductionMainRespVO>> getProductionMainPage(@Valid ProductionMainPageReqVO pageVO) {
PageResult<ProductionMainDO> pageResult = productionMainService.getProductionMainPage(pageVO);
return success(ProductionMainConvert.INSTANCE.convertPage(pageResult));
// return success(ProductionMainConvert.INSTANCE.convertPage(pageResult));
PageResult<ProductionMainRespVO> result = ProductionMainConvert.INSTANCE.convertPage(pageResult);
result.getList().forEach(item -> {
//后端创建个字段作为前端展示的虚拟字段
item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname());
item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname());
});
return success(result);
}
@PostMapping("/senior")
@ -109,11 +116,11 @@ public class ProductionMainController {
public CommonResult<PageResult<ProductionMainRespVO>> getProductionMainSenior(@Valid @RequestBody CustomConditions conditions) {
PageResult<ProductionMainDO> pageResult = productionMainService.getProductionMainSenior(conditions);
PageResult<ProductionMainRespVO> result = ProductionMainConvert.INSTANCE.convertPage(pageResult);
for(ProductionMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
result.getList().forEach(item -> {
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname());
item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname());
});
return success(result);
}
@ -142,12 +149,11 @@ public class ProductionMainController {
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<ProductionMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
for(ProductionMainExcelVO vo : resultList) {
resultList.forEach(item -> {
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(userApi.getUser(Long.valueOf(vo.getCreator())).getNickname());
//后端创建个字段作为前端展示的虚拟字段
vo.setUpdater(userApi.getUser(Long.valueOf(vo.getUpdater())).getNickname());
}
item.setCreator(userApi.getUser(Long.valueOf(item.getCreator())).getNickname());
item.setUpdater(userApi.getUser(Long.valueOf(item.getUpdater())).getNickname());
});
ExcelUtils.write(response, "生产计划.xls", "生产计划", ProductionMainExcelVO.class, resultList);
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/preparetoissue/PreparetoissueDetailConvert.java

@ -8,6 +8,8 @@ import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailCreat
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailExcelVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailRespVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailUpdateReqVO;
import com.win.module.wms.controller.production.vo.ProductionDetailCreateReqVO;
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueDetailDO;
@ -34,4 +36,6 @@ public interface PreparetoissueDetailConvert {
List<PreparetoissueDetailExcelVO> convertList02(List<PreparetoissueDetailDO> list);
List<PreparetoissueDetailDO> convertList03(List<PreparetoissueDetailCreateReqVO> list);
}

16
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/preparetoissue/PreparetoissueMainConvert.java

@ -8,7 +8,10 @@ import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainCreateR
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainExcelVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainRespVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainUpdateReqVO;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueMainDO;
@ -33,5 +36,16 @@ public interface PreparetoissueMainConvert {
PageResult<PreparetoissueMainRespVO> convertPage(PageResult<PreparetoissueMainDO> page);
List<PreparetoissueMainExcelVO> convertList02(List<PreparetoissueMainDO> list);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
@Mapping(source = "mainDO.remark", target = "remark"),
@Mapping(source = "mainDO.createTime", target = "createTime"),
@Mapping(source = "mainDO.creator", target = "creator"),
@Mapping(source = "mainDO.updateTime", target = "updateTime"),
@Mapping(source = "mainDO.updater", target = "updater"),
@Mapping(source = "mainDO.available", target = "available"),
@Mapping(source = "detailDO.available", target = "availableDetail"),
@Mapping(source = "detailDO.remark", target = "remarkDetail"),
})
PreparetoissueMainExcelVO convert(PreparetoissueMainDO mainDO, PreparetoissueDetailDO detailDO);
}

37
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/preparetoissue/PreparetoissueDetailMapper.java

@ -10,6 +10,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailExportReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailPageReqVO;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
import org.apache.ibatis.annotations.Mapper;
/**
@ -22,6 +23,7 @@ public interface PreparetoissueDetailMapper extends BaseMapperX<PreparetoissueDe
default PageResult<PreparetoissueDetailDO> selectPage(PreparetoissueDetailPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<PreparetoissueDetailDO>()
.eq(PreparetoissueDetailDO::getMasterId, reqVO.getMasterId())
.eqIfPresent(PreparetoissueDetailDO::getToLocationCode, reqVO.getToLocationCode())
.eqIfPresent(PreparetoissueDetailDO::getWorkStation, reqVO.getWorkStation())
.betweenIfPresent(PreparetoissueDetailDO::getDueTime, reqVO.getDueTime())
@ -42,22 +44,27 @@ public interface PreparetoissueDetailMapper extends BaseMapperX<PreparetoissueDe
return selectPage(conditions, QueryWrapperUtils.structure(conditions));
}
default List<PreparetoissueDetailDO> selectList(PreparetoissueDetailExportReqVO reqVO) {
default List<PreparetoissueDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<PreparetoissueDetailDO>()
.eqIfPresent(PreparetoissueDetailDO::getToLocationCode, reqVO.getToLocationCode())
.eqIfPresent(PreparetoissueDetailDO::getWorkStation, reqVO.getWorkStation())
.betweenIfPresent(PreparetoissueDetailDO::getDueTime, reqVO.getDueTime())
.eqIfPresent(PreparetoissueDetailDO::getNumber, reqVO.getNumber())
.eqIfPresent(PreparetoissueDetailDO::getItemCode, reqVO.getItemCode())
.eqIfPresent(PreparetoissueDetailDO::getRemark, reqVO.getRemark())
.betweenIfPresent(PreparetoissueDetailDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(PreparetoissueDetailDO::getCreator, reqVO.getCreator())
.eqIfPresent(PreparetoissueDetailDO::getPlanQty, reqVO.getPlanQty())
.eqIfPresent(PreparetoissueDetailDO::getUom, reqVO.getUom())
.betweenIfPresent(PreparetoissueDetailDO::getUpdateTime, reqVO.getUpdateTime())
.eqIfPresent(PreparetoissueDetailDO::getUpdater, reqVO.getUpdater())
.eqIfPresent(PreparetoissueDetailDO::getAvailable, reqVO.getAvailable())
.orderByDesc(PreparetoissueDetailDO::getId));
.eq(PreparetoissueDetailDO::getMasterId, masterId));
}
// default List<PreparetoissueDetailDO> selectList(PreparetoissueDetailExportReqVO reqVO) {
// return selectList(new LambdaQueryWrapperX<PreparetoissueDetailDO>()
// .eqIfPresent(PreparetoissueDetailDO::getToLocationCode, reqVO.getToLocationCode())
// .eqIfPresent(PreparetoissueDetailDO::getWorkStation, reqVO.getWorkStation())
// .betweenIfPresent(PreparetoissueDetailDO::getDueTime, reqVO.getDueTime())
// .eqIfPresent(PreparetoissueDetailDO::getNumber, reqVO.getNumber())
// .eqIfPresent(PreparetoissueDetailDO::getItemCode, reqVO.getItemCode())
// .eqIfPresent(PreparetoissueDetailDO::getRemark, reqVO.getRemark())
// .betweenIfPresent(PreparetoissueDetailDO::getCreateTime, reqVO.getCreateTime())
// .eqIfPresent(PreparetoissueDetailDO::getCreator, reqVO.getCreator())
// .eqIfPresent(PreparetoissueDetailDO::getPlanQty, reqVO.getPlanQty())
// .eqIfPresent(PreparetoissueDetailDO::getUom, reqVO.getUom())
// .betweenIfPresent(PreparetoissueDetailDO::getUpdateTime, reqVO.getUpdateTime())
// .eqIfPresent(PreparetoissueDetailDO::getUpdater, reqVO.getUpdater())
// .eqIfPresent(PreparetoissueDetailDO::getAvailable, reqVO.getAvailable())
// .orderByDesc(PreparetoissueDetailDO::getId));
// }
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/preparetoissue/PreparetoissueMainMapper.java

@ -8,6 +8,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainExportReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainPageReqVO;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueMainDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@ -68,4 +69,7 @@ public interface PreparetoissueMainMapper extends BaseMapperX<PreparetoissueMain
.orderByDesc(PreparetoissueMainDO::getId));
}
default List<PreparetoissueMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
}

15
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueDetailService.java

@ -2,11 +2,11 @@ package com.win.module.wms.service.preparetoissue;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailCreateReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailExportReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailPageReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailUpdateReqVO;
import com.win.module.wms.controller.preparetoissue.vo.*;
import com.win.module.wms.controller.production.vo.ProductionMainExportReqVO;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueDetailDO;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueMainDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import javax.validation.Valid;
import java.util.Collection;
@ -32,14 +32,14 @@ public interface PreparetoissueDetailService {
*
* @param updateReqVO 更新信息
*/
void updatePreparetoissueDetail(@Valid PreparetoissueDetailUpdateReqVO updateReqVO);
Integer updatePreparetoissueDetail(@Valid PreparetoissueDetailUpdateReqVO updateReqVO);
/**
* 删除备料计划子
*
* @param id 编号
*/
void deletePreparetoissueDetail(Long id);
Integer deletePreparetoissueDetail(Long id);
/**
* 获得备料计划子
@ -71,7 +71,7 @@ public interface PreparetoissueDetailService {
* @param exportReqVO 查询条件
* @return 备料计划子列表
*/
List<PreparetoissueDetailDO> getPreparetoissueDetailList(PreparetoissueDetailExportReqVO exportReqVO);
// List<PreparetoissueDetailDO> getPreparetoissueDetailList(PreparetoissueDetailExportReqVO exportReqVO);
/**
* 获得用高级搜索户分页列表
@ -82,4 +82,5 @@ public interface PreparetoissueDetailService {
PageResult<PreparetoissueDetailDO> getPreparetoissueDetailSenior(CustomConditions conditions);
List<PreparetoissueDetailDO> selectList(Long masterId);
}

89
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueDetailServiceImpl.java

@ -2,14 +2,26 @@ package com.win.module.wms.service.preparetoissue;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailCreateReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailExportReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailPageReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailUpdateReqVO;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.preparetoissue.vo.*;
import com.win.module.wms.convert.preparetoissue.PreparetoissueDetailConvert;
import com.win.module.wms.convert.preparetoissue.PreparetoissueMainConvert;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueDetailDO;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueMainDO;
import com.win.module.wms.dal.mysql.preparetoissue.PreparetoissueDetailMapper;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.team.TeamService;
import com.win.module.wms.service.workshop.WorkshopService;
import com.win.module.wms.service.workstation.WorkstationService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
@ -17,6 +29,7 @@ import java.util.Collection;
import java.util.List;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.ITEMBASIC_UOM_EXCEPTION;
import static com.win.module.wms.enums.ErrorCodeConstants.PREPARETOISSUE_DETAIL_NOT_EXISTS;
/**
@ -28,6 +41,26 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PREPARETOISSUE_DETAIL_
@Validated
public class PreparetoissueDetailServiceImpl implements PreparetoissueDetailService {
@Resource
private PreparetoissueMainService preparetoissueMainService;
@Resource
private WorkstationService workstationService;
@Resource
private DictDataApi dictDataApi;
@Resource
private ItembasicService itembasicService;
@Resource
private ProductionlineitemService productionlineitemService;
@Resource
private ShiftService shiftService;
@Resource
private TeamService teamService;
@Resource
private ProductionlineService productionlineService;
@Resource
private WorkshopService workshopService;
@Resource
private TrendsApi trendsApi;
@Resource
private PreparetoissueDetailMapper preparetoissueDetailMapper;
@ -35,26 +68,35 @@ public class PreparetoissueDetailServiceImpl implements PreparetoissueDetailServ
public Long createPreparetoissueDetail(PreparetoissueDetailCreateReqVO createReqVO) {
// 插入
PreparetoissueDetailDO preparetoissueDetail = PreparetoissueDetailConvert.INSTANCE.convert(createReqVO);
validatePreparetoissueDetailCreate(preparetoissueDetail);
preparetoissueDetailMapper.insert(preparetoissueDetail);
//增加操作记录
trendsApi.createTrends(preparetoissueDetail.getId(), "preparetoissueDetail", "增加了备料计划子表", TrendsTypeEnum.CREATE);
// 返回
return preparetoissueDetail.getId();
}
@Override
public void updatePreparetoissueDetail(PreparetoissueDetailUpdateReqVO updateReqVO) {
public Integer updatePreparetoissueDetail(PreparetoissueDetailUpdateReqVO updateReqVO) {
// 校验存在
validatePreparetoissueDetailExists(updateReqVO.getId());
// 更新
PreparetoissueDetailDO updateObj = PreparetoissueDetailConvert.INSTANCE.convert(updateReqVO);
preparetoissueDetailMapper.updateById(updateObj);
validatePreparetoissueDetailCreate(updateObj);
//增加操作记录
trendsApi.createTrends(updateObj.getId(), "preparetoissueDetail", "更新了备料计划子表", TrendsTypeEnum.UPDATE);
return preparetoissueDetailMapper.updateById(updateObj);
}
@Override
public void deletePreparetoissueDetail(Long id) {
@Transactional
public Integer deletePreparetoissueDetail(Long id) {
// 校验存在
validatePreparetoissueDetailExists(id);
//增加操作记录
trendsApi.createTrends(id, "preparetoissueDetail", "删除了备料计划子表", TrendsTypeEnum.DELETE);
// 删除
preparetoissueDetailMapper.deleteById(id);
return preparetoissueDetailMapper.deleteById(id);
}
private void validatePreparetoissueDetailExists(Long id) {
@ -78,14 +120,37 @@ public class PreparetoissueDetailServiceImpl implements PreparetoissueDetailServ
return preparetoissueDetailMapper.selectPage(pageReqVO);
}
@Override
public List<PreparetoissueDetailDO> getPreparetoissueDetailList(PreparetoissueDetailExportReqVO exportReqVO) {
return preparetoissueDetailMapper.selectList(exportReqVO);
}
// @Override
// public List<PreparetoissueDetailDO> getPreparetoissueDetailList(PreparetoissueDetailExportReqVO exportReqVO) {
// return preparetoissueDetailMapper.selectList(exportReqVO);
// }
@Override
public PageResult<PreparetoissueDetailDO> getPreparetoissueDetailSenior(CustomConditions conditions) {
return preparetoissueDetailMapper.selectSenior(conditions);
}
@Override
public List<PreparetoissueDetailDO> selectList(Long masterId) {
return preparetoissueDetailMapper.selectList(masterId);
}
/**
* 新增校验
* @param detailDo
* @return
*/
private void validatePreparetoissueDetailCreate(PreparetoissueDetailDO detailDo) {
// 校验物品代码
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
if (!itembasicDO.getUom().equals(detailDo.getUom())) {
throw exception(ITEMBASIC_UOM_EXCEPTION, dictDataApi.selectDictValue(detailDo.getUom()).getLabel(), dictDataApi.selectDictValue(itembasicDO.getUom()).getLabel());
}
PreparetoissueMainDO mainDo = preparetoissueMainService.getPreparetoissueMain(detailDo.getMasterId());
// 校验工位基础信息
workstationService.selectWorkstationExist(detailDo.getWorkStation(),mainDo.getWorkshop(),mainDo.getProdLine());
// 校验生产线和物品关系
productionlineitemService.productionLineCodeAndpItemCodeExist(mainDo.getProdLine(), detailDo.getItemCode());
}
}

33
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueMainService.java

@ -2,11 +2,10 @@ package com.win.module.wms.service.preparetoissue;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainCreateReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainExportReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainPageReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainUpdateReqVO;
import com.win.module.wms.controller.preparetoissue.vo.*;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueMainDO;
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import javax.validation.Valid;
import java.util.Collection;
@ -32,7 +31,7 @@ public interface PreparetoissueMainService {
*
* @param updateReqVO 更新信息
*/
void updatePreparetoissueMain(@Valid PreparetoissueMainUpdateReqVO updateReqVO);
Integer updatePreparetoissueMain(@Valid PreparetoissueMainUpdateReqVO updateReqVO);
/**
* 删除备料计划主
@ -57,6 +56,14 @@ public interface PreparetoissueMainService {
*/
List<PreparetoissueMainDO> getPreparetoissueMainList(Collection<Long> ids);
/**
* 获得备料计划主列表, 用于 Excel 导出
*
* @param conditions 查询条件
* @return 备料计划主列表
*/
List<PreparetoissueMainDO> getPreparetoissueMainList(CustomConditions conditions);
/**
* 获得备料计划主分页
*
@ -82,4 +89,20 @@ public interface PreparetoissueMainService {
*/
List<PreparetoissueMainDO> getPreparetoissueMainList(PreparetoissueMainExportReqVO exportReqVO);
List<PreparetoissueDetailCreateReqVO> BomDisassemble(ProductionMainDO mainDO, List<ProductionDetailDO> detailDOList);
Integer closeProductionMain(Long id);
Integer submitProductionMain(Long id);
Integer openProductionMain(Long id);
Integer rejectProductionMain(Long id);
Integer agreeProductionMain(Long id);
Integer publishProductionMain(Long id);
Integer resettingProductionMain(Long id);
}

304
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/preparetoissue/PreparetoissueMainServiceImpl.java

@ -1,23 +1,46 @@
package com.win.module.wms.service.preparetoissue;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainCreateReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainExportReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainPageReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainUpdateReqVO;
import com.win.module.infra.api.trends.TrendsApi;
import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.bom.vo.BomExportReqVO;
import com.win.module.wms.controller.preparetoissue.vo.*;
import com.win.module.wms.convert.preparetoissue.PreparetoissueDetailConvert;
import com.win.module.wms.convert.preparetoissue.PreparetoissueMainConvert;
import com.win.module.wms.convert.production.ProductionDetailConvert;
import com.win.module.wms.convert.production.ProductionMainConvert;
import com.win.module.wms.dal.dataobject.bom.BomDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueDetailDO;
import com.win.module.wms.dal.dataobject.preparetoissue.PreparetoissueMainDO;
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
import com.win.module.wms.dal.dataobject.production.ProductionMainDO;
import com.win.module.wms.dal.mysql.preparetoissue.PreparetoissueDetailMapper;
import com.win.module.wms.dal.mysql.preparetoissue.PreparetoissueMainMapper;
import com.win.module.wms.enums.plan.PlanStatusState;
import com.win.module.wms.service.bom.BomService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.productionline.ProductionlineService;
import com.win.module.wms.service.productionlineitem.ProductionlineitemService;
import com.win.module.wms.service.shift.ShiftService;
import com.win.module.wms.service.team.TeamService;
import com.win.module.wms.service.workshop.WorkshopService;
import com.win.module.wms.service.workstation.WorkstationService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;
import java.math.BigDecimal;
import java.util.*;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.module.wms.enums.ErrorCodeConstants.PREPARETOISSUE_MAIN_NOT_EXISTS;
import static com.win.module.wms.enums.ErrorCodeConstants.*;
/**
* 备料计划主 Service 实现类
@ -27,26 +50,68 @@ import static com.win.module.wms.enums.ErrorCodeConstants.PREPARETOISSUE_MAIN_NO
@Service
@Validated
public class PreparetoissueMainServiceImpl implements PreparetoissueMainService {
@Resource
private BomService bomService;
@Resource
private WorkstationService workstationService;
@Resource
private DictDataApi dictDataApi;
@Resource
private ItembasicService itembasicService;
@Resource
private ProductionlineitemService productionlineitemService;
@Resource
private ShiftService shiftService;
@Resource
private TeamService teamService;
@Resource
private ProductionlineService productionlineService;
@Resource
private WorkshopService workshopService;
@Resource
private PreparetoissueMainMapper preparetoissueMainMapper;
@Resource
private PreparetoissueDetailMapper preparetoissueDetailMapper;
@Resource
private TrendsApi trendsApi;
@Resource
private SerialNumberApi serialNumberApi;
@Override
@Transactional
public Long createPreparetoissueMain(PreparetoissueMainCreateReqVO createReqVO) {
// 插入
PreparetoissueMainDO preparetoissueMain = PreparetoissueMainConvert.INSTANCE.convert(createReqVO);
preparetoissueMainMapper.insert(preparetoissueMain);
PreparetoissueMainDO mainDO = PreparetoissueMainConvert.INSTANCE.convert(createReqVO);
List<PreparetoissueDetailDO> subDOList = PreparetoissueDetailConvert.INSTANCE.convertList03(createReqVO.getSubList());
for (PreparetoissueDetailDO detailDO : subDOList) {
this.validatePreparetoissueDetailCreate(mainDO, detailDO);
}
String number = serialNumberApi.generateCode(RuleCodeEnum.MATERIAL_PREPARE_PLAN.getCode());
mainDO.setNumber(number);
mainDO.setBusinessType("Issue"); // 业务类型:发料
preparetoissueMainMapper.insert(mainDO);
for (PreparetoissueDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number);
}
preparetoissueDetailMapper.insertBatch(subDOList);
//增加操作记录
trendsApi.createTrends(mainDO.getId(), "preparetoissueMain", "增加了备料计划", TrendsTypeEnum.CREATE);
// 返回
return preparetoissueMain.getId();
return mainDO.getId();
}
@Override
public void updatePreparetoissueMain(PreparetoissueMainUpdateReqVO updateReqVO) {
@Transactional
public Integer updatePreparetoissueMain(PreparetoissueMainUpdateReqVO updateReqVO) {
// 校验存在
validatePreparetoissueMainExists(updateReqVO.getId());
// 更新
PreparetoissueMainDO updateObj = PreparetoissueMainConvert.INSTANCE.convert(updateReqVO);
preparetoissueMainMapper.updateById(updateObj);
this.validatePreparetoissueMainUpdate(updateObj);
//增加操作记录
trendsApi.createTrends(updateObj.getId(), "preparetoissueMain", "更新了备料计划", TrendsTypeEnum.UPDATE);
return preparetoissueMainMapper.updateById(updateObj);
}
@Override
@ -57,10 +122,12 @@ public class PreparetoissueMainServiceImpl implements PreparetoissueMainService
preparetoissueMainMapper.deleteById(id);
}
private void validatePreparetoissueMainExists(Long id) {
if (preparetoissueMainMapper.selectById(id) == null) {
private PreparetoissueMainDO validatePreparetoissueMainExists(Long id) {
PreparetoissueMainDO existPreparetoissueMainDO = preparetoissueMainMapper.selectById(id);
if (existPreparetoissueMainDO == null) {
throw exception(PREPARETOISSUE_MAIN_NOT_EXISTS);
}
return existPreparetoissueMainDO;
}
@Override
@ -73,6 +140,11 @@ public class PreparetoissueMainServiceImpl implements PreparetoissueMainService
return preparetoissueMainMapper.selectBatchIds(ids);
}
@Override
public List<PreparetoissueMainDO> getPreparetoissueMainList(CustomConditions conditions) {
return preparetoissueMainMapper.selectSeniorList(conditions);
}
@Override
public PageResult<PreparetoissueMainDO> getPreparetoissueMainPage(PreparetoissueMainPageReqVO pageReqVO) {
return preparetoissueMainMapper.selectPage(pageReqVO);
@ -88,4 +160,206 @@ public class PreparetoissueMainServiceImpl implements PreparetoissueMainService
return preparetoissueMainMapper.selectList(exportReqVO);
}
@Override
@Transactional
public Integer closeProductionMain(Long id) {
// 校验存在存在下级单据
PreparetoissueMainDO mainDO = validatePreparetoissueMainExists(id);
PlanStatusState planStatusState = new PlanStatusState(mainDO.getStatus());
boolean flag = planStatusState.close();
if(!flag) {
throw new ServiceException(PREPARETOISSUE_MAIN_CANNOT_CLOSE);
}
mainDO.setStatus(planStatusState.getState().getCode());
//增加操作记录
trendsApi.createTrends(id, "preparetoissueMain", "关闭了备料计划", TrendsTypeEnum.UPDATE);
return preparetoissueMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer submitProductionMain(Long id) {
PreparetoissueMainDO mainDO = validatePreparetoissueMainExists(id);
PlanStatusState planStatusState = new PlanStatusState(mainDO.getStatus());
boolean flag = planStatusState.submit();
if(!flag) {
throw new ServiceException(PREPARETOISSUE_MAIN_CANNOT_SUBMIT);
}
mainDO.setStatus(planStatusState.getState().getCode());
//增加操作记录
trendsApi.createTrends(id, "preparetoissueMain", "提交了备料计划", TrendsTypeEnum.UPDATE);
return preparetoissueMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer openProductionMain(Long id) {
PreparetoissueMainDO mainDO = validatePreparetoissueMainExists(id);
PlanStatusState planStatusState = new PlanStatusState(mainDO.getStatus());
boolean flag = planStatusState.open();
if(!flag) {
throw new ServiceException(PREPARETOISSUE_MAIN_CANNOT_OPEN);
}
mainDO.setStatus(planStatusState.getState().getCode());
//增加操作记录
trendsApi.createTrends(id, "preparetoissueMain", "打开了备料计划", TrendsTypeEnum.UPDATE);
return preparetoissueMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer rejectProductionMain(Long id) {
PreparetoissueMainDO mainDO = validatePreparetoissueMainExists(id);
PlanStatusState planStatusState = new PlanStatusState(mainDO.getStatus());
boolean flag = planStatusState.reject();
if(!flag) {
throw new ServiceException(PREPARETOISSUE_MAIN_CANNOT_REJECT);
}
mainDO.setStatus(planStatusState.getState().getCode());
//增加操作记录
trendsApi.createTrends(id, "preparetoissueMain", "驳回了备料计划", TrendsTypeEnum.UPDATE);
return preparetoissueMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer agreeProductionMain(Long id) {
PreparetoissueMainDO mainDO = validatePreparetoissueMainExists(id);
PlanStatusState planStatusState = new PlanStatusState(mainDO.getStatus());
boolean flag = planStatusState.agree();
if(!flag) {
throw new ServiceException(PREPARETOISSUE_MAIN_CANNOT_AGREE);
}
mainDO.setStatus(planStatusState.getState().getCode());
//增加操作记录
trendsApi.createTrends(id, "preparetoissueMain", "审批通过了备料计划", TrendsTypeEnum.UPDATE);
return preparetoissueMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer publishProductionMain(Long id) {
PreparetoissueMainDO mainDO = validatePreparetoissueMainExists(id);
PlanStatusState planStatusState = new PlanStatusState(mainDO.getStatus());
boolean flag = planStatusState.publish();
if(!flag) {
throw new ServiceException(PREPARETOISSUE_MAIN_CANNOT_PUBLISH);
}
mainDO.setStatus(planStatusState.getState().getCode());
// 生成申请单据
// this.generateRequest(mainDO, productionDetailMapper.selectList(mainDO.getId()));
//增加操作记录
trendsApi.createTrends(id, "preparetoissueMain", "发布了备料计划", TrendsTypeEnum.UPDATE);
return preparetoissueMainMapper.updateById(mainDO);
}
@Override
@Transactional
public Integer resettingProductionMain(Long id) {
PreparetoissueMainDO mainDO = validatePreparetoissueMainExists(id);
PlanStatusState planStatusState = new PlanStatusState(mainDO.getStatus());
boolean flag = planStatusState.resetting();
if(!flag) {
throw new ServiceException(PREPARETOISSUE_MAIN_CANNOT_RESETTING);
}
mainDO.setStatus(planStatusState.getState().getCode());
//增加操作记录
trendsApi.createTrends(id, "preparetoissueMain", "重置了备料计划", TrendsTypeEnum.UPDATE);
return preparetoissueMainMapper.updateById(mainDO);
}
/**
* 新增校验
* @param detailDo
* @return
*/
private void validatePreparetoissueDetailCreate(PreparetoissueMainDO mainDo, PreparetoissueDetailDO detailDo) {
// 校验物品代码
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
if (!itembasicDO.getUom().equals(detailDo.getUom())) {
throw exception(ITEMBASIC_UOM_EXCEPTION, dictDataApi.selectDictValue(detailDo.getUom()).getLabel(), dictDataApi.selectDictValue(itembasicDO.getUom()).getLabel());
}
// 校验车间 基础信息
workshopService.selectWorkshopExist(mainDo.getWorkshop());
// 校验生产线基础信息
productionlineService.productionLineCodeExist(mainDo.getProdLine());
// 校验班组基础信息
teamService.selectTeamExist(mainDo.getTeam());
// 校验班次基础信息
shiftService.selectShiftExist(mainDo.getShift());
// 校验工位基础信息
if (detailDo.getWorkStation() != null) {
workstationService.selectWorkstationExist(detailDo.getWorkStation(),mainDo.getWorkshop(),mainDo.getProdLine());
}
// 校验生产线和物品关系
// productionlineitemService.productionLineCodeAndpItemCodeExist(mainDo.getProdLine(), detailDo.getItemCode());
}
/**
* 编辑校验
* @param mainDo
*/
public void validatePreparetoissueMainUpdate(PreparetoissueMainDO mainDo) {
// 校验车间 基础信息
workshopService.selectWorkshopExist(mainDo.getWorkshop());
// 校验生产线基础信息
productionlineService.productionLineCodeExist(mainDo.getProdLine());
// 校验班组基础信息
teamService.selectTeamExist(mainDo.getTeam());
// 校验班次基础信息
shiftService.selectShiftExist(mainDo.getShift());
}
/**
* bom拆解
* @param mainDO
* @param detailDOList
* @return
*/
@Override
public List<PreparetoissueDetailCreateReqVO> BomDisassemble(ProductionMainDO mainDO, List<ProductionDetailDO> detailDOList ) {
List<PreparetoissueDetailCreateReqVO> subList = new ArrayList<>();
detailDOList.forEach(item -> {
List<Map<String,Object>> list = new ArrayList<>();
this.BomRecursion(item.getItemCode(), list);
list.forEach(itemBom -> {
PreparetoissueDetailCreateReqVO preparetoissueDetailCreateReqVO = new PreparetoissueDetailCreateReqVO();
preparetoissueDetailCreateReqVO.setAvailable(item.getAvailable());
preparetoissueDetailCreateReqVO.setToLocationCode(productionlineitemService.productionLineCodeAndpItemCodeExist(mainDO.getProductionLine(), item.getItemCode()).getRawLocationCode());
preparetoissueDetailCreateReqVO.setMasterId(item.getMasterId());
preparetoissueDetailCreateReqVO.setItemCode(itemBom.get("itemCode").toString());
preparetoissueDetailCreateReqVO.setPlanQty(new BigDecimal(itemBom.get("qty").toString()).multiply(item.getPlanQty()));
preparetoissueDetailCreateReqVO.setUom(itemBom.get("uom").toString());
subList.add(preparetoissueDetailCreateReqVO);
});
});
return subList;
}
/**
* bom解析递归
* @param itemCode
* @param list
*/
private void BomRecursion (String itemCode,List<Map<String,Object>> list) {
BomExportReqVO bomExportReqVO = new BomExportReqVO();
bomExportReqVO.setProductItemCode(itemCode);
bomExportReqVO.setAvailable("TRUE");
List<BomDO> bomDOList = bomService.getBomList(bomExportReqVO);
bomDOList.forEach(item -> {
// 判断物品是否是虚零件
if (itembasicService.selectItembasic(item.getComponentItemCode()).getIsPhantom().equals("TRUE")) {
this.BomRecursion(item.getComponentItemCode(),list);
} else {
Map<String,Object> map = new HashMap<>();
map.put("itemCode",item.getComponentItemCode());
map.put("uom",item.getComponentUom());
map.put("qty",item.getComponentQty());
list.add(map);
}
});
}
}

33
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/production/ProductionMainServiceImpl.java

@ -15,6 +15,10 @@ import com.win.module.infra.enums.TrendsTypeEnum;
import com.win.module.system.api.dict.DictDataApi;
import com.win.module.system.api.serialnumber.SerialNumberApi;
import com.win.module.system.enums.serialNumber.RuleCodeEnum;
import com.win.module.wms.controller.bom.vo.BomBaseVO;
import com.win.module.wms.controller.bom.vo.BomExportReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueDetailCreateReqVO;
import com.win.module.wms.controller.preparetoissue.vo.PreparetoissueMainCreateReqVO;
import com.win.module.wms.controller.production.vo.*;
import com.win.module.wms.controller.work.vo.WorkDetailCreateReqVO;
import com.win.module.wms.controller.work.vo.WorkMainImportErrorVO;
@ -23,6 +27,7 @@ import com.win.module.wms.convert.production.ProductionMainConvert;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert;
import com.win.module.wms.convert.work.WorkDetailConvert;
import com.win.module.wms.convert.work.WorkMainConvert;
import com.win.module.wms.dal.dataobject.bom.BomDO;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.production.ProductionDetailDO;
@ -42,6 +47,7 @@ import com.win.module.wms.dal.mysql.production.ProductionMainMapper;
import com.win.module.wms.dal.mysql.productreceiptJob.ProductreceiptJobDetailMapper;
import com.win.module.wms.dal.mysql.productreceiptRequest.ProductreceiptRequestMainMapper;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.enums.plan.PlanStatusEnum;
import com.win.module.wms.enums.plan.PlanStatusState;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
@ -71,10 +77,7 @@ import javax.validation.Validator;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.*;
import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.win.framework.common.pojo.CommonResult.success;
@ -99,9 +102,13 @@ public class ProductionMainServiceImpl implements ProductionMainService {
private SerialNumberApi serialNumberApi;
@Resource
private Validator validator;
@Resource
private BomService bomService;
@Resource
PreparetoissueMainService preparetoissueMainService;
@Resource
private ItembasicService itembasicService;
@Resource
private ProductionMainMapper productionMainMapper;
@Resource
@ -111,8 +118,6 @@ public class ProductionMainServiceImpl implements ProductionMainService {
@Resource
private ShiftService shiftService;
@Resource
private ItembasicService itembasicService;
@Resource
private SupplieritemService supplieritemService;
@Resource
private JobUtils jobUtils;
@ -519,7 +524,19 @@ public class ProductionMainServiceImpl implements ProductionMainService {
private void generateRequest(ProductionMainDO mainDO, List<ProductionDetailDO> detailDOList ) {
// 判断单据设置:该计划发布后 是否创建 备料计划
if(switchMapper.selectByCode("CreatePrepareToIssuePlanAfterProductionPlanPublished").getEffectiveSetValue().equals("TRUE")) {
// TODO:先做备料计划导入新增编辑 之后再补充这里
PreparetoissueMainCreateReqVO preparetoissueMainCreateReqVO = new PreparetoissueMainCreateReqVO();
preparetoissueMainCreateReqVO.setBeginTime(mainDO.getBeginTime());
preparetoissueMainCreateReqVO.setEndTime(mainDO.getEndTime());
preparetoissueMainCreateReqVO.setProductionPlanNumber(mainDO.getNumber());
preparetoissueMainCreateReqVO.setWorkshop(mainDO.getWorkshop());
preparetoissueMainCreateReqVO.setProdLine(mainDO.getProductionLine());
preparetoissueMainCreateReqVO.setShift(mainDO.getShift());
preparetoissueMainCreateReqVO.setTeam(mainDO.getTeam());
preparetoissueMainCreateReqVO.setPlanDate(mainDO.getPlanDate());
preparetoissueMainCreateReqVO.setAvailable(mainDO.getAvailable());
preparetoissueMainCreateReqVO.setStatus(PlanStatusEnum.NEW.getCode());
preparetoissueMainCreateReqVO.setSubList(preparetoissueMainService.BomDisassemble(mainDO,detailDOList));
preparetoissueMainService.createPreparetoissueMain(preparetoissueMainCreateReqVO);
}
// 判断单据设置:该计划发布后 是否创建 制品收货申请
if(switchMapper.selectByCode("CreateProductReciptRequestAfterProductionPlanPublished").getEffectiveSetValue().equals("TRUE")) {

Loading…
Cancel
Save