Browse Source

标准成本价格单导入

master
廉洪喜 2 years ago
parent
commit
91588c8a58
  1. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/bom/BomController.java
  2. 3
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/StdcostpriceController.java
  3. 54
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/vo/StdcostpriceImportErrorVO.java
  4. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/stdcostprice/StdcostpriceConvert.java
  5. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java
  6. 2
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceService.java
  7. 105
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceServiceImpl.java

4
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/bom/BomController.java

@ -177,6 +177,6 @@ public class BomController {
String url = ExcelUtils.writeLocalFile("物料清单导入错误数据" + LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8")) + ".xls", "错误列表", errorList);
returnMap.put("errorFile", url);
}
return success(returnMap);
}
return success(returnMap);
}
}

3
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/StdcostpriceController.java

@ -10,6 +10,7 @@ import com.win.module.system.api.user.AdminUserApi;
import com.win.module.system.api.user.dto.AdminUserRespDTO;
import com.win.module.wms.controller.bom.vo.BomRespVO;
import com.win.module.wms.controller.itembasic.vo.ItembasicExcelVO;
import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO;
import com.win.module.wms.controller.stdcostprice.vo.*;
import com.win.module.wms.controller.stdcostprice.vo.StdcostpriceImportExcelVo;
import com.win.module.wms.convert.bom.BomConvert;
@ -182,7 +183,7 @@ public class StdcostpriceController {
@RequestParam(value = "mode") Integer mode,
@RequestParam(value = "updatePart", required = false, defaultValue = "false") Boolean updatePart) throws Exception {
List<StdcostpriceImportExcelVo> list = ExcelUtils.read(file, StdcostpriceImportExcelVo.class);
List<StdcostpriceImportExcelVo> errorList = stdcostpriceService.importStdcostpriceList(list, mode, updatePart);
List<StdcostpriceImportErrorVO> errorList = stdcostpriceService.importStdcostpriceList(list, mode, updatePart);
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("errorCount", errorList.size());
if(!errorList.isEmpty()) {

54
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/stdcostprice/vo/StdcostpriceImportErrorVO.java

@ -0,0 +1,54 @@
package com.win.module.wms.controller.stdcostprice.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 StdcostpriceImportErrorVO {
@ExcelProperty("供应商代码")
private String supplierCode;
@ExcelProperty("物料代码")
private String itemCode;
@ExcelProperty(value = "币种", converter = DictConvert.class)
@DictFormat(DictTypeConstants.CURRENCY)
private String currency;
@ExcelProperty("价格")
private BigDecimal price;
@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(value = "备注")
private String remark;
@ExcelProperty(value = "导入状态", index = 0)
private String importStatus;
@ExcelProperty(value = "导入说明", index = 1)
private String importRemark;
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/stdcostprice/StdcostpriceConvert.java

@ -35,4 +35,6 @@ public interface StdcostpriceConvert {
StdcostpriceDO convert(StdcostpriceImportExcelVo bean);
StdcostpriceImportErrorVO convert1(StdcostpriceDO bean);
}

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/bom/BomServiceImpl.java

@ -165,7 +165,6 @@ public class BomServiceImpl implements BomService {
}
}
});
return errorList;
}

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceService.java

@ -80,7 +80,7 @@ public interface StdcostpriceService {
*/
List<StdcostpriceDO> getStdcostpriceList(StdcostpriceExportReqVO exportReqVO);
List<StdcostpriceImportExcelVo> importStdcostpriceList(List<StdcostpriceImportExcelVo> importTeam, Integer mode, boolean updatePart);
List<StdcostpriceImportErrorVO> importStdcostpriceList(List<StdcostpriceImportExcelVo> importTeam, Integer mode, boolean updatePart);
/**
* 查询标准成本价格是否存在

105
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/stdcostprice/StdcostpriceServiceImpl.java

@ -9,10 +9,13 @@ 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.stdcostprice.vo.*;
import com.win.module.wms.convert.purchasereceiptRequest.PurchasereceiptRequestMainConvert;
import com.win.module.wms.convert.stdcostprice.StdcostpriceConvert;
import com.win.module.wms.dal.dataobject.purchasereceiptRequest.PurchasereceiptRequestMainDO;
import com.win.module.wms.dal.dataobject.stdcostprice.StdcostpriceDO;
import com.win.module.wms.dal.mysql.stdcostprice.StdcostpriceMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.validation.annotation.Validated;
@ -90,69 +93,75 @@ public class StdcostpriceServiceImpl implements StdcostpriceService {
public List<StdcostpriceDO> getStdcostpriceList(StdcostpriceExportReqVO exportReqVO) {
return stdcostpriceMapper.selectList(exportReqVO);
}
public List<StdcostpriceImportExcelVo> importStdcostpriceList(List<StdcostpriceImportExcelVo> stdcostprices, Integer mode, boolean updatePart) {
private String validateStdcostpriceImport(StdcostpriceDO stdcostprice) {
StringBuilder message = new StringBuilder();
try {
validateStdcostpriceExists(null);
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateCodeExists(null,stdcostprice.getSupplierCode(),stdcostprice.getItemCode());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateSuppercodeExists(stdcostprice.getSupplierCode());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateCurrencyExists(stdcostprice.getCurrency());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validatePriceExists(stdcostprice.getPrice());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
try {
validateAvailableExists(stdcostprice.getAvailable());
} catch (ServiceException ex) {
message.append(ex.getMessage()).append(",");
}
return message.toString();
}
@Override
@Transactional
public List<StdcostpriceImportErrorVO> importStdcostpriceList(List<StdcostpriceImportExcelVo> stdcostprices, Integer mode, boolean updatePart) {
if (CollUtil.isEmpty(stdcostprices)) {
throw exception(STDCOSTPRICE_IMPORT_LIST_IS_EMPTY);
}
List<StdcostpriceImportExcelVo> errorList = new ArrayList<>();
List<StdcostpriceImportErrorVO> errorList = new ArrayList<>();
stdcostprices.forEach(stdcostprice -> {
// 校验,判断是否有不符合的原因
String massage = "";
StdcostpriceDO stdcostpriceDO = StdcostpriceConvert.INSTANCE.convert(stdcostprice);
if(mode != null){
try {
validateStdcostpriceExists(null);
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateCodeExists(null,stdcostprice.getSupplierCode(),stdcostprice.getItemCode());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateSuppercodeExists(stdcostprice.getSupplierCode());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateCurrencyExists(stdcostprice.getCurrency());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validatePriceExists(stdcostprice.getPrice());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
try {
validateAvailableExists(stdcostprice.getAvailable());
} catch (ServiceException ex) {
massage += ex.getMessage() + ",";
}
if(StrUtil.isNotEmpty(massage)){
massage.substring(0,massage.length()-1);
errorList.add(stdcostprice);
}
if(errorList == null) {
String massage = this.validateStdcostpriceImport(stdcostpriceDO);
boolean flag = true;
if(!massage.isEmpty()){
StdcostpriceImportErrorVO importErrorVO = StdcostpriceConvert.INSTANCE.convert1(stdcostpriceDO);
importErrorVO.setImportStatus("失败");
importErrorVO.setImportRemark(massage.substring(0, massage.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
//写入数据
if(flag) {
// 判断如果不存在,在进行插入
StdcostpriceDO existStdcostprice = stdcostpriceMapper.selectByStdcostpriceCode(stdcostprice.getSupplierCode(),stdcostprice.getItemCode());
if (existStdcostprice == null && mode != 3) {
stdcostpriceMapper.insert(StdcostpriceConvert.INSTANCE.convert(stdcostprice));
} else if (existStdcostprice != null && mode != 2) {// 如果存在,判断是否允许更新
StdcostpriceDO stdcostpriceDO = StdcostpriceConvert.INSTANCE.convert(stdcostprice);
stdcostpriceMapper.insert(stdcostpriceDO);
} else if (existStdcostprice != null && mode != 2) {
// 如果存在,判断是否允许更新
stdcostpriceDO.setId(existStdcostprice.getId());
stdcostpriceMapper.updateById(stdcostpriceDO);
}
}
}
});
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList;
}

Loading…
Cancel
Save