From bd73e8b98e2e9172567c65e3abd61d83a9350c52 Mon Sep 17 00:00:00 2001 From: "hongxi.lian" Date: Wed, 29 Nov 2023 19:53:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B4=A6=E6=9C=9F=E6=97=A5=E5=8E=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AccountcalendarController.java | 20 +++-- .../vo/AccountcalendarImportErrorVO.java | 61 +++++++++++++++ .../AccountcalendarConvert.java | 4 + .../accountcalendar/AccountcalendarDO.java | 5 +- .../AccountcalendarMapper.java | 2 +- .../module/wms/dal/mysql/bom/BomMapper.java | 2 - .../AccountcalendarService.java | 2 +- .../AccountcalendarServiceImpl.java | 74 ++++++++++--------- .../wms/service/bom/BomServiceImpl.java | 7 -- .../InventoryinitRequestMainServiceImpl.java | 2 +- .../SystemcalendarServiceImpl.java | 9 +-- 11 files changed, 121 insertions(+), 67 deletions(-) create mode 100644 win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/vo/AccountcalendarImportErrorVO.java diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java index 75de7ed0..2657f175 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/AccountcalendarController.java @@ -9,13 +9,9 @@ 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.accountcalendar.vo.*; -import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO; -import com.win.module.wms.controller.systemcalendar.vo.SystemcalendarRespVO; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; import com.win.module.wms.convert.accountcalendar.AccountcalendarConvert; -import com.win.module.wms.convert.itembasic.ItembasicConvert; -import com.win.module.wms.convert.systemcalendar.SystemcalendarConvert; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.service.accountcalendar.AccountcalendarService; import io.swagger.v3.oas.annotations.Operation; @@ -167,16 +163,18 @@ public class AccountcalendarController { @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") }) @PreAuthorize("@ss.hasPermission('wms:accountcalendar:import')") - public void importExcel(HttpServletResponse response, - @RequestParam("file") MultipartFile file, - @RequestParam(value = "mode") Integer mode, - @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { + public CommonResult> importExcel(HttpServletResponse response, + @RequestParam("file") MultipartFile file, + @RequestParam(value = "mode") Integer mode, + @RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception { List list = ExcelUtils.read(file, AccountcalendarImportExcelVo.class); - List errorList = accountcalendarService.importAccountcalendarList(list, mode, updatePart); + List errorList = accountcalendarService.importAccountcalendarList(list, mode, updatePart); Map returnMap = new HashMap<>(); returnMap.put("errorCount", errorList.size()); if(!errorList.isEmpty()) { String url = ExcelUtils.writeLocalFile("账期日历导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList); returnMap.put("errorFile", url); - }} + } + return success(returnMap); + } } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/vo/AccountcalendarImportErrorVO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/vo/AccountcalendarImportErrorVO.java new file mode 100644 index 00000000..18ca1710 --- /dev/null +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/accountcalendar/vo/AccountcalendarImportErrorVO.java @@ -0,0 +1,61 @@ +package com.win.module.wms.controller.accountcalendar.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 AccountcalendarImportErrorVO { + @ExcelProperty("年") + private String year; + + @ExcelProperty("月") + private String month; + + @ExcelProperty("描述") + private String descriiption; + + @ExcelProperty("开始时间") + @ColumnWidth(value = 16) + private LocalDateTime beginTime; + + @ExcelProperty("结束时间") + @ColumnWidth(value = 16) + private LocalDateTime endTime; + + @ExcelProperty("转换生效时间") + @ColumnWidth(value = 16) + private LocalDateTime converttotime; + + @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(value = "导入状态", index = 0) + private String importStatus; + + @ExcelProperty(value = "导入说明", index = 1) + private String importRemark; +} diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/accountcalendar/AccountcalendarConvert.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/accountcalendar/AccountcalendarConvert.java index 0fde6b44..4de45020 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/accountcalendar/AccountcalendarConvert.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/accountcalendar/AccountcalendarConvert.java @@ -2,6 +2,8 @@ package com.win.module.wms.convert.accountcalendar; import com.win.framework.common.pojo.PageResult; import com.win.module.wms.controller.accountcalendar.vo.*; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; +import com.win.module.wms.controller.bom.vo.BomImportExcelVo; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; @@ -32,4 +34,6 @@ public interface AccountcalendarConvert { List convertList02(List list); + AccountcalendarImportErrorVO convert2(AccountcalendarDO bean); + } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/accountcalendar/AccountcalendarDO.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/accountcalendar/AccountcalendarDO.java index fc347c4f..4e03251b 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/accountcalendar/AccountcalendarDO.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/dataobject/accountcalendar/AccountcalendarDO.java @@ -71,10 +71,7 @@ public class AccountcalendarDO extends BaseDO { * 备注 */ private String remark; - /** - * 创建者ID - */ - private String creator; + /** * 删除时间 */ diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/accountcalendar/AccountcalendarMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/accountcalendar/AccountcalendarMapper.java index 3e6915aa..7f1d0593 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/accountcalendar/AccountcalendarMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/accountcalendar/AccountcalendarMapper.java @@ -8,7 +8,7 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.accountcalendar.vo.AccountcalendarExportReqVO; import com.win.module.wms.controller.accountcalendar.vo.AccountcalendarPageReqVO; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; -import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO; +import com.win.module.wms.dal.dataobject.bom.BomDO; import org.apache.ibatis.annotations.Mapper; import java.util.List; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/bom/BomMapper.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/bom/BomMapper.java index b5fb5ad5..0109e978 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/bom/BomMapper.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/bom/BomMapper.java @@ -8,8 +8,6 @@ import com.win.framework.mybatis.core.util.QueryWrapperUtils; import com.win.module.wms.controller.bom.vo.BomExportReqVO; import com.win.module.wms.controller.bom.vo.BomPageReqVO; 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.itempackaging.ItempackagingDO; import org.apache.ibatis.annotations.Mapper; import java.util.List; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarService.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarService.java index dabc9f03..675d1c0a 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarService.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarService.java @@ -78,5 +78,5 @@ public interface AccountcalendarService { List getAccountcalendarList(AccountcalendarExportReqVO exportReqVO); - List importAccountcalendarList(List accountcalendarImportExcelVos, Integer mode, boolean updatePart); + List importAccountcalendarList(List accountcalendarImportExcelVos, Integer mode, boolean updatePart); } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarServiceImpl.java index b1de58c8..e2e23e4e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/accountcalendar/AccountcalendarServiceImpl.java @@ -8,10 +8,14 @@ import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.datapermission.core.util.DataPermissionUtils; import com.win.module.wms.controller.accountcalendar.vo.*; +import com.win.module.wms.controller.bom.vo.BomImportErrorVO; import com.win.module.wms.convert.accountcalendar.AccountcalendarConvert; +import com.win.module.wms.convert.bom.BomConvert; import com.win.module.wms.dal.dataobject.accountcalendar.AccountcalendarDO; +import com.win.module.wms.dal.dataobject.bom.BomDO; import com.win.module.wms.dal.mysql.accountcalendar.AccountcalendarMapper; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; @@ -37,14 +41,15 @@ public class AccountcalendarServiceImpl implements AccountcalendarService { private AccountcalendarMapper accountcalendarMapper; @Override + @Transactional public Long createAccountcalendar(AccountcalendarCreateReqVO createReqVO) { validateAccountcalendarForCreateOrUpdate(createReqVO.getId(),createReqVO.getAvailable()); // 插入 - AccountcalendarDO accountcalendar = AccountcalendarConvert.INSTANCE.convert(createReqVO); + AccountcalendarDO accountCalendar = AccountcalendarConvert.INSTANCE.convert(createReqVO); validateAccountcalendarForCreateOrUpdate(null,createReqVO.getAvailable()); - accountcalendarMapper.insert(accountcalendar); + accountcalendarMapper.insert(accountCalendar); // 返回 - return accountcalendar.getId(); + return accountCalendar.getId(); } @Override @@ -88,47 +93,50 @@ public class AccountcalendarServiceImpl implements AccountcalendarService { return accountcalendarMapper.selectList(exportReqVO); } - public List importAccountcalendarList(List importAccountcalendars, Integer mode, boolean updatePart) { + public String validateAccountcalendarImport(AccountcalendarDO importAccountcalendar){ + StringBuilder message = new StringBuilder(); + try { + validateAccountcalendarExists(null); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + try { + validateAvailableExists(importAccountcalendar.getAvailable()); + } catch (ServiceException ex) { + message.append(ex.getMessage()).append(","); + } + return message.toString(); + } + + public List importAccountcalendarList(List importAccountcalendars, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(importAccountcalendars)) { throw exception(ACCOUNTCALENDAR_IMPORT_LIST_IS_EMPTY); } - List errorList = new ArrayList<>(); + List errorList = new ArrayList<>(); importAccountcalendars.forEach(importAccountcalendar -> { - String massage = ""; - // 校验,判断是否有不符合的原因 - if(mode != null){ - try { - validateAccountcalendarExists(null); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } - try { - validateAvailableExists(importAccountcalendar.getAvailable()); - } catch (ServiceException ex) { - massage += ex.getMessage() + ","; - } + AccountcalendarDO accountcalendarDO = AccountcalendarConvert.INSTANCE.convert(importAccountcalendar); + String massage = this.validateAccountcalendarImport(accountcalendarDO); + boolean flag = true; + if(!massage.isEmpty()){ + AccountcalendarImportErrorVO importErrorVO =AccountcalendarConvert.INSTANCE.convert2(accountcalendarDO); + importErrorVO.setImportStatus("失败"); + importErrorVO.setImportRemark(massage.substring(0, massage.length() - 1)); + errorList.add(importErrorVO); + flag = false; } - if(StrUtil.isNotEmpty(massage)){ - massage.substring(0,massage.length()-1); - errorList.add(importAccountcalendar); - } - if(errorList == null){ - // 判断如果不存在,在进行插入 - AccountcalendarDO existAccountcalendar = new AccountcalendarDO(); - if (existAccountcalendar == null&& mode != 3) { + if(flag){ + + + if ( mode != 3) { accountcalendarMapper.insert(AccountcalendarConvert.INSTANCE.convert(importAccountcalendar)); } - else if (existAccountcalendar != null && mode != 2) {// 如果存在,判断是否允许更新 - AccountcalendarDO accountcalendarDO = AccountcalendarConvert.INSTANCE.convert(importAccountcalendar); - accountcalendarDO.setId(existAccountcalendar.getId()); + else if ( mode != 2) { + // 如果存在,判断是否允许更新 accountcalendarMapper.updateById(accountcalendarDO); } } }); - //错误不为空并非部分更新,手工回滚 - if(!errorList.isEmpty() && !updatePart) { - TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); - } + return errorList; } diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java index 946e4529..6e79ad60 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java @@ -9,22 +9,15 @@ import com.win.framework.common.pojo.CustomConditions; import com.win.framework.common.pojo.PageResult; import com.win.framework.datapermission.core.util.DataPermissionUtils; import com.win.module.wms.controller.bom.vo.*; -import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO; import com.win.module.wms.convert.bom.BomConvert; -import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert; 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.productionlineitem.ProductionlineitemDO; -import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO; import com.win.module.wms.dal.mysql.bom.BomMapper; import org.springframework.stereotype.Service; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventoryinitRequest/InventoryinitRequestMainServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventoryinitRequest/InventoryinitRequestMainServiceImpl.java index 63cbdf08..63877a3e 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventoryinitRequest/InventoryinitRequestMainServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/inventoryinitRequest/InventoryinitRequestMainServiceImpl.java @@ -357,7 +357,7 @@ public class InventoryinitRequestMainServiceImpl implements InventoryinitRequest @Transactional public List importInventoryinitRequestMainList(List datas, Integer mode, boolean updatePart) { if (CollUtil.isEmpty(datas)) { - throw exception(PURCHASECLAIM_REQUEST_IMPORT_LIST_IS_EMPTY); + throw exception(INVENTORYINIT_REQUEST_MAIN_NOT_EXISTS); } List errorList = new ArrayList<>(); datas.forEach(createReqVO -> { diff --git a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/systemcalendar/SystemcalendarServiceImpl.java b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/systemcalendar/SystemcalendarServiceImpl.java index ba8b7224..61cc3a3f 100644 --- a/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/systemcalendar/SystemcalendarServiceImpl.java +++ b/win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/systemcalendar/SystemcalendarServiceImpl.java @@ -1,26 +1,20 @@ package com.win.module.wms.service.systemcalendar; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; import com.google.common.annotations.VisibleForTesting; 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.datapermission.core.util.DataPermissionUtils; -import com.win.module.wms.controller.bom.vo.BomImportErrorVO; import com.win.module.wms.controller.systemcalendar.vo.*; -import com.win.module.wms.convert.bom.BomConvert; import com.win.module.wms.convert.systemcalendar.SystemcalendarConvert; -import com.win.module.wms.dal.dataobject.bom.BomDO; import com.win.module.wms.dal.dataobject.systemcalendar.SystemcalendarDO; import com.win.module.wms.dal.mysql.systemcalendar.SystemcalendarMapper; import org.springframework.stereotype.Service; -import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; import java.util.ArrayList; -import java.util.Collection; import java.util.List; import static com.win.framework.common.exception.util.ServiceExceptionUtil.exception; @@ -136,7 +130,6 @@ public class SystemcalendarServiceImpl implements SystemcalendarService { } } }); - return errorList; } @@ -150,6 +143,7 @@ public class SystemcalendarServiceImpl implements SystemcalendarService { }); } + @VisibleForTesting private void validateSystemcalendarExists(Long id) { if (id == null) { @@ -160,6 +154,7 @@ public class SystemcalendarServiceImpl implements SystemcalendarService { } } + @VisibleForTesting private void validateMoubleExists(String mouble) { if (mouble == null) {