From b2b779807cdeecf026e22d37e6e2f19d61463f87 Mon Sep 17 00:00:00 2001 From: ligaode Date: Sat, 8 Feb 2025 16:00:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/apiadmin/base/BaseGoodsSpuRest.java | 6 + .../yxt/base/apiadmin/base/GoodsExcelVo.java | 41 +- .../base/basegoodssku/BaseGoodsSkuMapper.xml | 8 +- .../base/basegoodsspu/BaseGoodsSpuMapper.java | 2 + .../base/basegoodsspu/BaseGoodsSpuMapper.xml | 10 +- .../basegoodsspu/BaseGoodsSpuService.java | 6 + .../apiadmin/inventroy/WmsInitialRest.java | 500 ++++++++++++++++++ .../inventory/wmsinitial/ReturnExcelInfo.java | 12 + .../wmsinitial/WmsInitialExcelInfo.java | 51 ++ .../wmsinitialdetail/WmsInitialDetail.java | 2 +- .../WmsInitialDetailDetailsVo.java | 93 ---- .../wmsinitialdetail/WmsInitialDetailDto.java | 95 ---- .../WmsInitialDetailService.java | 4 + .../base/basegoodspu/BaseGoodsSpuFeign.java | 4 + 14 files changed, 629 insertions(+), 205 deletions(-) create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitial/ReturnExcelInfo.java create mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitial/WmsInitialExcelInfo.java delete mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailDetailsVo.java delete mode 100644 yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailDto.java diff --git a/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSpuRest.java b/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSpuRest.java index 1aec4e3d90..4b0fc2e7c9 100644 --- a/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSpuRest.java +++ b/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/BaseGoodsSpuRest.java @@ -90,4 +90,10 @@ public class BaseGoodsSpuRest { public ResultBean selIsGoodsID(@PathVariable("sid") String sid) { return baseGoodsSpuService.selIsGoodsID(sid); } + + @ApiOperation("根据图号和部门查询商品信息是否存在") + @GetMapping("/selByCodeAndDept") + ResultBean selByCodeAndDept(@RequestParam("code") String code,@RequestParam("deptSid") String deptSid){ + return baseGoodsSpuService.selByCodeAndDept(code,deptSid); + }; } diff --git a/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/GoodsExcelVo.java b/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/GoodsExcelVo.java index 7a6202cbe4..602f8daabf 100644 --- a/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/GoodsExcelVo.java +++ b/yxt-base-biz/src/main/java/com/yxt/base/apiadmin/base/GoodsExcelVo.java @@ -9,32 +9,45 @@ public class GoodsExcelVo { @ExportEntityMap(CnName = "序号", EnName = "rankNo") private Integer rankNo; - @ExportEntityMap(CnName = "商品名称", EnName = "goodsSpuName") + @ExportEntityMap(CnName = "商品名称*", EnName = "goodsSpuName") private String goodsSpuName; - @ExportEntityMap(CnName = "图号", EnName = "goodsSkuCode") + @ExportEntityMap(CnName = "图号*", EnName = "goodsSkuCode") private String goodsSkuCode; - @ExportEntityMap(CnName = "规格型号", EnName = "goodsSkuOwnSpec") + @ExportEntityMap(CnName = "规格型号*", EnName = "goodsSkuOwnSpec") private String goodsSkuOwnSpec; - @ExportEntityMap(CnName = "单位", EnName = "unit") + @ExportEntityMap(CnName = "单位*", EnName = "unit") private String unit; - @ExportEntityMap(CnName = "数量", EnName = "num") + @ExportEntityMap(CnName = "数量*", EnName = "num") private BigDecimal num; - @ExportEntityMap(CnName = "品牌", EnName = "brandName") + @ExportEntityMap(CnName = "品牌*", EnName = "brandName") private String brandName; - @ExportEntityMap(CnName = "厂家", EnName = "manufacturerName") + @ExportEntityMap(CnName = "厂家*", EnName = "manufacturerName") private String manufacturerName; - @ExportEntityMap(CnName = "供应商", EnName = "supplierName") + @ExportEntityMap(CnName = "供应商*", EnName = "supplierName") private String supplierName; - @ExportEntityMap(CnName = "销售指导价", EnName = "saleGuidePrice") + @ExportEntityMap(CnName = "销售指导价*", EnName = "saleGuidePrice") private String saleGuidePrice; - @ExportEntityMap(CnName = "入库单价", EnName = "inCost") + @ExportEntityMap(CnName = "入库单价*", EnName = "inCost") private String inCost; - @ExportEntityMap(CnName = "税率", EnName = "taxRate") + @ExportEntityMap(CnName = "税率*", EnName = "taxRate") private String taxRate; - @ExportEntityMap(CnName = "首次入库日期", EnName = "firstInDate") + @ExportEntityMap(CnName = "首次入库日期*", EnName = "firstInDate") private String firstInDate; - @ExportEntityMap(CnName = "商品类别", EnName = "goodsTypeName") + @ExportEntityMap(CnName = "商品类别*", EnName = "goodsTypeName") private String goodsTypeName; - @ExportEntityMap(CnName = "是否为一物一码", EnName = "isYwym") + @ExportEntityMap(CnName = "是否为一物一码*", EnName = "isYwym") private String isYwym; + + @ExportEntityMap(CnName = "商品spuSid(禁止修改)", EnName = "goodsSpuSid") + private String goodsSpuSid; + @ExportEntityMap(CnName = "商品skuSid(禁止修改)", EnName = "goodsSkuSid") + private String goodsSkuSid; + @ExportEntityMap(CnName = "品牌sid(禁止修改)", EnName = "brandSid") + private String brandSid; + @ExportEntityMap(CnName = "厂家sid(禁止修改)", EnName = "manufacturerSid") + private String manufacturerSid; + @ExportEntityMap(CnName = "商品类别sid(禁止修改)", EnName = "goodsTypeSid") + private String goodsTypeSid; + @ExportEntityMap(CnName = "商品类别编码(禁止修改)", EnName = "goodsTypeCode") + private String goodsTypeCode; } diff --git a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodssku/BaseGoodsSkuMapper.xml b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodssku/BaseGoodsSkuMapper.xml index 117a386d9a..8a9de6dcd7 100644 --- a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodssku/BaseGoodsSkuMapper.xml +++ b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodssku/BaseGoodsSkuMapper.xml @@ -114,7 +114,13 @@ brand.brandName, spu.manufacturerName, t.goodsTypeName, - IF(t.isGoodsID = 0, '否', '是') AS isYwym + IF(t.isGoodsID = 0, '否', '是') AS isYwym, + spu.sid AS goodsSpuSid, + sku.sid AS goodsSkuSid, + spu.brandSid, + spu.manufacturerSid, + t.sid AS goodsTypeSid, + t.goodsTypeCode FROM base_goods_sku sku LEFT JOIN base_goods_spu spu ON sku.goodsSpuSid = spu.sid diff --git a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.java b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.java index c3141f7ab6..7e75235256 100644 --- a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.java +++ b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.java @@ -24,4 +24,6 @@ public interface BaseGoodsSpuMapper extends BaseMapper { BaseGoodsSpu checkForInsert(@Param("goodsCode")String goodsCode, @Param("deptSid")String deptSid); BaseGoodsSpu checkForUpdate(@Param("goodsCode")String goodsCode,@Param("useOrgSid") String useOrgSid, @Param("sid")String sid); + + int selByCodeAndDept(@Param("code") String code,@Param("deptSid") String deptSid); } diff --git a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.xml b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.xml index c35556b94e..96727d2451 100644 --- a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.xml +++ b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuMapper.xml @@ -10,7 +10,8 @@ FROM LEFT JOIN base_goods_sku AS k ON p.sid = k.goodsSpuSid LEFT JOIN base_goods_sku_extend AS e ON k.sid = e.goodsSkuSid WHERE - p.sid = #{sid} + p.sid = + #{sid} @@ -87,4 +88,11 @@ WHERE and isDelete = 0 and sid != #{sid} + + diff --git a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuService.java b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuService.java index d9cfff3f47..55c34d2069 100644 --- a/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuService.java +++ b/yxt-base-biz/src/main/java/com/yxt/base/biz/base/basegoodsspu/BaseGoodsSpuService.java @@ -563,4 +563,10 @@ public class BaseGoodsSpuService extends MybatisBaseService selByCodeAndDept(String code, String deptSid) { + ResultBean rb = ResultBean.fireFail(); + int i = baseMapper.selByCodeAndDept(code,deptSid); + return rb.success().setData(i); + } } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialRest.java b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialRest.java index 44753d0e92..26cd9efd80 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialRest.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/apiadmin/inventroy/WmsInitialRest.java @@ -25,11 +25,511 @@ *********************************************************/ package com.yxt.wms.apiadmin.inventroy; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.date.DateUtil; +import com.yxt.common.core.result.ResultBean; +import com.yxt.wms.biz.inventory.wmsinitial.ReturnExcelInfo; +import com.yxt.wms.biz.inventory.wmsinitial.WmsInitial; +import com.yxt.wms.biz.inventory.wmsinitial.WmsInitialExcelInfo; +import com.yxt.wms.biz.inventory.wmsinitial.WmsInitialService; +import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetail; +import com.yxt.wms.biz.inventory.wmsinitialdetail.WmsInitialDetailService; +import com.yxt.wms.feign.base.basegoodspu.BaseGoodsSpuFeign; +import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuDetailsVo; +import com.yxt.wms.feign.base.basegoodssku.BaseGoodsSkuFeign; +import com.yxt.wms.feign.portal.sysorganization.SysOrganizationFeign; +import com.yxt.wms.feign.portal.sysorganization.SysOrganizationVo; +import com.yxt.wms.feign.portal.sysstafforg.SysStaffOrgFeign; +import com.yxt.wms.feign.portal.sysuser.SysUserFeign; +import com.yxt.wms.feign.portal.sysuser.SysUserVo; +import com.yxt.wms.utils.Rule; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.text.ParseException; +import java.util.*; +import java.util.regex.Pattern; @Api(tags = "期初上架") @RestController @RequestMapping("v1/wmsinitial") public class WmsInitialRest { + + @Autowired + private BaseGoodsSpuFeign baseGoodsSpuFeign; + @Autowired + private SysOrganizationFeign sysOrganizationFeign; + @Autowired + private SysStaffOrgFeign sysStaffOrgFeign; + @Autowired + private SysUserFeign sysUserFeign; + @Autowired + private WmsInitialService wmsInitialService; + @Autowired + private WmsInitialDetailService wmsInitialDetailService; + @Resource + private BaseGoodsSkuFeign baseGoodsSkuFeign; + + @PostMapping("/getExcelInfo") + @ResponseBody + @ApiOperation(value = "导入") + public ResultBean getExcelInfo(@RequestParam(value = "fileName") String fileName, @RequestParam(value = "file") MultipartFile file, @RequestParam("userSid") String userSid, @RequestParam("orgPath") String orgPath) throws IOException, ParseException { + String deptName = ""; + String deptSid = ""; + String useOrgSid = ""; + WmsInitial wmsInitial = new WmsInitial(); + List split = Arrays.asList(orgPath.split("/")); + if (split.size() > 1) { + //获取本级sid获取本级部门信息 + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(split.size() - 2)).getData(); + SysOrganizationVo sysOrganization1 = sysOrganizationFeign.fetchBySid(split.get(split.size() - 1)).getData(); + deptName = sysOrganization.getName() + "/" + sysOrganization1.getName(); + deptName = sysOrganization1.getName(); + deptSid = sysOrganization1.getSid(); + } else { + SysOrganizationVo sysOrganization = sysOrganizationFeign.fetchBySid(split.get(0)).getData(); + deptName = sysOrganization.getName(); + deptName = sysOrganization.getName(); + deptSid = sysOrganization.getSid(); + } + wmsInitial.setDeptSid(deptSid); + wmsInitial.setDeptName(deptName); + useOrgSid = sysStaffOrgFeign.getOrgSidByPath(orgPath).getData(); + //创建组织使用组织 + ResultBean organizationResultBean = sysOrganizationFeign.fetchBySid(useOrgSid); + if (organizationResultBean.getData() != null) { + wmsInitial.setUseOrgSid(useOrgSid); + wmsInitial.setUseOrgName(organizationResultBean.getData().getName()); + } + SysUserVo userVo = sysUserFeign.fetchBySid(userSid).getData(); + wmsInitial.setCreateBySid(userSid); + wmsInitial.setCreateByName(userVo.getName()); + wmsInitialService.save(wmsInitial); + if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { + return ResultBean.fireFail().setMsg("上传文件不正确"); + } + int[] resultCell = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; + List resultList = new ArrayList<>(); + boolean isExcel2003 = true; + if (fileName.matches("^.+\\.(?i)(xlsx)$")) { + isExcel2003 = false; + } + InputStream is = file.getInputStream(); + Workbook wb = null; + if (isExcel2003) { + wb = new HSSFWorkbook(is); + } else { + wb = new XSSFWorkbook(is); + } + Sheet sheet = wb.getSheetAt(0); + ReturnExcelInfo importReturn = getSheetVal(sheet, resultCell, deptSid); + if (StringUtils.isNotBlank(importReturn.getCheckInfo())) { + return ResultBean.fireFail().setMsg(importReturn.getCheckInfo()); + } + resultList = importReturn.getInfos(); + System.out.println("结果是--->" + resultList); + try { + for (WmsInitialExcelInfo wmsInitialExcelInfo : resultList) { + if ("是".equals(wmsInitialExcelInfo.getIsYwym())) { + Integer num = Integer.parseInt(wmsInitialExcelInfo.getNum()); + for (int i = 0; i < num; i++) { + WmsInitialDetail wmsInitialDetail = new WmsInitialDetail(); + BeanUtil.copyProperties(wmsInitialExcelInfo,wmsInitialDetail); + wmsInitialDetail.setBillSid(wmsInitial.getSid()); + wmsInitialDetail.setNum(new BigDecimal("1")); + wmsInitialDetail.setIsYwym(1); + wmsInitialDetailService.save(wmsInitialDetail); + } + }else { + WmsInitialDetail wmsInitialDetail = new WmsInitialDetail(); + BeanUtil.copyProperties(wmsInitialExcelInfo,wmsInitialDetail); + wmsInitialDetail.setBillSid(wmsInitial.getSid()); + wmsInitialDetail.setIsYwym(0); + wmsInitialDetailService.save(wmsInitialDetail); + } + } + return ResultBean.fireSuccess().setMsg("数据导入成功"); + } catch (Exception e) { + e.printStackTrace(); + return ResultBean.fireFail().setMsg("数据导入失败"); + } + } + + private ReturnExcelInfo getSheetVal(Sheet sheet, int[] resultCell, String deptSid) { + ReturnExcelInfo importReturn = new ReturnExcelInfo(); + List importVoList = new ArrayList<>(); + Set checkWord = new HashSet<>(); + for (int r = 1; r <= sheet.getLastRowNum(); r++) { + Row row = sheet.getRow(r); + if (row == null) { + continue; + } + WmsInitialExcelInfo importVo = new WmsInitialExcelInfo(); + int physicalNumberOfCells = row.getPhysicalNumberOfCells(); + if (physicalNumberOfCells < 10) { + physicalNumberOfCells = 10; + } + for (int i = 0; i < physicalNumberOfCells; i++) { + String trim = new String(); + try { + trim = getCellVal(row.getCell(i)).toString().trim(); + if (StringUtils.isBlank(trim)) { + NullPointerException nullPointerException = new NullPointerException(); + } + String temp = getCellVal(row.getCell(i)).toString().trim(); + for (int j = 0; j < resultCell.length; j++) { + if (i == resultCell[j]) { + switch (i) { + case 0: + importVo.setGoodsSpuName(temp); + break; + case 1: + importVo.setGoodsSkuCode(temp); + break; + case 2: + importVo.setGoodsSkuOwnSpec(temp); + break; + case 3: + importVo.setUnit(temp); + break; + case 4: + importVo.setNum(temp); + break; + case 5: + importVo.setBrandName(temp); + break; + case 6: + importVo.setManufacturerName(temp); + break; + case 7: + importVo.setSupplierName(temp); + break; + case 8: + importVo.setSaleGuidePrice(temp); + break; + case 9: + importVo.setInCost(temp); + break; + case 10: + importVo.setTaxRate(temp); + break; + case 11: + importVo.setFirstInDate(temp); + break; + case 12: + importVo.setGoodsTypeName(temp); + break; + case 13: + importVo.setIsYwym(temp); + break; + case 14: + importVo.setGoodsSpuSid(temp); + break; + case 15: + importVo.setGoodsSkuSid(temp); + break; + case 16: + importVo.setBrandSid(temp); + break; + case 17: + importVo.setManufacturerSid(temp); + break; + case 18: + importVo.setGoodsTypeSid(temp); + break; + case 19: + importVo.setGoodsTypeCode(temp); + break; + default: + break; + } + } else { + continue; + } + } + } catch (Exception e) { + if (StringUtils.isBlank(trim)) { + String word = new String(); + switch (i) { + case 0: + word = "商品spu名称"; + break; + case 1: + word = "图号"; + break; + case 2: + word = "规格型号"; + break; + case 3: + word = "单位"; + break; + case 4: + word = "数量"; + break; + case 5: + word = "品牌"; + break; + case 6: + word = "厂家"; + break; + case 7: + word = "供应商"; + break; + case 8: + word = "销售指导价"; + break; + case 9: + word = "入库单价"; + break; + case 10: + word = "税率"; + break; + case 11: + word = "首次入库日期"; + break; + case 12: + word = "商品类别"; + break; + case 13: + word = "是否为一物一码"; + break; + case 14: + word = "商品spuSid"; + break; + case 15: + word = "商品skuSid"; + break; + case 16: + word = "品牌sid"; + break; + case 17: + word = "厂家sid"; + break; + case 18: + word = "商品类别sid"; + break; + case 19: + word = "商品类别编码"; + break; + default: + break; + } + continue; + } + } + } + importVoList.add(importVo); + } + if (!importVoList.isEmpty()) { + for (WmsInitialExcelInfo excelInfo : importVoList) { + Integer i = baseGoodsSpuFeign.selByCodeAndDept(excelInfo.getGoodsSkuCode(), deptSid).getData(); + if (i == 0) { + checkWord.add("图号" + excelInfo.getGoodsSkuCode() + "不存在"); + break; + } + if (StringUtils.isBlank(excelInfo.getGoodsSpuName())) { + checkWord.add("商品名称不能为空"); + break; + } + if (StringUtils.isBlank(excelInfo.getGoodsSkuOwnSpec())) { + checkWord.add("规格型号不能为空"); + break; + } + if (StringUtils.isBlank(excelInfo.getUnit())) { + checkWord.add("单位不能为空"); + break; + } + if (StringUtils.isBlank(excelInfo.getNum())) { + checkWord.add("数量不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getNum())) { + String num = excelInfo.getNum(); + Pattern pattern = Pattern.compile("^(\\-|\\+)?\\d+(\\.\\d+)?$"); + boolean matches = pattern.matcher(num).matches(); + if (!matches) { + checkWord.add("数量必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getBrandName())) { + checkWord.add("品牌不能为空"); + break; + } + if (StringUtils.isBlank(excelInfo.getManufacturerName())) { + checkWord.add("厂家不能为空"); + break; + } + if (StringUtils.isBlank(excelInfo.getSupplierName())) { + checkWord.add("供应商不能为空"); + break; + } + if (StringUtils.isBlank(excelInfo.getSaleGuidePrice())) { + checkWord.add("销售指导价不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getSaleGuidePrice())) { + String saleGuidePrice = excelInfo.getSaleGuidePrice(); + Pattern pattern = Pattern.compile("^(\\-|\\+)?\\d+(\\.\\d+)?$"); + boolean matches = pattern.matcher(saleGuidePrice).matches(); + if (!matches) { + checkWord.add("销售指导价必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getInCost())) { + checkWord.add("入库单价不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getInCost())) { + String inCost = excelInfo.getInCost(); + Pattern pattern = Pattern.compile("^(\\-|\\+)?\\d+(\\.\\d+)?$"); + boolean matches = pattern.matcher(inCost).matches(); + if (!matches) { + checkWord.add("入库单价必须为数字"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getTaxRate())) { + checkWord.add("税率不能为空"); + break; + } + if (StringUtils.isNotBlank(excelInfo.getFirstInDate())) { + String firstInDate = excelInfo.getFirstInDate(); + String[] split = firstInDate.split("-"); + if (split.length != 2) { + checkWord.add("图号" + excelInfo.getGoodsSkuCode() + "导入的首次入库日期填写不正确,格式yyyy-MM"); + break; + } else if (!isFourDigitNumber(split[0]) || !isTwoDigitNumber(split[1])) { + checkWord.add("图号" + excelInfo.getGoodsSkuCode() + "导入的首次入库日期填写不正确,格式yyyy-MM"); + break; + } + } + if (StringUtils.isBlank(excelInfo.getGoodsTypeName())) { + checkWord.add("商品类别不能为空"); + break; + } + if (StringUtils.isBlank(excelInfo.getIsYwym())) { + checkWord.add("是否为一物一码不能为空"); + break; + } + } + } + StringBuffer sbcheck1 = new StringBuffer(); + if (!checkWord.isEmpty()) { + for (String s : checkWord) { + if (StringUtils.isBlank(s)) { + continue; + } + sbcheck1.append(s).append(";"); + } + } + if (sbcheck1.length() > 0) { + sbcheck1.delete(sbcheck1.length() - 1, sbcheck1.length()); + importReturn.setCheckInfo(sbcheck1.toString()); + importReturn.setInfos(new ArrayList<>()); + return importReturn; + } + importReturn.setInfos(importVoList); + return importReturn; + } + + public Object getCellVal(Cell cell) { + Object obj = null; + if (cell != null) { + switch (cell.getCellTypeEnum()) { + case BOOLEAN: + obj = cell.getBooleanCellValue(); + break; + case ERROR: + obj = cell.getErrorCellValue(); + break; + case NUMERIC: + obj = cell.getNumericCellValue(); + break; + case STRING: + obj = cell.getStringCellValue(); + break; + default: + break; + } + } + return obj; + } + + public boolean isFourDigitNumber(String input) { + // 判断输入是否为数字 + try { + int number = Integer.parseInt(input); + } catch (NumberFormatException e) { + return false; + } + // 判断输入是否为四位数 + if (input.length() != 4) { + return false; + } + return true; + } + + public boolean isTwoDigitNumber(String input) { + // 判断输入是否为数字 + try { + int number = Integer.parseInt(input); + } catch (NumberFormatException e) { + return false; + } + // 判断输入是否为二位数 + if (input.length() != 2) { + return false; + } + return true; + } + + public boolean isNumber(String input) { + // 判断输入是否为数字 + try { + double v = Double.parseDouble(input); + } catch (NumberFormatException e) { + return false; + } + return true; + } + + /** + * 获取商品唯一的goodsID + * + * @param goodsSkuSid + * @return + */ + private String getGoodsId(String goodsSkuSid) { + String goodsId = ""; + ResultBean resultBean = baseGoodsSkuFeign.getDetails(goodsSkuSid); + if (resultBean.getSuccess()) { + BaseGoodsSkuDetailsVo baseGoodsSkuDetailsVo = resultBean.getData(); + goodsId = baseGoodsSkuDetailsVo.getGoodsCode(); + String date = DateUtil.format(DateUtil.date(), "yyyyMM"); + goodsId = goodsId + date; + String i = wmsInitialDetailService.selectNum(goodsId); + if (com.yxt.common.base.utils.StringUtils.isNotBlank(i)) { + goodsId = Rule.getBillNo(goodsId, Integer.valueOf(i).intValue()); + } else { + goodsId = Rule.getBillNo(goodsId, 0); + } + } + return goodsId; + } } diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitial/ReturnExcelInfo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitial/ReturnExcelInfo.java new file mode 100644 index 0000000000..55de803d0c --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitial/ReturnExcelInfo.java @@ -0,0 +1,12 @@ +package com.yxt.wms.biz.inventory.wmsinitial; + +import lombok.Data; + +import java.util.ArrayList; +import java.util.List; + +@Data +public class ReturnExcelInfo { + private String checkInfo; + private List infos = new ArrayList<>(); +} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitial/WmsInitialExcelInfo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitial/WmsInitialExcelInfo.java new file mode 100644 index 0000000000..592c0385df --- /dev/null +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitial/WmsInitialExcelInfo.java @@ -0,0 +1,51 @@ +package com.yxt.wms.biz.inventory.wmsinitial; + +import com.yxt.common.core.utils.ExportEntityMap; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class WmsInitialExcelInfo { + + @ApiModelProperty("商品spu名称") + private String goodsSpuName; + @ApiModelProperty("图号") + private String goodsSkuCode; + @ApiModelProperty("规格型号") + private String goodsSkuOwnSpec; + @ApiModelProperty("单位") + private String unit; + @ApiModelProperty("数量") + private String num; + @ApiModelProperty("品牌") + private String brandName; + @ApiModelProperty("厂家") + private String manufacturerName; + @ApiModelProperty("供应商") + private String supplierName; + @ApiModelProperty("销售指导价") + private String saleGuidePrice; + @ApiModelProperty("入库单价") + private String inCost; + @ApiModelProperty("税率") + private String taxRate; + @ApiModelProperty("首次入库日期") + private String firstInDate; + @ApiModelProperty("商品类别") + private String goodsTypeName; + @ApiModelProperty("是否为一物一码") + private String isYwym; + @ApiModelProperty("商品spuSid") + private String goodsSpuSid; + @ApiModelProperty("商品skuSid") + private String goodsSkuSid; + @ApiModelProperty("品牌sid") + private String brandSid; + @ApiModelProperty("厂家sid") + private String manufacturerSid; + @ApiModelProperty("商品类别sid") + private String goodsTypeSid; + @ApiModelProperty("商品类别编码") + private String goodsTypeCode; + +} diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetail.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetail.java index 7bfa2c421f..920d0d62f6 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetail.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetail.java @@ -76,7 +76,7 @@ public class WmsInitialDetail extends BaseEntity { private BigDecimal inCost; // 入库单价 @ApiModelProperty("税率") private String taxRate; // 税率 - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") @ApiModelProperty("首次入库日期") private Date firstInDate; // 首次入库日期 @ApiModelProperty("商品类别sid") diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailDetailsVo.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailDetailsVo.java deleted file mode 100644 index 2668d5ab16..0000000000 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailDetailsVo.java +++ /dev/null @@ -1,93 +0,0 @@ -/********************************************************* - ********************************************************* - ******************** ******************* - ************* ************ - ******* _oo0oo_ ******* - *** o8888888o *** - * 88" . "88 * - * (| -_- |) * - * 0\ = /0 * - * ___/`---'\___ * - * .' \\| |// '. * - * / \\||| : |||// \ * - * / _||||| -:- |||||- \ * - * | | \\\ - /// | | * - * | \_| ''\---/'' |_/ | * - * \ .-\__ '-' ___/-. / * - * ___'. .' /--.--\ `. .'___ * - * ."" '< `.___\_<|>_/___.' >' "". * - * | | : `- \`.;`\ _ /`;.`/ - ` : | | * - * \ \ `_. \_ __\ /__ _/ .-` / / * - * =====`-.____`.___ \_____/___.-`___.-'===== * - * `=---=' * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * - *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* - *********************************************************/ -package com.yxt.wms.biz.inventory.wmsinitialdetail; - -import com.yxt.common.core.vo.Vo; -import com.fasterxml.jackson.annotation.JsonFormat; -import java.math.BigDecimal; -import java.util.Date; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -@ApiModel(value = "期初上架-明细 视图数据详情", description = "期初上架-明细 视图数据详情") -public class WmsInitialDetailDetailsVo implements Vo { - - private String sid; // sid - - @ApiModelProperty("单据sid") - private String billSid; // 单据sid - @ApiModelProperty("商品spuSid") - private String goodsSpuSid; // 商品spuSid - @ApiModelProperty("商品spu名称") - private String goodsSpuName; // 商品spu名称 - @ApiModelProperty("商品skuSid") - private String goodsSkuSid; // 商品skuSid - @ApiModelProperty("商品Sku名称") - private String goodsSkuTitle; // 商品Sku名称 - @ApiModelProperty("图号") - private String goodsSkuCode; // 图号 - @ApiModelProperty("规格型号") - private String goodsSkuOwnSpec; // 规格型号 - @ApiModelProperty("单位") - private String unit; // 单位 - @ApiModelProperty("数量") - private BigDecimal num; // 数量 - @ApiModelProperty("品牌sid") - private String brandSid; // 品牌sid - @ApiModelProperty("品牌名称") - private String brandName; // 品牌名称 - @ApiModelProperty("厂家sid") - private String manufacturerSid; // 厂家sid - @ApiModelProperty("厂家名称") - private String manufacturerName; // 厂家名称 - @ApiModelProperty("供应商sid") - private String supplierSid; // 供应商sid - @ApiModelProperty("供应商名称") - private String supplierName; // 供应商名称 - @ApiModelProperty("销售指导价") - private BigDecimal saleGuidePrice; // 销售指导价 - @ApiModelProperty("入库单价") - private BigDecimal inCost; // 入库单价 - @ApiModelProperty("税率") - private String taxRate; // 税率 - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - @ApiModelProperty("首次入库日期") - private Date firstInDate; - @ApiModelProperty("商品类别sid") - private String goodsTypeSid; // 商品类别sid - @ApiModelProperty("商品类别编码") - private String goodsTypeCode; // 商品类别编码 - @ApiModelProperty("商品类别名称") - private String goodsTypeName; // 商品类别名称 - @ApiModelProperty("已上架数量") - private BigDecimal listNum; // 已上架数量 - @ApiModelProperty("是否为一物一码") - private Integer isYwym; - @ApiModelProperty("是否已上传商品标签") - private Integer isScbq; -} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailDto.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailDto.java deleted file mode 100644 index e9c8900632..0000000000 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailDto.java +++ /dev/null @@ -1,95 +0,0 @@ -/********************************************************* - ********************************************************* - ******************** ******************* - ************* ************ - ******* _oo0oo_ ******* - *** o8888888o *** - * 88" . "88 * - * (| -_- |) * - * 0\ = /0 * - * ___/`---'\___ * - * .' \\| |// '. * - * / \\||| : |||// \ * - * / _||||| -:- |||||- \ * - * | | \\\ - /// | | * - * | \_| ''\---/'' |_/ | * - * \ .-\__ '-' ___/-. / * - * ___'. .' /--.--\ `. .'___ * - * ."" '< `.___\_<|>_/___.' >' "". * - * | | : `- \`.;`\ _ /`;.`/ - ` : | | * - * \ \ `_. \_ __\ /__ _/ .-` / / * - * =====`-.____`.___ \_____/___.-`___.-'===== * - * `=---=' * - * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * - *********__佛祖保佑__永无BUG__验收通过__钞票多多__********* - *********************************************************/ -package com.yxt.wms.biz.inventory.wmsinitialdetail; - -import com.yxt.common.core.dto.Dto; -import com.fasterxml.jackson.annotation.JsonFormat; - -import java.math.BigDecimal; -import java.util.Date; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -@Data -@ApiModel(value = "期初上架-明细 数据传输对象", description = "期初上架-明细 数据传输对象") -public class WmsInitialDetailDto implements Dto { - - private String sid; // sid - - @ApiModelProperty("单据sid") - private String billSid; // 单据sid - @ApiModelProperty("商品spuSid") - private String goodsSpuSid; // 商品spuSid - @ApiModelProperty("商品spu名称") - private String goodsSpuName; // 商品spu名称 - @ApiModelProperty("商品skuSid") - private String goodsSkuSid; // 商品skuSid - @ApiModelProperty("商品Sku名称") - private String goodsSkuTitle; // 商品Sku名称 - @ApiModelProperty("图号") - private String goodsSkuCode; // 图号 - @ApiModelProperty("规格型号") - private String goodsSkuOwnSpec; // 规格型号 - @ApiModelProperty("单位") - private String unit; // 单位 - @ApiModelProperty("数量") - private BigDecimal num; // 数量 - @ApiModelProperty("品牌sid") - private String brandSid; // 品牌sid - @ApiModelProperty("品牌名称") - private String brandName; // 品牌名称 - @ApiModelProperty("厂家sid") - private String manufacturerSid; // 厂家sid - @ApiModelProperty("厂家名称") - private String manufacturerName; // 厂家名称 - @ApiModelProperty("供应商sid") - private String supplierSid; // 供应商sid - @ApiModelProperty("供应商名称") - private String supplierName; // 供应商名称 - @ApiModelProperty("销售指导价") - private BigDecimal saleGuidePrice; // 销售指导价 - @ApiModelProperty("入库单价") - private BigDecimal inCost; // 入库单价 - @ApiModelProperty("税率") - private String taxRate; // 税率 - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - @ApiModelProperty("首次入库日期") - private Date firstInDate; - @ApiModelProperty("商品类别sid") - private String goodsTypeSid; // 商品类别sid - @ApiModelProperty("商品类别编码") - private String goodsTypeCode; // 商品类别编码 - @ApiModelProperty("商品类别名称") - private String goodsTypeName; // 商品类别名称 - @ApiModelProperty("已上架数量") - private BigDecimal listNum; // 已上架数量 - @ApiModelProperty("是否为一物一码") - private Integer isYwym; - @ApiModelProperty("是否已上传商品标签") - private Integer isScbq; -} \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java index ea4ac3f8d2..259aad2e25 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/biz/inventory/wmsinitialdetail/WmsInitialDetailService.java @@ -101,4 +101,8 @@ public class WmsInitialDetailService extends MybatisBaseService p = PagerUtil.pageToVo(pagging, null); return p; } + + public String selectNum(String goodsId) { + return null; + } } \ No newline at end of file diff --git a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodspu/BaseGoodsSpuFeign.java b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodspu/BaseGoodsSpuFeign.java index 5ac113f4fd..49d6e3f8d2 100644 --- a/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodspu/BaseGoodsSpuFeign.java +++ b/yxt-wms-biz/src/main/java/com/yxt/wms/feign/base/basegoodspu/BaseGoodsSpuFeign.java @@ -29,4 +29,8 @@ public interface BaseGoodsSpuFeign { @ApiOperation("根据sid查询商品") @GetMapping("/fetchEntityBySid") public ResultBean fetchEntityBySid(@RequestParam("sid") String sid); + + @ApiOperation("根据图号和部门查询商品信息是否存在") + @GetMapping("/selByCodeAndDept") + ResultBean selByCodeAndDept(@RequestParam("code") String code,@RequestParam("deptSid") String deptSid); }