Browse Source

生产线

master
廉洪喜 2 years ago
parent
commit
b871494ff5
  1. 19
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/ProductionlineController.java
  2. 63
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/vo/ProductionlineImportErrorVO.java
  3. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionline/ProductionlineConvert.java
  4. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionline/ProductionlineMapper.java
  5. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineService.java
  6. 57
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineServiceImpl.java

19
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/ProductionlineController.java

@ -8,13 +8,8 @@ import com.win.framework.excel.core.util.ExcelUtils;
import com.win.framework.operatelog.core.annotations.OperateLog; import com.win.framework.operatelog.core.annotations.OperateLog;
import com.win.module.system.api.user.AdminUserApi; import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO; import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO;
import com.win.module.wms.controller.productionline.vo.*; import com.win.module.wms.controller.productionline.vo.*;
import com.win.module.wms.controller.workshop.vo.WorkshopRespVO;
import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.convert.productionline.ProductionlineConvert; import com.win.module.wms.convert.productionline.ProductionlineConvert;
import com.win.module.wms.convert.workshop.WorkshopConvert;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.productionline.ProductionlineService; import com.win.module.wms.service.productionline.ProductionlineService;
@ -26,7 +21,6 @@ import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid; import javax.validation.Valid;
@ -34,7 +28,6 @@ import java.io.IOException;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.*; import java.util.*;
import static com.win.framework.common.pojo.CommonResult.success; import static com.win.framework.common.pojo.CommonResult.success;
import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; import static com.win.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@ -143,6 +136,7 @@ public class ProductionlineController {
ExcelUtils.write(response, "参数设置导入模板.xls", "参数设置列表", ProductionlineImportExcelVO.class, list,mapDropDown); ExcelUtils.write(response, "参数设置导入模板.xls", "参数设置列表", ProductionlineImportExcelVO.class, list,mapDropDown);
} }
@PostMapping("/import") @PostMapping("/import")
@Operation(summary = "导入参数设置") @Operation(summary = "导入参数设置")
@Parameters({ @Parameters({
@ -151,18 +145,19 @@ public class ProductionlineController {
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
}) })
@PreAuthorize("@ss.hasPermission('wms:productionline:import')") @PreAuthorize("@ss.hasPermission('wms:productionline:import')")
public void importExcel(HttpServletResponse response, public CommonResult<Map<String, Object>> importExcel(HttpServletResponse response,
@RequestParam("file") MultipartFile file, @RequestParam("file") MultipartFile file,
@RequestParam(value = "mode") Integer mode, @RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<ProductionlineImportExcelVO> list = ExcelUtils.read(file, ProductionlineImportExcelVO.class); List<ProductionlineImportExcelVO> list = ExcelUtils.read(file, ProductionlineImportExcelVO.class);
List<ProductionlineImportExcelVO> errorList = productionlineService.importProductionlineList(list, mode, updatePart); List<ProductionlineImportErrorVO> errorList = productionlineService.importProductionlineList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>(); Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size()); returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) { if(!errorList.isEmpty()) {
String url = ExcelUtils.writeLocalFile("库位导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); String url = ExcelUtils.writeLocalFile("库位导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList);
returnMap.put("errorFile", url); returnMap.put("errorFile", url);
} }
return success(returnMap);
} }
@PostMapping("/senior") @PostMapping("/senior")

63
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/productionline/vo/ProductionlineImportErrorVO.java

@ -0,0 +1,63 @@
package com.win.module.wms.controller.productionline.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.win.framework.excel.core.annotations.DictFormat;
import com.win.framework.excel.core.convert.DictConvert;
import com.win.module.wms.enums.DictTypeConstants;
import lombok.Builder;
import lombok.Data;
import lombok.ToString;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
@Builder
@ToString(callSuper = true)
public class ProductionlineImportErrorVO {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("描述")
private String description;
@ExcelProperty(value = "类型", converter = DictConvert.class)
@DictFormat(DictTypeConstants.PROCESS_TYPE)
private String type;
@ExcelProperty("车间代码")
private String workshopCode;
@ExcelProperty("原料库位")
private String rawLocationCode;
@ExcelProperty("成品库位")
private String fgLocationCode;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
private String available;
@ExcelProperty(value = "生效时间")
@ColumnWidth(value = 16)
private LocalDateTime activeTime;
@ExcelProperty(value = "失效时间")
@ColumnWidth(value = 16)
private LocalDateTime expireTime;
@ExcelProperty("备注")
private String remark;
@ExcelProperty(value = "导入状态", index = 0)
private String importStatus;
@ExcelProperty(value = "导入说明", index = 1)
private String importRemark;
}

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/productionline/ProductionlineConvert.java

@ -1,6 +1,8 @@
package com.win.module.wms.convert.productionline; package com.win.module.wms.convert.productionline;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.module.wms.controller.bom.vo.BomImportErrorVO;
import com.win.module.wms.controller.bom.vo.BomImportExcelVo;
import com.win.module.wms.controller.productionline.vo.*; import com.win.module.wms.controller.productionline.vo.*;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
@ -31,4 +33,7 @@ public interface ProductionlineConvert {
List<ProductionlineExcelVO> convertList02(List<ProductionlineDO> list); List<ProductionlineExcelVO> convertList02(List<ProductionlineDO> list);
ProductionlineDO convert(ProductionlineImportExcelVO productionline); ProductionlineDO convert(ProductionlineImportExcelVO productionline);
ProductionlineImportErrorVO convert2(ProductionlineDO bean);
} }

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/productionline/ProductionlineMapper.java

@ -7,6 +7,7 @@ import com.win.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.framework.mybatis.core.util.QueryWrapperUtils;
import com.win.module.wms.controller.productionline.vo.ProductionlineExportReqVO; import com.win.module.wms.controller.productionline.vo.ProductionlineExportReqVO;
import com.win.module.wms.controller.productionline.vo.ProductionlinePageReqVO; import com.win.module.wms.controller.productionline.vo.ProductionlinePageReqVO;
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.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineService.java

@ -70,7 +70,7 @@ public interface ProductionlineService {
*/ */
List<ProductionlineDO> getProductionlineList(ProductionlineExportReqVO exportReqVO); List<ProductionlineDO> getProductionlineList(ProductionlineExportReqVO exportReqVO);
List<ProductionlineImportExcelVO> importProductionlineList(List<ProductionlineImportExcelVO> productionlines, Integer mode, Boolean updatePart); List<ProductionlineImportErrorVO> importProductionlineList(List<ProductionlineImportExcelVO> productionlines, Integer mode, Boolean updatePart);
/** /**
*查询生产线是否存在 *查询生产线是否存在

57
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/productionline/ProductionlineServiceImpl.java

@ -9,8 +9,10 @@ import com.win.framework.common.pojo.CustomConditions;
import com.win.framework.common.pojo.PageResult; import com.win.framework.common.pojo.PageResult;
import com.win.framework.datapermission.core.util.DataPermissionUtils; import com.win.framework.datapermission.core.util.DataPermissionUtils;
import com.win.module.wms.controller.productionline.vo.*; import com.win.module.wms.controller.productionline.vo.*;
import com.win.module.wms.convert.bom.BomConvert;
import com.win.module.wms.convert.productionline.ProductionlineConvert; import com.win.module.wms.convert.productionline.ProductionlineConvert;
import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO;
import com.win.module.wms.dal.dataobject.bom.BomDO;
import com.win.module.wms.dal.dataobject.owner.OwnerDO; import com.win.module.wms.dal.dataobject.owner.OwnerDO;
import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO; import com.win.module.wms.dal.dataobject.productionline.ProductionlineDO;
import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO; import com.win.module.wms.dal.dataobject.productionlineitem.ProductionlineitemDO;
@ -87,36 +89,47 @@ public class ProductionlineServiceImpl implements ProductionlineService {
return productionlineMapper.selectList(exportReqVO); return productionlineMapper.selectList(exportReqVO);
} }
private String validateProductionlineImport( ProductionlineDO productionline ){
StringBuilder message = new StringBuilder();
try {
validateProcessForCreateOrUpdate(null,productionline.getCode(),productionline.getWorkshopCode(),productionline.getAvailable());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
@Override @Override
public List<ProductionlineImportExcelVO> importProductionlineList(List<ProductionlineImportExcelVO> productionlines, Integer mode, Boolean updatePart) { public List<ProductionlineImportErrorVO> importProductionlineList(List<ProductionlineImportExcelVO> productionlines, Integer mode, Boolean updatePart) {
if (CollUtil.isEmpty(productionlines)) { if (CollUtil.isEmpty(productionlines)) {
throw exception(PRODUCTIONLINE_IMPORT_LIST_IS_EMPTY); throw exception(PRODUCTIONLINE_IMPORT_LIST_IS_EMPTY);
} }
List<ProductionlineImportExcelVO> errorList = new ArrayList<>(); List<ProductionlineImportErrorVO> errorList = new ArrayList<>();
productionlines.forEach(productionline -> { productionlines.forEach(productionline -> {
// 校验,判断是否有不符合的原因 // 校验,判断是否有不符合的原因
try {
if(mode != null){ if(mode != null){
validateProcessForCreateOrUpdate(null,productionline.getCode(),productionline.getWorkshopCode(),productionline.getAvailable());} ProductionlineDO productionlineDO = ProductionlineConvert.INSTANCE.convert(productionline);
} catch (ServiceException ex) { String message = this.validateProductionlineImport(productionlineDO);
errorList.add(productionline); boolean flag = true;
return; if(!message.isEmpty()){
} ProductionlineImportErrorVO importErrorVO = ProductionlineConvert.INSTANCE.convert2(productionlineDO);
// 判断如果不存在,在进行插入 importErrorVO.setImportStatus("失败");
OwnerDO existConfigurationSetting = null; importErrorVO.setImportRemark(message.substring(0, message.length() - 1));
if (existConfigurationSetting == null&& mode != 3) { errorList.add(importErrorVO);
productionlineMapper.insert(ProductionlineConvert.INSTANCE.convert(productionline)); flag = false;
} }
else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 if(flag){
ProductionlineDO productionlineDo = ProductionlineConvert.INSTANCE.convert(productionline); ProductionlineDO existAccountcalendar = productionlineMapper.selectByCode(productionlineDO.getCode());
productionlineDo.setId(existConfigurationSetting.getId()); if(existAccountcalendar == null && mode != 3){
productionlineMapper.updateById(productionlineDo); productionlineMapper.insert(productionlineDO);
} }
else if(existAccountcalendar != null && mode != 2){
productionlineDO.setId(existAccountcalendar.getId());
productionlineMapper.updateById(productionlineDO);
}
}
}
}); });
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList; return errorList;
} }
private void validateProcessForCreateOrUpdate(Long id, String code,String workshopCode,String available) { private void validateProcessForCreateOrUpdate(Long id, String code,String workshopCode,String available) {

Loading…
Cancel
Save