Commit 3e2bbd0a authored by 季圣华's avatar 季圣华
Browse files

解决多单位商品导入的bug

parent 4bb91404
...@@ -879,10 +879,10 @@ CREATE TABLE `jsh_unit` ( ...@@ -879,10 +879,10 @@ CREATE TABLE `jsh_unit` (
-- ---------------------------- -- ----------------------------
-- Records of jsh_unit -- Records of jsh_unit
-- ---------------------------- -- ----------------------------
INSERT INTO `jsh_unit` VALUES ('15', '个,箱(1:12)', '个', '箱', null, null, '12', null, null, '63', '0'); INSERT INTO `jsh_unit` VALUES ('15', '个/(箱=12)', '个', '箱', null, null, '12', null, null, '63', '0');
INSERT INTO `jsh_unit` VALUES ('19', '个,盒(1:15)', '个', '盒', null, null, '15', null, null, '63', '0'); INSERT INTO `jsh_unit` VALUES ('19', '个/(盒=15)', '个', '盒', null, null, '15', null, null, '63', '0');
INSERT INTO `jsh_unit` VALUES ('20', '盒,箱(1:8)', '盒', '箱', null, null, '8', null, null, '63', '0'); INSERT INTO `jsh_unit` VALUES ('20', '盒/(箱=8盒)', '盒', '箱', null, null, '8', null, null, '63', '0');
INSERT INTO `jsh_unit` VALUES ('21', '瓶,箱(1:12)', '瓶', '箱', null, null, '12', null, null, '63', '0'); INSERT INTO `jsh_unit` VALUES ('21', '瓶/(箱=12)', '瓶', '箱', null, null, '12', null, null, '63', '0');
-- ---------------------------- -- ----------------------------
-- Table structure for jsh_user -- Table structure for jsh_user
......
...@@ -295,7 +295,7 @@ public class ExceptionConstants { ...@@ -295,7 +295,7 @@ public class ExceptionConstants {
public static final String MATERIAL_BARCODE_EXISTS_MSG = "商品条码:%s重复"; public static final String MATERIAL_BARCODE_EXISTS_MSG = "商品条码:%s重复";
//商品-单位匹配不上 //商品-单位匹配不上
public static final int MATERIAL_UNIT_MATE_CODE = 8000006; public static final int MATERIAL_UNIT_MATE_CODE = 8000006;
public static final String MATERIAL_UNIT_MATE_MSG = "抱歉,单位匹配不上,请完善计量单位信息!"; public static final String MATERIAL_UNIT_MATE_MSG = "抱歉,商品条码:%s的单位匹配不上,请完善计量单位信息!";
/** /**
* 单据信息 * 单据信息
* type = 85 * type = 85
......
...@@ -382,7 +382,7 @@ public class DepotItemService { ...@@ -382,7 +382,7 @@ public class DepotItemService {
Unit unitInfo = materialService.findUnit(materialExtend.getMaterialId()); //查询计量单位信息 Unit unitInfo = materialService.findUnit(materialExtend.getMaterialId()); //查询计量单位信息
if (StringUtil.isNotEmpty(unitInfo.getName())) { if (StringUtil.isNotEmpty(unitInfo.getName())) {
String basicUnit = unitInfo.getBasicUnit(); //基本单位 String basicUnit = unitInfo.getBasicUnit(); //基本单位
if (unit.equals(basicUnit)) { //如果等于基单位 if (unit.equals(basicUnit)) { //如果等于基单位
depotItem.setBasicNumber(oNumber); //数量一致 depotItem.setBasicNumber(oNumber); //数量一致
} else if (unit.equals(unitInfo.getOtherUnit())) { //如果等于副单位 } else if (unit.equals(unitInfo.getOtherUnit())) { //如果等于副单位
depotItem.setBasicNumber(oNumber.multiply(new BigDecimal(unitInfo.getRatio())) ); //数量乘以比例 depotItem.setBasicNumber(oNumber.multiply(new BigDecimal(unitInfo.getRatio())) ); //数量乘以比例
......
...@@ -472,7 +472,7 @@ public class MaterialService { ...@@ -472,7 +472,7 @@ public class MaterialService {
String color = ExcelUtils.getContent(src, i, 3); //颜色 String color = ExcelUtils.getContent(src, i, 3); //颜色
String categoryName = ExcelUtils.getContent(src, i, 4); //类别 String categoryName = ExcelUtils.getContent(src, i, 4); //类别
String expiryNum = ExcelUtils.getContent(src, i, 5); //保质期 String expiryNum = ExcelUtils.getContent(src, i, 5); //保质期
String unit = ExcelUtils.getContent(src, i, 6); //基单位 String unit = ExcelUtils.getContent(src, i, 6); //基单位
//校验名称、单位是否为空 //校验名称、单位是否为空
if(StringUtil.isNotEmpty(name) && StringUtil.isNotEmpty(unit)) { if(StringUtil.isNotEmpty(name) && StringUtil.isNotEmpty(unit)) {
MaterialWithInitStock m = new MaterialWithInitStock(); MaterialWithInitStock m = new MaterialWithInitStock();
...@@ -516,14 +516,13 @@ public class MaterialService { ...@@ -516,14 +516,13 @@ public class MaterialService {
basicObj.put("wholesaleDecimal", wholesaleDecimal); basicObj.put("wholesaleDecimal", wholesaleDecimal);
basicObj.put("lowDecimal", lowDecimal); basicObj.put("lowDecimal", lowDecimal);
materialExObj.put("basic", basicObj); materialExObj.put("basic", basicObj);
if(StringUtil.isNotEmpty(manyUnit.trim())){ //多单位 if(StringUtil.isNotEmpty(manyUnit) && StringUtil.isNotEmpty(ratio)){ //多单位
String manyUnitAll = unit + "," + manyUnit + "(1:" + ratio + ")"; Long unitId = unitService.getUnitIdByParam(unit, manyUnit, Integer.parseInt(ratio.trim()));
Long unitId = unitService.getUnitIdByName(manyUnitAll);
if(unitId != null) { if(unitId != null) {
m.setUnitId(unitId); m.setUnitId(unitId);
} else { } else {
throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_UNIT_MATE_CODE, throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_UNIT_MATE_CODE,
String.format(ExceptionConstants.MATERIAL_UNIT_MATE_MSG)); String.format(ExceptionConstants.MATERIAL_UNIT_MATE_MSG, manyBarCode));
} }
JSONObject otherObj = new JSONObject(); JSONObject otherObj = new JSONObject();
otherObj.put("barCode", manyBarCode); otherObj.put("barCode", manyBarCode);
...@@ -544,11 +543,13 @@ public class MaterialService { ...@@ -544,11 +543,13 @@ public class MaterialService {
int col = 15+j; int col = 15+j;
if(col < src.getColumns()){ if(col < src.getColumns()){
String depotName = ExcelUtils.getContent(src, 1, col); //获取仓库名称 String depotName = ExcelUtils.getContent(src, 1, col); //获取仓库名称
Long depotId = depotService.getIdByName(depotName); if(StringUtil.isNotEmpty(depotName)) {
if(depotId!=0L){ Long depotId = depotService.getIdByName(depotName);
String stockStr = ExcelUtils.getContent(src, i, col); if(depotId!=0L){
if(StringUtil.isNotEmpty(stockStr)) { String stockStr = ExcelUtils.getContent(src, i, col);
stockMap.put(depotId, parseBigDecimalEx(stockStr)); if(StringUtil.isNotEmpty(stockStr)) {
stockMap.put(depotId, parseBigDecimalEx(stockStr));
}
} }
} }
} }
......
...@@ -192,7 +192,7 @@ public class MaterialExtendService { ...@@ -192,7 +192,7 @@ public class MaterialExtendService {
this.updateMaterialExtend(materialExtend); this.updateMaterialExtend(materialExtend);
} }
} }
//处理条码的排序,基单位排第一个 //处理条码的排序,基单位排第一个
if (null != sortJson && sortJson.size()>0) { if (null != sortJson && sortJson.size()>0) {
//此处为更新的逻辑 //此处为更新的逻辑
for (int i = 0; i < sortJson.size(); i++) { for (int i = 0; i < sortJson.size(); i++) {
...@@ -207,7 +207,7 @@ public class MaterialExtendService { ...@@ -207,7 +207,7 @@ public class MaterialExtendService {
this.updateMaterialExtend(materialExtend); this.updateMaterialExtend(materialExtend);
} }
} else { } else {
//新增的时候将第一条记录设置为默认基单位 //新增的时候将第一条记录设置为默认基单位
MaterialExtendExample example = new MaterialExtendExample(); MaterialExtendExample example = new MaterialExtendExample();
example.createCriteria().andMaterialIdEqualTo(materialId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); example.createCriteria().andMaterialIdEqualTo(materialId).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
List<MaterialExtend> meList = materialExtendMapper.selectByExample(example); List<MaterialExtend> meList = materialExtendMapper.selectByExample(example);
......
...@@ -208,13 +208,17 @@ public class UnitService { ...@@ -208,13 +208,17 @@ public class UnitService {
} }
/** /**
* 根据名称获取类型 * 根据条件查询单位id
* @param name * @param basicUnit
* @param otherUnit
* @param ratio
* @return
*/ */
public Long getUnitIdByName(String name){ public Long getUnitIdByParam(String basicUnit, String otherUnit, Integer ratio){
Long unitId = null; Long unitId = null;
UnitExample example = new UnitExample(); UnitExample example = new UnitExample();
example.createCriteria().andNameEqualTo(name).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); example.createCriteria().andBasicUnitEqualTo(basicUnit).andOtherUnitEqualTo(otherUnit).andRatioEqualTo(ratio)
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
List<Unit> list = unitMapper.selectByExample(example); List<Unit> list = unitMapper.selectByExample(example);
if(list!=null && list.size()>0) { if(list!=null && list.size()>0) {
unitId = list.get(0).getId(); unitId = list.get(0).getId();
......
...@@ -204,7 +204,11 @@ public class ExcelUtils { ...@@ -204,7 +204,11 @@ public class ExcelUtils {
public static String getContent(Sheet src, int rowNum, int colNum) { public static String getContent(Sheet src, int rowNum, int colNum) {
return src.getRow(rowNum)[colNum].getContents().trim(); if(colNum < src.getRow(rowNum).length) {
return src.getRow(rowNum)[colNum].getContents().trim();
} else {
return null;
}
} }
/** /**
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment