Browse Source

项目

master
廉洪喜 2 years ago
parent
commit
3885ab9105
  1. 17
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/ProjectController.java
  2. 54
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/vo/ProjectImportErrorVO.java
  3. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/project/ProjectConvert.java
  4. 5
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customeritem/CustomeritemServiceImpl.java
  5. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectService.java
  6. 68
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectServiceImpl.java

17
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/ProjectController.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.customeritem.vo.CustomeritemRespVO; import com.win.module.wms.controller.bom.vo.BomImportErrorVO;
import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO;
import com.win.module.wms.controller.project.vo.*; import com.win.module.wms.controller.project.vo.*;
import com.win.module.wms.convert.customeritem.CustomeritemConvert;
import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.convert.project.ProjectConvert; import com.win.module.wms.convert.project.ProjectConvert;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.project.ProjectDO; import com.win.module.wms.dal.dataobject.project.ProjectDO;
import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.project.ProjectService; import com.win.module.wms.service.project.ProjectService;
@ -162,17 +158,18 @@ public class ProjectController {
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
}) })
@PreAuthorize("@ss.hasPermission('wms:project:import')") @PreAuthorize("@ss.hasPermission('wms:project: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<ProjectImportExcelVO> list = ExcelUtils.read(file, ProjectImportExcelVO.class); List<ProjectImportExcelVO> list = ExcelUtils.read(file, ProjectImportExcelVO.class);
List<ProjectImportExcelVO> errorList = projectService.importProjectList(list, mode, updatePart); List<ProjectImportErrorVO> errorList = projectService.importProjectList(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);
} }
} }

54
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/project/vo/ProjectImportErrorVO.java

@ -0,0 +1,54 @@
package com.win.module.wms.controller.project.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 ProjectImportErrorVO {
@ExcelProperty("代码")
private String code;
@ExcelProperty("名称")
private String name;
@ExcelProperty("描述")
private String description;
@ExcelProperty("客户代码")
private String customerCode;
@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;
}

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/project/ProjectConvert.java

@ -1,6 +1,8 @@
package com.win.module.wms.convert.project; package com.win.module.wms.convert.project;
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.project.vo.*; import com.win.module.wms.controller.project.vo.*;
import com.win.module.wms.dal.dataobject.project.ProjectDO; import com.win.module.wms.dal.dataobject.project.ProjectDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
@ -31,4 +33,6 @@ public interface ProjectConvert {
List<ProjectExcelVO> convertList02(List<ProjectDO> list); List<ProjectExcelVO> convertList02(List<ProjectDO> list);
ProjectDO convert(ProjectImportExcelVO project); ProjectDO convert(ProjectImportExcelVO project);
ProjectImportErrorVO convert2(ProjectDO bean);
} }

5
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/customeritem/CustomeritemServiceImpl.java

@ -132,6 +132,7 @@ public class CustomeritemServiceImpl implements CustomeritemService {
public CustomeritemDO existcustomeritem( CustomeritemDO customeritem){ public CustomeritemDO existcustomeritem( CustomeritemDO customeritem){
QueryWrapper<CustomeritemDO> queryWrapper = new QueryWrapper(); QueryWrapper<CustomeritemDO> queryWrapper = new QueryWrapper();
queryWrapper.eq("customer_code",customeritem.getCustomerCode()); queryWrapper.eq("customer_code",customeritem.getCustomerCode());
@ -141,6 +142,10 @@ public class CustomeritemServiceImpl implements CustomeritemService {
} }
@Override @Override
public List<CustomeritemImportErrorVO> CustomeritemimportCustomeritemList(List<CustomeritemImportExcelVO> customeritems, Integer mode, Boolean updatePart) { public List<CustomeritemImportErrorVO> CustomeritemimportCustomeritemList(List<CustomeritemImportExcelVO> customeritems, Integer mode, Boolean updatePart) {
if (CollUtil.isEmpty(customeritems)) { if (CollUtil.isEmpty(customeritems)) {

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectService.java

@ -77,5 +77,5 @@ public interface ProjectService {
*/ */
List<ProjectDO> getProjectList(ProjectExportReqVO exportReqVO); List<ProjectDO> getProjectList(ProjectExportReqVO exportReqVO);
List<ProjectImportExcelVO> importProjectList(List<ProjectImportExcelVO> projects, Integer mode, Boolean updatePart); List<ProjectImportErrorVO> importProjectList(List<ProjectImportExcelVO> projects, Integer mode, Boolean updatePart);
} }

68
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/project/ProjectServiceImpl.java

@ -2,13 +2,17 @@ package com.win.module.wms.service.project;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import com.win.framework.common.exception.ServiceException; 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.project.vo.*; import com.win.module.wms.controller.project.vo.*;
import com.win.module.wms.convert.bom.BomConvert;
import com.win.module.wms.convert.project.ProjectConvert; import com.win.module.wms.convert.project.ProjectConvert;
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.project.ProjectDO; import com.win.module.wms.dal.dataobject.project.ProjectDO;
import com.win.module.wms.dal.mysql.project.ProjectMapper; import com.win.module.wms.dal.mysql.project.ProjectMapper;
@ -86,37 +90,56 @@ public class ProjectServiceImpl implements ProjectService {
return projectMapper.selectList(exportReqVO); return projectMapper.selectList(exportReqVO);
} }
private String validateProjectImport( ProjectDO project ){
StringBuilder message = new StringBuilder();
try {
validateProjectForCreateOrUpdate(null,project.getCode(),project.getAvailable());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
public ProjectDO existProjectDO(ProjectDO project){
QueryWrapper<ProjectDO> queryWrapper = new QueryWrapper();
queryWrapper.eq("code",project.getCode());
ProjectDO projectDO = projectMapper.selectOne(queryWrapper);
return projectDO;
}
@Override @Override
public List<ProjectImportExcelVO> importProjectList(List<ProjectImportExcelVO> projects, Integer mode, Boolean updatePart) { public List<ProjectImportErrorVO> importProjectList(List<ProjectImportExcelVO> projects, Integer mode, Boolean updatePart) {
if (CollUtil.isEmpty(projects)) { if (CollUtil.isEmpty(projects)) {
throw exception(PROJECT_IMPORT_LIST_IS_EMPTY); throw exception(PROJECT_IMPORT_LIST_IS_EMPTY);
} }
List<ProjectImportExcelVO> errorList = new ArrayList<>(); List<ProjectImportErrorVO> errorList = new ArrayList<>();
projects.forEach(project -> { projects.forEach(project -> {
ProjectDO projectDo = ProjectConvert.INSTANCE.convert(project);
// 校验,判断是否有不符合的原因 // 校验,判断是否有不符合的原因
try { String message = this.validateProjectImport(projectDo);
if(mode != null){ boolean flag = true;
validateProjectForCreateOrUpdate(null,project.getCode(),project.getAvailable()); if(!message.isEmpty()){
} ProjectImportErrorVO importErrorVO = ProjectConvert.INSTANCE.convert2(projectDo);
} catch (ServiceException ex) { importErrorVO.setImportStatus("失败");
errorList.add(project); importErrorVO.setImportRemark(message.substring(0, message.length() - 1));
return; errorList.add(importErrorVO);
} flag = false;
// 判断如果不存在,在进行插入
OwnerDO existConfigurationSetting = null;
if (existConfigurationSetting == null&& mode != 3) {
projectMapper.insert(ProjectConvert.INSTANCE.convert(project));
} }
else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 if(flag) {
ProjectDO projectDo = ProjectConvert.INSTANCE.convert(project); // 判断如果不存在,在进行插入
projectDo.setId(existConfigurationSetting.getId()); ProjectDO existConfigurationSetting = existProjectDO(projectDo);
projectMapper.updateById(projectDo); if (existConfigurationSetting == null && mode != 3) {
projectMapper.insert(ProjectConvert.INSTANCE.convert(project));
} else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新
projectDo.setId(existConfigurationSetting.getId());
projectMapper.updateById(projectDo);
}
} }
}); });
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList; return errorList;
} }
private void validateProjectForCreateOrUpdate(Long id, String code,String available) { private void validateProjectForCreateOrUpdate(Long id, String code,String available) {
@ -125,7 +148,6 @@ public class ProjectServiceImpl implements ProjectService {
validateProjectExists(id); validateProjectExists(id);
validateCodeExists(id,code); validateCodeExists(id,code);
validateAvailableExists(available); validateAvailableExists(available);
}); });
} }
private void validateProjectExists(Long id) { private void validateProjectExists(Long id) {

Loading…
Cancel
Save