Browse Source

工位

master
廉洪喜 2 years ago
parent
commit
d40f5d3869
  1. 14
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/WorkstationController.java
  2. 69
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/vo/WorkstationImportErrorVO.java
  3. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/workstation/WorkstationConvert.java
  4. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationService.java
  5. 71
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java

14
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/WorkstationController.java

@ -8,14 +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.productionline.vo.ProductionlineRespVO;
import com.win.module.wms.controller.workstation.vo.WorkstationRespVO; import com.win.module.wms.controller.workstation.vo.WorkstationRespVO;
import com.win.module.wms.controller.workstation.vo.*; import com.win.module.wms.controller.workstation.vo.*;
import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.convert.productionline.ProductionlineConvert;
import com.win.module.wms.convert.workstation.WorkstationConvert;; import com.win.module.wms.convert.workstation.WorkstationConvert;;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.workstation.WorkstationService; import com.win.module.wms.service.workstation.WorkstationService;
@ -170,16 +165,19 @@ public class WorkstationController {
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
}) })
@PreAuthorize("@ss.hasPermission('wms:workstation:import')") @PreAuthorize("@ss.hasPermission('wms:workstation: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<WorkstationImportExcelVo> list = ExcelUtils.read(file, WorkstationImportExcelVo.class); List<WorkstationImportExcelVo> list = ExcelUtils.read(file, WorkstationImportExcelVo.class);
List<WorkstationImportExcelVo> errorList = workstationService.importWorkstationList(list, mode, updatePart); List<WorkstationImportErrorVO> errorList = workstationService.importWorkstationList(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);
}
} }

69
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/workstation/vo/WorkstationImportErrorVO.java

@ -0,0 +1,69 @@
package com.win.module.wms.controller.workstation.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 WorkstationImportErrorVO {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("描述")
private String description;
@ExcelProperty(value = "类型", converter = DictConvert.class)
@DictFormat(DictTypeConstants.WORK_STATION_TYPE)
private String type;
@ExcelProperty("车间代码")
private String workshopCode;
@ExcelProperty("生产线代码")
private String productionLineCode;
@ExcelProperty("原料库位")
private String rawLocationCode;
@ExcelProperty("成品库位")
private String fgLocationCode;
@ExcelProperty(value = "是否可用", converter = DictConvert.class)
@DictFormat(DictTypeConstants.TRUE_FALSE)
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/workstation/WorkstationConvert.java

@ -1,6 +1,8 @@
package com.win.module.wms.convert.workstation; package com.win.module.wms.convert.workstation;
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.workstation.vo.*; import com.win.module.wms.controller.workstation.vo.*;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
@ -32,4 +34,6 @@ public interface WorkstationConvert {
List<WorkstationExcelVO> convertList02(List<WorkstationDO> list); List<WorkstationExcelVO> convertList02(List<WorkstationDO> list);
WorkstationImportErrorVO convert2(WorkstationDO bean);
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationService.java

@ -79,7 +79,7 @@ public interface WorkstationService {
*/ */
List<WorkstationDO> getWorkstationList(WorkstationExportReqVO exportReqVO); List<WorkstationDO> getWorkstationList(WorkstationExportReqVO exportReqVO);
List<WorkstationImportExcelVo> importWorkstationList(List<WorkstationImportExcelVo> workstations, Integer mode,Boolean updatePart); List<WorkstationImportErrorVO> importWorkstationList(List<WorkstationImportExcelVo> workstations, Integer mode,Boolean updatePart);
/** /**
* BQ-----QWStation * BQ-----QWStation

71
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/workstation/WorkstationServiceImpl.java

@ -9,8 +9,11 @@ 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.workstation.vo.*; import com.win.module.wms.controller.workstation.vo.*;
import com.win.module.wms.convert.bom.BomConvert;
import com.win.module.wms.convert.workstation.WorkstationConvert; import com.win.module.wms.convert.workstation.WorkstationConvert;
import com.win.module.wms.dal.dataobject.bom.BomDO;
import com.win.module.wms.dal.dataobject.workstation.WorkstationDO; import com.win.module.wms.dal.dataobject.workstation.WorkstationDO;
import com.win.module.wms.dal.mysql.workstation.WorkstationMapper; import com.win.module.wms.dal.mysql.workstation.WorkstationMapper;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -86,65 +89,67 @@ public class WorkstationServiceImpl implements WorkstationService {
return workstationMapper.selectList(exportReqVO); return workstationMapper.selectList(exportReqVO);
} }
private String validateWorkstationImport( WorkstationDO workstation ){
@Override StringBuilder message = new StringBuilder();
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public List<WorkstationImportExcelVo> importWorkstationList(List<WorkstationImportExcelVo> workstations, Integer mode,Boolean updatePart) {
if (CollUtil.isEmpty(workstations)) {
throw exception(WORKSTATION_IMPORT_LIST_IS_EMPTY);
}
List<WorkstationImportExcelVo> errorList = new ArrayList<>();
workstations.forEach(workstation -> {
String massage = "";
// 校验,判断是否有不符合的原因
if(mode != null){
try{ try{
validateWorkstationExists(null); validateWorkstationExists(null);
} catch(ServiceException ex){ } catch(ServiceException ex){
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
try{ try{
validateCodeExists(null,workstation.getCode()); validateCodeExists(null,workstation.getCode());
} catch(ServiceException ex){ } catch(ServiceException ex){
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
try{ try{
validateWorkshopCodeExists(workstation.getWorkshopCode()); validateWorkshopCodeExists(workstation.getWorkshopCode());
} catch(ServiceException ex){ } catch(ServiceException ex){
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
try{ try{
validateProductionLineCodeExists(workstation.getProductionLineCode()); validateProductionLineCodeExists(workstation.getProductionLineCode());
} catch(ServiceException ex){ } catch(ServiceException ex){
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
try{ try{
validateAvailableExists(workstation.getAvailable()); validateAvailableExists(workstation.getAvailable());
} catch(ServiceException ex){ } catch(ServiceException ex){
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
if(StrUtil.isNotEmpty(massage)){ return message.toString();
massage.substring(0,massage.length()-1);
errorList.add(workstation);
} }
// 判断如果不存在,在进行插入
if(errorList == null){
@Override
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
public List<WorkstationImportErrorVO> importWorkstationList(List<WorkstationImportExcelVo> workstations, Integer mode,Boolean updatePart) {
if (CollUtil.isEmpty(workstations)) {
throw exception(WORKSTATION_IMPORT_LIST_IS_EMPTY);
}
List<WorkstationImportErrorVO> errorList = new ArrayList<>();
workstations.forEach(workstation -> {
WorkstationDO workstationDO = WorkstationConvert.INSTANCE.convert(workstation);
String message =this.validateWorkstationImport(workstationDO);
boolean flag = true;
if(!message.isEmpty()){
WorkstationImportErrorVO importErrorVO = WorkstationConvert.INSTANCE.convert2(workstationDO);
importErrorVO.setImportStatus("失败");
importErrorVO.setImportRemark(message.substring(0, message.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
if(flag) {
WorkstationDO existAccountcalendar = workstationMapper.selectByCode(workstation.getCode()); WorkstationDO existAccountcalendar = workstationMapper.selectByCode(workstation.getCode());
if (existAccountcalendar == null && mode != 3) { if (existAccountcalendar == null && mode != 3) {
workstationMapper.insert(WorkstationConvert.INSTANCE.convert(workstation)); workstationMapper.insert(workstationDO);
} } else if (existAccountcalendar != null && mode != 2) {
else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新 // 如果存在,判断是否允许更新
WorkstationDO workstationDo = WorkstationConvert.INSTANCE.convert(workstation); workstationDO.setId(existAccountcalendar.getId());
workstationDo.setId(existAccountcalendar.getId()); workstationMapper.updateById(workstationDO);
workstationMapper.updateById(workstationDo);
}
} }
} }
}); });
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList; return errorList;
} }

Loading…
Cancel
Save