Browse Source

工序管理

master
廉洪喜 2 years ago
parent
commit
0264a4ef55
  1. 17
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/ProcessController.java
  2. 63
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/vo/ProcessImportErrorVO.java
  3. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/process/ProcessConvert.java
  4. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/process/ProcessService.java
  5. 61
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/process/ProcessServiceImpl.java

17
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/process/ProcessController.java

@ -8,13 +8,9 @@ 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.bom.vo.BomImportErrorVO;
import com.win.module.wms.controller.process.vo.*; import com.win.module.wms.controller.process.vo.*;
import com.win.module.wms.controller.workstation.vo.WorkstationRespVO;
import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.convert.process.ProcessConvert; import com.win.module.wms.convert.process.ProcessConvert;
import com.win.module.wms.convert.workstation.WorkstationConvert;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.process.ProcessDO; import com.win.module.wms.dal.dataobject.process.ProcessDO;
import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.process.ProcessService; import com.win.module.wms.service.process.ProcessService;
@ -152,18 +148,19 @@ public class ProcessController {
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
}) })
@PreAuthorize("@ss.hasPermission('wms:process:import')") @PreAuthorize("@ss.hasPermission('wms:process: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<ProcessImportExcelVO> list = ExcelUtils.read(file, ProcessImportExcelVO.class); List<ProcessImportExcelVO> list = ExcelUtils.read(file, ProcessImportExcelVO.class);
List<ProcessImportExcelVO> errorList = processService.importProcessList(list, mode, updatePart); List<ProcessImportErrorVO> errorList = processService.importProcessList(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/process/vo/ProcessImportErrorVO.java

@ -0,0 +1,63 @@
package com.win.module.wms.controller.process.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 ProcessImportErrorVO {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty(value = "类型", converter = DictConvert.class)
@DictFormat("process_type") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String type;
@ExcelProperty("车间代码")
private String workshopCode;
@ExcelProperty("生产线代码")
private String productionLineCode;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat("true_false") // TODO 代码优化:建议设置到对应的 XXXDictTypeConstants 枚举类中
private String available;
@ExcelProperty("生效时间")
@ColumnWidth(value = 16)
private LocalDateTime activeTime;
@ExcelProperty("失效时间")
@ColumnWidth(value = 16)
private LocalDateTime expireTime;
@ExcelProperty("备注")
private String remark;
@ExcelProperty("创建时间")
@ColumnWidth(value = 16)
private LocalDateTime createTime;
@ExcelProperty("创建者ID")
private String creator;
@ExcelProperty(value = "导入状态", index = 0)
private String importStatus;
@ExcelProperty(value = "导入说明", index = 1)
private String importRemark;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/process/ProcessConvert.java

@ -1,6 +1,8 @@
package com.win.module.wms.convert.process; package com.win.module.wms.convert.process;
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.process.vo.*; import com.win.module.wms.controller.process.vo.*;
import com.win.module.wms.dal.dataobject.process.ProcessDO; import com.win.module.wms.dal.dataobject.process.ProcessDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
@ -31,4 +33,6 @@ public interface ProcessConvert {
List<ProcessExcelVO> convertList02(List<ProcessDO> list); List<ProcessExcelVO> convertList02(List<ProcessDO> list);
ProcessDO convert(ProcessImportExcelVO process); ProcessDO convert(ProcessImportExcelVO process);
ProcessImportErrorVO convert2(ProcessDO bean);
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/process/ProcessService.java

@ -79,5 +79,5 @@ public interface ProcessService {
*/ */
List<ProcessDO> getProcessList(ProcessExportReqVO exportReqVO); List<ProcessDO> getProcessList(ProcessExportReqVO exportReqVO);
List<ProcessImportExcelVO> importProcessList(List<ProcessImportExcelVO> processes, Integer mode, Boolean updatePart); List<ProcessImportErrorVO> importProcessList(List<ProcessImportExcelVO> processes, Integer mode, Boolean updatePart);
} }

61
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/process/ProcessServiceImpl.java

@ -7,9 +7,12 @@ import com.win.framework.common.exception.ServiceException;
import com.win.framework.common.pojo.CustomConditions; 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.bom.vo.BomImportErrorVO;
import com.win.module.wms.controller.process.vo.*; import com.win.module.wms.controller.process.vo.*;
import com.win.module.wms.convert.bom.BomConvert;
import com.win.module.wms.convert.process.ProcessConvert; import com.win.module.wms.convert.process.ProcessConvert;
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.process.ProcessDO; import com.win.module.wms.dal.dataobject.process.ProcessDO;
import com.win.module.wms.dal.mysql.process.ProcessMapper; import com.win.module.wms.dal.mysql.process.ProcessMapper;
@ -88,36 +91,46 @@ public class ProcessServiceImpl implements ProcessService {
return processMapper.selectList(exportReqVO); return processMapper.selectList(exportReqVO);
} }
private String validateProcessImport( ProcessDO process){
StringBuilder message = new StringBuilder();
try {
validateProcessForCreateOrUpdate(null,process.getCode(),process.getWorkshopCode(), process.getProductionLineCode(),process.getAvailable());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
@Override @Override
public List<ProcessImportExcelVO> importProcessList(List<ProcessImportExcelVO> processes, Integer mode, Boolean updatePart) { public List<ProcessImportErrorVO> importProcessList(List<ProcessImportExcelVO> processes, Integer mode, Boolean updatePart) {
if (CollUtil.isEmpty(processes)) { if (CollUtil.isEmpty(processes)) {
throw exception(PROCESS_IMPORT_LIST_IS_EMPTY); throw exception(PROCESS_IMPORT_LIST_IS_EMPTY);
} }
List<ProcessImportExcelVO> errorList = new ArrayList<>(); List<ProcessImportErrorVO> errorList = new ArrayList<>();
processes.forEach(process -> { processes.forEach(process -> {
// 校验,判断是否有不符合的原因 ProcessDO processDO = ProcessConvert.INSTANCE.convert(process);
try { String message = this.validateProcessImport(processDO);
if(mode != null){ boolean flag = true;
validateProcessForCreateOrUpdate(null,process.getCode(),process.getWorkshopCode(), process.getProductionLineCode(),process.getAvailable());} if(!message.isEmpty()){
} catch (ServiceException ex) { ProcessImportErrorVO importErrorVO = ProcessConvert.INSTANCE.convert2(processDO);
errorList.add(process); importErrorVO.setImportStatus("失败");
return; importErrorVO.setImportRemark(message.substring(0, message.length() - 1));
} errorList.add(importErrorVO);
// 判断如果不存在,在进行插入 flag = false;
OwnerDO existConfigurationSetting = null; }
if (existConfigurationSetting == null&& mode != 3) { if(flag){
processMapper.insert(ProcessConvert.INSTANCE.convert(process)); ProcessDO existConfigurationSetting = processMapper.selectByCode(processDO.getCode());
} if (existConfigurationSetting == null&& mode != 3) {
else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 processMapper.insert(ProcessConvert.INSTANCE.convert(process));
ProcessDO processDo = ProcessConvert.INSTANCE.convert(process); }
processDo.setId(existConfigurationSetting.getId()); else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新
processMapper.updateById(processDo); ProcessDO processDo = ProcessConvert.INSTANCE.convert(process);
} processDo.setId(existConfigurationSetting.getId());
processMapper.updateById(processDo);
}
}
}); });
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList; return errorList;
} }
private void validateProcessForCreateOrUpdate(Long id, String code,String workshopCode,String productionLineCode,String available) { private void validateProcessForCreateOrUpdate(Long id, String code,String workshopCode,String productionLineCode,String available) {

Loading…
Cancel
Save