Browse Source

生产订单

master
陈薪名 2 years ago
parent
commit
53f0195a97
  1. 18
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkDetailController.java
  2. 71
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkMainController.java
  3. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainBaseVO.java
  4. 34
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExcelVO.java
  5. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExportReqVO.java
  6. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainImportVO.java
  7. 28
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkMainConvert.java
  8. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/work/WorkDetailDO.java
  9. 35
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkDetailMapper.java
  10. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java
  11. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailService.java
  12. 10
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailServiceImpl.java
  13. 9
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainService.java
  14. 324
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java

18
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkDetailController.java

@ -108,22 +108,4 @@ public class WorkDetailController {
}
return success(result);
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产订单子 Excel")
@PreAuthorize("@ss.hasPermission('wms:work-detail:export')")
@OperateLog(type = EXPORT)
public void exportWorkDetailExcel(@Valid WorkDetailExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<WorkDetailDO> list = workDetailService.getWorkDetailList(exportReqVO);
// 导出 Excel
List<WorkDetailExcelVO> datas = WorkDetailConvert.INSTANCE.convertList02(list);
for(WorkDetailExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
vo.setCreator(user.getNickname());
}
ExcelUtils.write(response, "生产订单子.xls", "数据", WorkDetailExcelVO.class, datas);
}
}

71
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/WorkMainController.java

@ -3,14 +3,22 @@ package com.win.module.wms.controller.work;
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.ConvertUtil;
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.purchasereceiptRequest.vo.PurchasereceiptRequestMainExcelVO;
import com.win.module.wms.controller.work.vo.*;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert;
import com.win.module.wms.convert.work.WorkMainConvert;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.work.WorkDetailDO;
import com.win.module.wms.dal.dataobject.work.WorkMainDO;
import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.work.WorkDetailService;
import com.win.module.wms.service.work.WorkMainService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -38,6 +46,8 @@ import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Validated
public class WorkMainController {
@Resource
private WorkDetailService workDetailService;
@Resource
private WorkMainService workMainService;
@ -100,46 +110,75 @@ public class WorkMainController {
PageResult<WorkMainDO> pageResult = workMainService.getWorkMainSenior(conditions);
PageResult<WorkMainRespVO> result = WorkMainConvert.INSTANCE.convertPage(pageResult);
for(WorkMainRespVO vo : result.getList()) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//后端创建个字段作为前端展示的虚拟字段
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);
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产订单 Excel")
@Operation(summary = "导出生产订单 Excel")
@PreAuthorize("@ss.hasPermission('wms:work-main:export')")
@OperateLog(type = EXPORT)
public void exportWorkMainExcel(@Valid WorkMainExportReqVO exportReqVO,
HttpServletResponse response) throws IOException {
List<WorkMainDO> list = workMainService.getWorkMainList(exportReqVO);
// 导出 Excel
List<WorkMainExcelVO> datas = WorkMainConvert.INSTANCE.convertList02(list);
for(WorkMainExcelVO vo : datas) {
AdminUserRespDTO user = userApi.getUser(Long.valueOf(vo.getCreator()));
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<WorkMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
for(WorkMainExcelVO 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", "数据", WorkMainExcelVO.class, resultList, mapDropDown);
}
@GetMapping("/export-excel-senior")
@Operation(summary = "导出生产订单 Excel")
@PreAuthorize("@ss.hasPermission('wms:work-main:export')")
@OperateLog(type = EXPORT)
public void exportWorkMainSeniorExcel(@Valid @RequestBody CustomConditions conditions, HttpServletResponse response) throws IOException {
List<WorkMainDO> list = workMainService.getWorkMainList(conditions);
//组装vo
Map<Integer, String[]> mapDropDown = new HashMap<>();
List<WorkMainExcelVO> resultList = this.getExcelVo(list, mapDropDown);
// 导出 Excel
ExcelUtils.write(response, "生产订单.xlsx", "数据", WorkMainExcelVO.class, resultList, mapDropDown);
}
private List<WorkMainExcelVO> getExcelVo(List<WorkMainDO> list, Map<Integer, String[]> mapDropDown) {
String[] available = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.TRUE_FALSE);
mapDropDown.put(13, available);
List<WorkMainExcelVO> resultList = new ArrayList<>();
// 导出
for(WorkMainDO mainDO : list) {
List<WorkDetailDO> subList = workDetailService.selectList(mainDO.getId());
for(WorkDetailDO detailDO : subList) {
WorkMainExcelVO vo = WorkMainConvert.INSTANCE.convert(mainDO, detailDO);
resultList.add(vo);
}
}
ExcelUtils.write(response, "生产订单主.xls", "数据", WorkMainExcelVO.class, datas);
return resultList;
}
@GetMapping("/get-import-template")
@Operation(summary = "获得导入采购索赔信息模板")
@Operation(summary = "获得导入生产订单模板")
public void importTemplate(HttpServletResponse response) throws IOException {
// 手动创建导出 demo
List<WorkMainImportVO> list = new ArrayList<>();
Map<Integer, String[]> mapDropDown = new HashMap<>();
// String[] purchaseReturnReason = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.PURCHASE_RETURN_REASON);
// mapDropDown.put(16, purchaseReturnReason);
// String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
// mapDropDown.put(25, uom);
String[] uom = DictFrameworkUtils.dictTypeDictDataValue(DictTypeConstants.UOM);
mapDropDown.put(6, uom);
// 输出
ExcelUtils.write(response, "采购索赔信息导入模板.xlsx", "采购索赔信息列表", WorkMainImportVO.class, list, mapDropDown);
ExcelUtils.write(response, "生产订单导入模板.xlsx", "生产订单信息列表", WorkMainImportVO.class, list, mapDropDown);
}
@PostMapping("/import")
@Operation(summary = "导入要货计划")
@Operation(summary = "导入生产订单")
@Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "mode", description = "导入模式1更新2追加3覆盖", example = "1"),

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainBaseVO.java

@ -1,5 +1,6 @@
package com.win.module.wms.controller.work.vo;
import com.win.framework.excel.core.annotations.OnlyOne;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
@ -44,6 +45,7 @@ public class WorkMainBaseVO {
@Schema(description = "单据号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "单据号不能为空")
@OnlyOne
private String number;
@Schema(description = "业务类型", requiredMode = Schema.RequiredMode.REQUIRED)

34
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExcelVO.java

@ -1,7 +1,10 @@
package com.win.module.wms.controller.work.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;
@ -21,6 +24,9 @@ import com.win.framework.excel.core.convert.DictConvert;
@Data
public class WorkMainExcelVO {
@ExcelProperty("单据号")
private String number;
@ExcelProperty("供应商代码")
private String customerCode;
@ -37,9 +43,6 @@ public class WorkMainExcelVO {
@ExcelProperty("版本")
private String version;
@ExcelProperty("单据号")
private String number;
@ExcelProperty("业务类型")
private String businessType;
@ -62,6 +65,31 @@ public class WorkMainExcelVO {
private Integer currentStage;
@ExcelProperty("是否可用")
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String available;
@ExcelProperty("行号")
private String lineNumber;
@ExcelProperty("项目代码")
private String projectCode;
@ExcelProperty("完工数量")
private BigDecimal finishedQty;
@ExcelProperty("物品代码")
private String itemCode;
@ExcelProperty("备注2")
private String remarkDetail;
@ExcelProperty("订单数量")
private BigDecimal orderQty;
@ExcelProperty("计量单位")
private String uom;
@ExcelProperty("是否可用2")
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String availableDetail;
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainExportReqVO.java

@ -1,5 +1,7 @@
package com.win.module.wms.controller.work.vo;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.module.wms.enums.DictTypeConstants;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
@ -57,6 +59,7 @@ public class WorkMainExportReqVO {
private Integer currentStage;
@Schema(description = "是否可用")
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String available;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/work/vo/WorkMainImportVO.java

@ -1,6 +1,9 @@
package com.win.module.wms.controller.work.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.annotations.OnlyOne;
import com.win.module.wms.enums.DictTypeConstants;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@ -40,5 +43,6 @@ public class WorkMainImportVO {
@ExcelProperty("订单数量")
private BigDecimal orderQty;
@ExcelProperty("计量单位")
@DictFormat(DictTypeConstants.UOM)
private String uom;
}

28
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/work/WorkMainConvert.java

@ -4,11 +4,14 @@ import java.util.*;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.work.vo.WorkMainCreateReqVO;
import com.win.module.wms.controller.work.vo.WorkMainExcelVO;
import com.win.module.wms.controller.work.vo.WorkMainRespVO;
import com.win.module.wms.controller.work.vo.WorkMainUpdateReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainExcelVO;
import com.win.module.wms.controller.work.vo.*;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.work.WorkDetailDO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import com.win.module.wms.dal.dataobject.work.WorkMainDO;
@ -34,4 +37,21 @@ public interface WorkMainConvert {
List<WorkMainExcelVO> convertList02(List<WorkMainDO> list);
@Mappings({
@Mapping(source = "mainDO.number", target = "number"),
})
WorkMainImportErrorVO convert(WorkMainCreateReqVO mainDO, WorkDetailDO detailDO);
@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"),
})
WorkMainExcelVO convert(WorkMainDO mainDO, WorkDetailDO detailDO);
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/work/WorkDetailDO.java

@ -43,7 +43,7 @@ public class WorkDetailDO extends BaseDO {
/**
* 主表ID
*/
private String masterId;
private Long masterId;
/**
* 单据号
*/

35
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkDetailMapper.java

@ -9,6 +9,7 @@ import com.win.framework.mybatis.core.mapper.BaseMapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.work.vo.WorkDetailExportReqVO;
import com.win.module.wms.controller.work.vo.WorkDetailPageReqVO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.work.WorkDetailDO;
import org.apache.ibatis.annotations.Mapper;
@ -41,22 +42,26 @@ public interface WorkDetailMapper extends BaseMapperX<WorkDetailDO> {
.orderByDesc(WorkDetailDO::getId));
}
default List<WorkDetailDO> selectList(WorkDetailExportReqVO reqVO) {
default List<WorkDetailDO> selectList(Long masterId) {
return selectList(new LambdaQueryWrapperX<WorkDetailDO>()
.eqIfPresent(WorkDetailDO::getLineNumber, reqVO.getLineNumber())
.eqIfPresent(WorkDetailDO::getProjectCode, reqVO.getProjectCode())
.eqIfPresent(WorkDetailDO::getFinishedQty, reqVO.getFinishedQty())
.eqIfPresent(WorkDetailDO::getNumber, reqVO.getNumber())
.eqIfPresent(WorkDetailDO::getItemCode, reqVO.getItemCode())
.eqIfPresent(WorkDetailDO::getRemark, reqVO.getRemark())
.betweenIfPresent(WorkDetailDO::getCreateTime, reqVO.getCreateTime())
.eqIfPresent(WorkDetailDO::getCreator, reqVO.getCreator())
.eqIfPresent(WorkDetailDO::getOrderQty, reqVO.getOrderQty())
.eqIfPresent(WorkDetailDO::getUom, reqVO.getUom())
.betweenIfPresent(WorkDetailDO::getUpdateTime, reqVO.getUpdateTime())
.eqIfPresent(WorkDetailDO::getUpdater, reqVO.getUpdater())
.eqIfPresent(WorkDetailDO::getAvailable, reqVO.getAvailable())
.orderByDesc(WorkDetailDO::getId));
.eq(WorkDetailDO::getMasterId, masterId));
}
// default List<WorkDetailDO> selectList(WorkDetailExportReqVO reqVO) {
// return selectList(new LambdaQueryWrapperX<WorkDetailDO>()
// .eqIfPresent(WorkDetailDO::getLineNumber, reqVO.getLineNumber())
// .eqIfPresent(WorkDetailDO::getProjectCode, reqVO.getProjectCode())
// .eqIfPresent(WorkDetailDO::getFinishedQty, reqVO.getFinishedQty())
// .eqIfPresent(WorkDetailDO::getNumber, reqVO.getNumber())
// .eqIfPresent(WorkDetailDO::getItemCode, reqVO.getItemCode())
// .eqIfPresent(WorkDetailDO::getRemark, reqVO.getRemark())
// .betweenIfPresent(WorkDetailDO::getCreateTime, reqVO.getCreateTime())
// .eqIfPresent(WorkDetailDO::getCreator, reqVO.getCreator())
// .eqIfPresent(WorkDetailDO::getOrderQty, reqVO.getOrderQty())
// .eqIfPresent(WorkDetailDO::getUom, reqVO.getUom())
// .betweenIfPresent(WorkDetailDO::getUpdateTime, reqVO.getUpdateTime())
// .eqIfPresent(WorkDetailDO::getUpdater, reqVO.getUpdater())
// .eqIfPresent(WorkDetailDO::getAvailable, reqVO.getAvailable())
// .orderByDesc(WorkDetailDO::getId));
// }
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/work/WorkMainMapper.java

@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.work.vo.WorkMainExportReqVO;
import com.win.module.wms.controller.work.vo.WorkMainPageReqVO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.work.WorkMainDO;
import org.apache.ibatis.annotations.Mapper;
@ -66,4 +67,7 @@ public interface WorkMainMapper extends BaseMapperX<WorkMainDO> {
.orderByDesc(WorkMainDO::getId));
}
default List<WorkMainDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions));
}
}

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailService.java

@ -9,6 +9,7 @@ import com.win.module.wms.controller.work.vo.WorkDetailExportReqVO;
import com.win.module.wms.controller.work.vo.WorkDetailPageReqVO;
import com.win.module.wms.controller.work.vo.WorkDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.work.WorkDetailDO;
import com.win.framework.common.pojo.PageResult;
@ -78,6 +79,14 @@ public interface WorkDetailService {
* @param exportReqVO 查询条件
* @return 生产订单子列表
*/
List<WorkDetailDO> getWorkDetailList(WorkDetailExportReqVO exportReqVO);
// List<WorkDetailDO> getWorkDetailList(WorkDetailExportReqVO exportReqVO);
/**
* 根据主表id查询
*
* @param masterId 主表id
* @return
*/
List<WorkDetailDO> selectList(Long masterId);
}

10
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkDetailServiceImpl.java

@ -5,6 +5,7 @@ import com.win.module.wms.controller.work.vo.WorkDetailCreateReqVO;
import com.win.module.wms.controller.work.vo.WorkDetailExportReqVO;
import com.win.module.wms.controller.work.vo.WorkDetailPageReqVO;
import com.win.module.wms.controller.work.vo.WorkDetailUpdateReqVO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
@ -84,9 +85,14 @@ public class WorkDetailServiceImpl implements WorkDetailService {
return workDetailMapper.selectPage(pageReqVO);
}
// @Override
// public List<WorkDetailDO> getWorkDetailList(WorkDetailExportReqVO exportReqVO) {
// return workDetailMapper.selectList(exportReqVO);
// }
@Override
public List<WorkDetailDO> getWorkDetailList(WorkDetailExportReqVO exportReqVO) {
return workDetailMapper.selectList(exportReqVO);
public List<WorkDetailDO> selectList(Long masterId) {
return workDetailMapper.selectList(masterId);
}
}

9
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainService.java

@ -3,6 +3,7 @@ package com.win.module.wms.service.work;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.work.vo.*;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.work.WorkDetailDO;
import com.win.module.wms.dal.dataobject.work.WorkMainDO;
@ -78,6 +79,14 @@ public interface WorkMainService {
*/
List<WorkMainDO> getWorkMainList(WorkMainExportReqVO exportReqVO);
/**
* 获得生产订单主列表, 用于 Excel 导出
*
* @param conditions 查询条件
* @return 采购收货申请主列表
*/
List<WorkMainDO> getWorkMainList(CustomConditions conditions);
/**
* Order----VW
* 校验生产订单

324
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/work/WorkMainServiceImpl.java

@ -6,18 +6,35 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult;
import com.win.framework.common.util.validation.ValidationUtils;
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.purchasereceiptRequest.vo.PurchasereceiptRequestDetailCreateReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainExportReqVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO;
import com.win.module.wms.controller.work.vo.*;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestDetailConvert;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert;
import com.win.module.wms.convert.work.WorkDetailConvert;
import com.win.module.wms.convert.work.WorkMainConvert;
import com.win.module.wms.dal.dataobject.businesstype.BusinesstypeDO;
import com.win.module.wms.dal.dataobject.customer.CustomerDO;
import com.win.module.wms.dal.dataobject.customeritem.CustomeritemDO;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.itempackaging.ItempackagingDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestDetailDO;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.requestsetting.RequestsettingDO;
import com.win.module.wms.dal.dataobject.saleprice.SalepriceDO;
import com.win.module.wms.dal.dataobject.work.WorkDetailDO;
import com.win.module.wms.dal.dataobject.work.WorkMainDO;
import com.win.module.wms.dal.mysql.work.WorkDetailMapper;
import com.win.module.wms.dal.mysql.work.WorkMainMapper;
import com.win.module.wms.enums.request.RequestStatusEnum;
import com.win.module.wms.enums.request.RequestStatusState;
import com.win.module.wms.service.customer.CustomerService;
import com.win.module.wms.service.customeritem.CustomeritemService;
import com.win.module.wms.service.itembasic.ItembasicService;
import com.win.module.wms.service.itempackaging.ItempackagingService;
@ -26,10 +43,13 @@ 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.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.Validator;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@ -47,6 +67,14 @@ import static com.win.module.wms.enums.ErrorCodeConstants.WORK_MAIN_NOT_EXISTS;
@Validated
public class WorkMainServiceImpl implements WorkMainService {
@Resource
private CustomerService customerService;
@Resource
private SerialNumberApi serialNumberApi;
@Resource
private TrendsApi trendsApi;
@Resource
private Validator validator;
@Resource
private WorkMainMapper workMainMapper;
@Resource
@ -123,6 +151,11 @@ public class WorkMainServiceImpl implements WorkMainService {
return workMainMapper.selectList(exportReqVO);
}
@Override
public List<WorkMainDO> getWorkMainList(CustomConditions conditions) {
return workMainMapper.selectSeniorList(conditions);
}
@Override
public WorkDetailDO selectWorkExist(String pnumber, String pitemCode) {
QueryWrapper queryWrapperMain = new QueryWrapper();
@ -143,114 +176,235 @@ public class WorkMainServiceImpl implements WorkMainService {
}
@Override
@Transactional
public List<WorkMainImportErrorVO> importWorkMainList(List<WorkMainCreateReqVO> datas, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(datas)) {
throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY);
}
List<WorkMainImportErrorVO> errorList = new ArrayList<>();
datas.forEach(createReqVO -> {
// 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
String messageMain = "";
//主表的验证
//子表的验证
WorkMainDO mainDO = WorkMainConvert.INSTANCE.convert(createReqVO);
String messageMain = this.validateWorkMainImport(mainDO);
List<WorkDetailCreateReqVO> subList = createReqVO.getSubList();
List<WorkDetailDO> subDOList = WorkDetailConvert.INSTANCE.convertList03(subList);
for (WorkDetailDO purchaseDetailDO : subDOList) {
String messageDetail = "";
// 校验物品基础信息
try {
ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
} else {
// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
// purchaseDetailDO.setItemName(itembasicDO.getName());
purchaseDetailDO.setProjectCode(itembasicDO.getProject());
// 是否有错误数据
boolean flag = true;
for (WorkDetailDO detailDO : subDOList) {
String messageDetail = this.validateWorkDetailImport(mainDO, detailDO);
if (!messageMain.isEmpty() || !messageDetail.isEmpty()) {
WorkMainImportErrorVO importErrorVO = WorkMainConvert.INSTANCE.convert(createReqVO, detailDO);
importErrorVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importErrorVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
}
purchaseDetailDO.setProjectCode(itembasicDO.getCode());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
//写入数据
if(flag) {
//申请单目前只做新增
String number = serialNumberApi.generateCode(RuleCodeEnum.WORK_ORDER.getCode());
mainDO.setNumber(number);
mainDO.setAvailable("TRUE"); // 导入默认 可用
mainDO.setBusinessType("ProductReceipt"); // 业务类型:制品收货
workMainMapper.insert(mainDO);
//增加操作记录
trendsApi.createTrends(mainDO.getId(), "workMain", "导入了生产订单", TrendsTypeEnum.CREATE);
int index = 0;
for (WorkDetailDO detailDO : subDOList) {
detailDO.setMasterId(mainDO.getId());
detailDO.setNumber(number);
detailDO.setAvailable("TRUE"); // 导入默认 可用
detailDO.setLineNumber("WODetail" + index);
detailDO.setFinishedQty(new BigDecimal(0));
index++;
}
// 校验物品标包信息
try {
ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailDO.getItemCode());
// purchaseDetailDO.setStdPackUnit(itempackagingDO.getStdPackUnit());
// purchaseDetailDO.setStdPackQty(itempackagingDO.getStdPackQty());
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
}
// 校验客户物品基础信息
try {
CustomeritemDO customeritemDO = customeritemService.selectCustomeritemExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode());
if (customeritemDO == null) {
messageDetail += "未查找到客户" + createReqVO.getCustomerCode() + "与物品" + purchaseDetailDO.getItemCode() + "的对应关系" + ",";
} else {
//根据customeritemdto赋值
workDetailMapper.insertBatch(subDOList);
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
});
// List<WorkMainImportErrorVO> errorList = new ArrayList<>();
// datas.forEach(createReqVO -> {
// // 校验,判断是否有不符合的原因,并加入errorList,如果主表则所有子表都加入errorList
// String messageMain = "";
// //主表的验证
// //子表的验证
// List<WorkDetailCreateReqVO> subList = createReqVO.getSubList();
// List<WorkDetailDO> subDOList = WorkDetailConvert.INSTANCE.convertList03(subList);
// for (WorkDetailDO purchaseDetailDO : subDOList) {
// String messageDetail = "";
// // 校验物品基础信息
// try {
// ItembasicDO itembasicDO = itembasicService.selectItembasic(purchaseDetailDO.getItemCode());
// if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
// messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
// } else {
//// purchaseDetailDO.setItemDesc1(itembasicDO.getDesc1());
//// purchaseDetailDO.setItemDesc2(itembasicDO.getDesc2());
//// purchaseDetailDO.setItemName(itembasicDO.getName());
// purchaseDetailDO.setProjectCode(itembasicDO.getProject());
// }
// if (itembasicDO.getUom() != purchaseDetailDO.getUom()) {
// messageDetail += "计量单位" + itembasicDO.getUom() + "错误,应该是" + purchaseDetailDO.getUom() + ",";
// }
// purchaseDetailDO.setProjectCode(itembasicDO.getCode());
// } catch (ServiceException ex) {
// messageDetail += ex.getMessage() + ",";
// }
//
// // 校验物品标包信息
// try {
// ItempackagingDO itempackagingDO = itempackagingService.selectItemPackagingExist(purchaseDetailDO.getItemCode());
//// purchaseDetailDO.setStdPackUnit(itempackagingDO.getStdPackUnit());
//// purchaseDetailDO.setStdPackQty(itempackagingDO.getStdPackQty());
// } catch (ServiceException ex) {
// messageDetail += ex.getMessage() + ",";
// }
// // 校验客户物品基础信息
// try {
// CustomeritemDO customeritemDO = customeritemService.selectCustomeritemExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode());
// if (customeritemDO == null) {
// messageDetail += "未查找到客户" + createReqVO.getCustomerCode() + "与物品" + purchaseDetailDO.getItemCode() + "的对应关系" + ",";
// } else {
// //根据customeritemdto赋值
// }
// } catch (ServiceException ex) {
// messageDetail += ex.getMessage() + ",";
// }
// // 校验销售价格
// try {
// SalepriceDO salepriceDO = salepriceService.selectItemPackagingExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode());
// if (salepriceDO != null) {
// }
// } catch (ServiceException ex) {
// messageDetail += ex.getMessage() + ",";
// }
//
// WorkDetailCreateReqVO purchaseDetailCreateReqVO = WorkDetailConvert.INSTANCE.convert1(purchaseDetailDO);
// WorkMainImportErrorVO importVO = WorkDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
// //进行子表的错误统计
// //主表没有错误 写入库里
// if (!messageMain.equals("") || !messageDetail.equals("")) {
// importVO.setImportStatus("失败");
// messageMain = messageMain + messageDetail;
// importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
// errorList.add(importVO);
// } else {
// purchaseDetailDO.setNumber(createReqVO.getNumber());
//// purchaseDetailDO.setMasterId(createReqVO.getId());
// }
// }
//
// if (errorList.isEmpty()) {
// // 判断如果不存在,在进行插入
// WorkMainDO existPurchaseclaimRequestMainDO = workMainMapper.selectByNumber(createReqVO.getNumber());
// if (existPurchaseclaimRequestMainDO == null && mode != 3) {
// BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder");
// if (businesstypeDO != null) {
// createReqVO.setBusinessType(businesstypeDO.getCode());
// }
// createReqVO.setType(null);
// createReqVO.setVersion(null);
// createReqVO.setCurrentStage(null);
// WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO);
// workMainMapper.insert(createObj);
// workDetailMapper.insertBatch(subDOList);
// } else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
// BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder");
// if (businesstypeDO != null) {
// createReqVO.setBusinessType(businesstypeDO.getCode());
// }
// createReqVO.setType(null);
// createReqVO.setVersion(null);
// createReqVO.setCurrentStage(null);
// WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO);
// workMainMapper.updateById(createObj);
// workDetailMapper.updateBatch(subDOList);
// }
// }
// });
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
// 校验销售价格
try {
SalepriceDO salepriceDO = salepriceService.selectItemPackagingExist(createReqVO.getCustomerCode(), purchaseDetailDO.getItemCode());
if (salepriceDO != null) {
return errorList;
}
} catch (ServiceException ex) {
messageDetail += ex.getMessage() + ",";
/**
* 校验物品信息并赋值
* @param detailDo
* @return
*/
private ItembasicDO validateItem(WorkDetailDO detailDo) {
ItembasicDO itembasicDO = itembasicService.selectItembasic(detailDo.getItemCode());
detailDo.setProjectCode(itembasicDO.getProject());
return itembasicDO;
}
WorkDetailCreateReqVO purchaseDetailCreateReqVO = WorkDetailConvert.INSTANCE.convert1(purchaseDetailDO);
WorkMainImportErrorVO importVO = WorkDetailConvert.INSTANCE.convert(createReqVO, purchaseDetailCreateReqVO);
//进行子表的错误统计
//主表没有错误 写入库里
if (!messageMain.equals("") || !messageDetail.equals("")) {
importVO.setImportStatus("失败");
messageMain = messageMain + messageDetail;
importVO.setImportRemark(messageMain.substring(0, messageMain.length() - 1));
errorList.add(importVO);
} else {
purchaseDetailDO.setNumber(createReqVO.getNumber());
// purchaseDetailDO.setMasterId(createReqVO.getId());
/**
* 校验客户信息
* @param mainDo
* @return
*/
private CustomerDO validateCustomer(WorkMainDO mainDo) {
return customerService.selectCustomerExist(mainDo.getCustomerCode());
}
/**
* 校验客户物品信息
* @param detailDo
* @return
*/
private CustomeritemDO validateCustomeritem(WorkMainDO mainDo, WorkDetailDO detailDo) {
return customeritemService.selectCustomeritemExist(mainDo.getCustomerCode(),detailDo.getItemCode());
}
if (errorList.isEmpty()) {
// 判断如果不存在,在进行插入
WorkMainDO existPurchaseclaimRequestMainDO = workMainMapper.selectByNumber(createReqVO.getNumber());
if (existPurchaseclaimRequestMainDO == null && mode != 3) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
/**
* 校验导入并赋值一些参数未完全实现
* @param mainDo
* @return
*/
private String validateWorkMainImport(WorkMainDO mainDo) {
StringBuilder message = new StringBuilder();
try {
ValidationUtils.validate(validator, mainDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
createReqVO.setType(null);
createReqVO.setVersion(null);
createReqVO.setCurrentStage(null);
WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO);
workMainMapper.insert(createObj);
workDetailMapper.insertBatch(subDOList);
} else if (existPurchaseclaimRequestMainDO != null && mode != 2) {
BusinesstypeDO businesstypeDO = jobUtils.selectDocumentSettingFromBusinessType("WorkOrder");
if (businesstypeDO != null) {
createReqVO.setBusinessType(businesstypeDO.getCode());
try {
this.validateCustomer(mainDo);
} catch (Exception ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
createReqVO.setType(null);
createReqVO.setVersion(null);
createReqVO.setCurrentStage(null);
WorkMainDO createObj =WorkMainConvert.INSTANCE.convert(createReqVO);
workMainMapper.updateById(createObj);
workDetailMapper.updateBatch(subDOList);
/**
* 校验导入并赋值一些参数未完全实现
* @param detailDo
* @return
*/
private String validateWorkDetailImport(WorkMainDO mainDo, WorkDetailDO detailDo) {
StringBuilder message = new StringBuilder();
try {
ValidationUtils.validate(validator, detailDo);
} catch (Exception e) {
message.append(e.getMessage()).append(",");
}
try {
this.validateCustomeritem(mainDo, detailDo);
} catch (Exception e) {
message.append(e.getMessage()).append(",");
}
});
//错误不为空并非部分更新,手工回滚
if (!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
try {
this.validateItem(detailDo);
} catch (Exception e) {
message.append(e.getMessage()).append(",");
}
return errorList;
return message.toString();
}
}

Loading…
Cancel
Save