Browse Source

采购价格单

master
廉洪喜 2 years ago
parent
commit
06a4a30b7f
  1. 11
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseprice/PurchasepriceController.java
  2. 51
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseprice/vo/PurchasepriceImportErrorVO.java
  3. 4
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/convert/purchaseprice/PurchasepriceConvert.java
  4. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchaseprice/PurchasepriceMapper.java
  5. 3
      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/purchaseprice/PurchasepriceService.java
  7. 82
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseprice/PurchasepriceServiceImpl.java
  8. 1
      win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java

11
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseprice/PurchasepriceController.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.purchaseprice.vo.*; import com.win.module.wms.controller.purchaseprice.vo.*;
import com.win.module.wms.controller.stdcostprice.vo.StdcostpriceRespVO; import com.win.module.wms.controller.purchasereceiptRequest.vo.PurchasereceiptRequestMainImportErrorVO;
import com.win.module.wms.convert.itembasic.ItembasicConvert;
import com.win.module.wms.convert.purchaseprice.PurchasepriceConvert; import com.win.module.wms.convert.purchaseprice.PurchasepriceConvert;
import com.win.module.wms.convert.stdcostprice.StdcostpriceConvert;
import com.win.module.wms.dal.dataobject.itembasic.ItembasicDO;
import com.win.module.wms.dal.dataobject.purchaseprice.PurchasepriceDO; import com.win.module.wms.dal.dataobject.purchaseprice.PurchasepriceDO;
import com.win.module.wms.enums.DictTypeConstants; import com.win.module.wms.enums.DictTypeConstants;
import com.win.module.wms.service.purchaseprice.PurchasepriceService; import com.win.module.wms.service.purchaseprice.PurchasepriceService;
@ -166,17 +162,18 @@ public class PurchasepriceController {
@Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true") @Parameter(name = "updatePart", description = "部分更新,默认为 true", example = "true")
}) })
@PreAuthorize("@ss.hasPermission('wms:purchaseprice:import')") @PreAuthorize("@ss.hasPermission('wms:purchaseprice: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<PurchasepriceImportExcelVO> list = ExcelUtils.read(file, PurchasepriceImportExcelVO.class); List<PurchasepriceImportExcelVO> list = ExcelUtils.read(file, PurchasepriceImportExcelVO.class);
List<PurchasepriceImportExcelVO> errorList = purchasepriceService.importPurchasepriceList(list, mode, updatePart); List<PurchasepriceImportErrorVO> errorList = purchasepriceService.importPurchasepriceList(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);
} }
} }

51
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/controller/purchaseprice/vo/PurchasepriceImportErrorVO.java

@ -0,0 +1,51 @@
package com.win.module.wms.controller.purchaseprice.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 PurchasepriceImportErrorVO {
@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("备注")
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/purchaseprice/PurchasepriceConvert.java

@ -1,6 +1,8 @@
package com.win.module.wms.convert.purchaseprice; package com.win.module.wms.convert.purchaseprice;
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.purchaseprice.vo.*; import com.win.module.wms.controller.purchaseprice.vo.*;
import com.win.module.wms.dal.dataobject.purchaseprice.PurchasepriceDO; import com.win.module.wms.dal.dataobject.purchaseprice.PurchasepriceDO;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
@ -31,4 +33,6 @@ public interface PurchasepriceConvert {
List<PurchasepriceExcelVO> convertList02(List<PurchasepriceDO> list); List<PurchasepriceExcelVO> convertList02(List<PurchasepriceDO> list);
PurchasepriceDO convert(PurchasepriceImportExcelVO purchaseprice); PurchasepriceDO convert(PurchasepriceImportExcelVO purchaseprice);
PurchasepriceImportErrorVO convert2(PurchasepriceDO bean);
} }

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/dal/mysql/purchaseprice/PurchasepriceMapper.java

@ -57,4 +57,5 @@ public interface PurchasepriceMapper extends BaseMapperX<PurchasepriceDO> {
default List<PurchasepriceDO> selectSeniorList(CustomConditions conditions) { default List<PurchasepriceDO> selectSeniorList(CustomConditions conditions) {
return selectList(QueryWrapperUtils.structure(conditions)); return selectList(QueryWrapperUtils.structure(conditions));
} }
} }

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

@ -159,7 +159,8 @@ public class BomServiceImpl implements BomService {
BomDO existAccountcalendar = bomMapper.selectByProductItemCode(bom.getProductItemCode()); BomDO existAccountcalendar = bomMapper.selectByProductItemCode(bom.getProductItemCode());
if (existAccountcalendar == null && mode != 3) { if (existAccountcalendar == null && mode != 3) {
bomMapper.insert(bomDO); bomMapper.insert(bomDO);
} else if (existAccountcalendar != null && mode != 2) { // 如果存在,判断是否允许更新 } else if (existAccountcalendar != null && mode != 2) {
// 如果存在,判断是否允许更新
bomDO.setId(existAccountcalendar.getId()); bomDO.setId(existAccountcalendar.getId());
bomMapper.updateById(bomDO); bomMapper.updateById(bomDO);
} }

2
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseprice/PurchasepriceService.java

@ -79,5 +79,5 @@ public interface PurchasepriceService {
*/ */
List<PurchasepriceDO> getPurchasepriceList(PurchasepriceExportReqVO exportReqVO); List<PurchasepriceDO> getPurchasepriceList(PurchasepriceExportReqVO exportReqVO);
List<PurchasepriceImportExcelVO> importPurchasepriceList(List<PurchasepriceImportExcelVO> purchaseprices, Integer mode, Boolean updatePart); List<PurchasepriceImportErrorVO> importPurchasepriceList(List<PurchasepriceImportExcelVO> purchaseprices, Integer mode, Boolean updatePart);
} }

82
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchaseprice/PurchasepriceServiceImpl.java

@ -2,13 +2,17 @@ package com.win.module.wms.service.purchaseprice;
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.purchaseprice.vo.*; import com.win.module.wms.controller.purchaseprice.vo.*;
import com.win.module.wms.convert.bom.BomConvert;
import com.win.module.wms.convert.purchaseprice.PurchasepriceConvert; import com.win.module.wms.convert.purchaseprice.PurchasepriceConvert;
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.purchaseprice.PurchasepriceDO; import com.win.module.wms.dal.dataobject.purchaseprice.PurchasepriceDO;
import com.win.module.wms.dal.mysql.purchaseprice.PurchasepriceMapper; import com.win.module.wms.dal.mysql.purchaseprice.PurchasepriceMapper;
@ -89,68 +93,80 @@ public class PurchasepriceServiceImpl implements PurchasepriceService {
return purchasepriceMapper.selectList(exportReqVO); return purchasepriceMapper.selectList(exportReqVO);
} }
@Override private String validatePurchasepriceImport( PurchasepriceDO purchaseprice ){
public List<PurchasepriceImportExcelVO> importPurchasepriceList(List<PurchasepriceImportExcelVO> purchaseprices, Integer mode, Boolean updatePart) { StringBuilder message = new StringBuilder();
if (CollUtil.isEmpty(purchaseprices)) {
throw exception(PURCHASEPRICE_IMPORT_LIST_IS_EMPTY);
}
List<PurchasepriceImportExcelVO> errorList = new ArrayList<>();
purchaseprices.forEach(purchaseprice -> {
// 校验,判断是否有不符合的原因
String massage = "";
if(mode != null) {
try { try {
validatePurchasepriceExists(null); validatePurchasepriceExists(null);
} catch (ServiceException ex) { } catch (ServiceException ex) {
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
try { try {
validateCodeExists(null, purchaseprice.getItemCode()); validateCodeExists(null, purchaseprice.getItemCode());
} catch (ServiceException ex) { } catch (ServiceException ex) {
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
try { try {
validateSupplierCodeExists(purchaseprice.getSupplierCode()); validateSupplierCodeExists(purchaseprice.getSupplierCode());
} catch (ServiceException ex) { } catch (ServiceException ex) {
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
try { try {
validateCurrencyExists(purchaseprice.getCurrency()); validateCurrencyExists(purchaseprice.getCurrency());
} catch (ServiceException ex) { } catch (ServiceException ex) {
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
try { try {
validatePriceExists(purchaseprice.getPrice()); validatePriceExists(purchaseprice.getPrice());
} catch (ServiceException ex) { } catch (ServiceException ex) {
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
try { try {
validateAvailableExists(purchaseprice.getAvailable()); validateAvailableExists(purchaseprice.getAvailable());
} catch (ServiceException ex) { } catch (ServiceException ex) {
massage += ex.getMessage() + ","; message.append(ex.getMessage()).append(",");
} }
return message.toString();
if (StrUtil.isNotEmpty(massage)) {
massage.substring(0, massage.length() - 1);
errorList.add(purchaseprice);
} }
if (errorList == null) {
// 判断如果不存在,在进行插入 public List<PurchasepriceDO> validatePurchaseprice( PurchasepriceDO purchaseprice){
OwnerDO existConfigurationSetting = null; QueryWrapper queryWrapper = new QueryWrapper();
if (existConfigurationSetting == null && mode != 3) { queryWrapper.in("supplier_code", purchaseprice.getSupplierCode());
purchasepriceMapper.insert(PurchasepriceConvert.INSTANCE.convert(purchaseprice)); queryWrapper.in("item_code", purchaseprice.getItemCode());
} else if (existConfigurationSetting != null && mode != 2) {// 如果存在,判断是否允许更新 queryWrapper.in("available",purchaseprice.getAvailable());
PurchasepriceDO purchasepriceDo = PurchasepriceConvert.INSTANCE.convert(purchaseprice); List<PurchasepriceDO> purchasepriceDO = purchasepriceMapper.selectList(queryWrapper);
purchasepriceDo.setId(existConfigurationSetting.getId()); return purchasepriceDO;
purchasepriceMapper.updateById(purchasepriceDo);
} }
@Override
public List<PurchasepriceImportErrorVO> importPurchasepriceList(List<PurchasepriceImportExcelVO> purchaseprices, Integer mode, Boolean updatePart) {
if (CollUtil.isEmpty(purchaseprices)) {
throw exception(PURCHASEPRICE_IMPORT_LIST_IS_EMPTY);
} }
List<PurchasepriceImportErrorVO> errorList = new ArrayList<>();
purchaseprices.forEach(purchaseprice -> {
PurchasepriceDO purchasepriceDO = PurchasepriceConvert.INSTANCE.convert(purchaseprice);
String message = this.validatePurchasepriceImport(purchasepriceDO);
boolean flag = true;
if(!message.isEmpty()){
PurchasepriceImportErrorVO importErrorVO = PurchasepriceConvert.INSTANCE.convert2(purchasepriceDO);
importErrorVO.setImportStatus("失败");
importErrorVO.setImportRemark(message.substring(0, message.length() - 1));
errorList.add(importErrorVO);
flag = false;
}
if(flag) {
List<PurchasepriceDO> PurchasepriceDO = validatePurchaseprice(purchasepriceDO);
for(PurchasepriceDO purchase: PurchasepriceDO){
purchase.setAvailable("FALSE");
}
if(!PurchasepriceDO.isEmpty()) {
purchasepriceMapper.updateBatch(PurchasepriceDO);
}
purchasepriceMapper.insert(purchasepriceDO);
} }
}); });
//错误不为空并非部分更新,手工回滚
if(!errorList.isEmpty() && !updatePart) {
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
}
return errorList; return errorList;
} }
private void validatePurchasepriceForCreateOrUpdate(Long id,String supplierCode,String itemCode, String currency,BigDecimal price,String available) { private void validatePurchasepriceForCreateOrUpdate(Long id,String supplierCode,String itemCode, String currency,BigDecimal price,String available) {

1
win-module-wms/win-module-wms-biz/src/main/java/com/win/module/wms/service/purchasereceiptRequest/PurchasereceiptRequestMainServiceImpl.java

@ -203,6 +203,7 @@ public class PurchasereceiptRequestMainServiceImpl implements PurchasereceiptReq
return purchasereceiptRequestMainMapper.selectSeniorList(conditions); return purchasereceiptRequestMainMapper.selectSeniorList(conditions);
} }
@Override @Override
@Transactional @Transactional
public List<PurchasereceiptRequestMainImportErrorVO> importPurchasereceiptRequestMainList(List<PurchasereceiptRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) { public List<PurchasereceiptRequestMainImportErrorVO> importPurchasereceiptRequestMainList(List<PurchasereceiptRequestMainCreateReqVO> datas, Integer mode, boolean updatePart) {

Loading…
Cancel
Save