解决excel导入商品遇到的条码重复的问题

This commit is contained in:
jishenghua
2024-12-08 00:44:02 +08:00
parent e49b8e05d4
commit f41dbb34e1
5 changed files with 45 additions and 16 deletions

View File

@@ -350,6 +350,9 @@ public class ExceptionConstants {
//基本条码为空 //基本条码为空
public static final int MATERIAL_BARCODE_EMPTY_CODE = 8000027; public static final int MATERIAL_BARCODE_EMPTY_CODE = 8000027;
public static final String MATERIAL_BARCODE_EMPTY_MSG = "第%s行基本条码为空"; public static final String MATERIAL_BARCODE_EMPTY_MSG = "第%s行基本条码为空";
//EXCEL中有副条码在系统中已存在除自身商品之外
public static final int MATERIAL_EXCEL_IMPORT_MANY_BARCODE_EXIST_CODE = 80000028;
public static final String MATERIAL_EXCEL_IMPORT_MANY_BARCODE_EXIST_MSG = "抱歉EXCEL中有副条码在系统中已存在具体副条码为%s";
/** /**
* 单据信息 * 单据信息

View File

@@ -24,4 +24,7 @@ public interface MaterialExtendMapperEx {
int batchDeleteMaterialExtendByMIds(@Param("ids") String ids[]); int batchDeleteMaterialExtendByMIds(@Param("ids") String ids[]);
int specialUpdatePrice(MaterialExtend record); int specialUpdatePrice(MaterialExtend record);
List<MaterialExtend> getBasicInfoByMid(
@Param("materialId") Long materialId);
} }

View File

@@ -705,7 +705,7 @@ public class MaterialService {
} }
//批量校验excel中有无重复商品是指名称、规格、型号、颜色、单位、多属性 //批量校验excel中有无重复商品是指名称、规格、型号、颜色、单位、多属性
batchCheckExistMaterialListByParam(mList, name, standard, model, color, unit, sku); batchCheckExistMaterialListByParam(mList, name, standard, model, color, unit, sku);
//批量校验excel中有无重复条码 //批量校验excel中有无重复条码1-文档自身校验2-和数据库里面的商品校验)
batchCheckExistBarCodeByParam(mList, barCode, manyBarCode); batchCheckExistBarCodeByParam(mList, barCode, manyBarCode);
JSONObject materialExObj = new JSONObject(); JSONObject materialExObj = new JSONObject();
JSONObject basicObj = new JSONObject(); JSONObject basicObj = new JSONObject();
@@ -946,11 +946,24 @@ public class MaterialService {
} }
/** /**
* 批量校验excel中有无重复条码 * 批量校验excel中有无重复条码1-文档自身校验2-和数据库里面的商品校验)
* @param mList * @param mList
*/ */
public void batchCheckExistBarCodeByParam(List<MaterialWithInitStock> mList, public void batchCheckExistBarCodeByParam(List<MaterialWithInitStock> mList,
String barCode, String manyBarCode) { String barCode, String manyBarCode) throws Exception {
if(barCode.equals(manyBarCode)) {
//同一个商品的主副条码重复了,进行提醒
throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_EXCEL_IMPORT_BARCODE_EXIST_CODE,
String.format(ExceptionConstants.MATERIAL_EXCEL_IMPORT_BARCODE_EXIST_MSG, manyBarCode));
}
if(StringUtil.isNotEmpty(manyBarCode)) {
//EXCEL中有副条码在系统中已存在除自身商品之外
int count = materialExtendService.getCountByManyBarCodeWithoutUs(manyBarCode, barCode);
if (count>0) {
throw new BusinessRunTimeException(ExceptionConstants.MATERIAL_EXCEL_IMPORT_MANY_BARCODE_EXIST_CODE,
String.format(ExceptionConstants.MATERIAL_EXCEL_IMPORT_MANY_BARCODE_EXIST_MSG, manyBarCode));
}
}
for(MaterialWithInitStock material: mList){ for(MaterialWithInitStock material: mList){
JSONObject materialExObj = material.getMaterialExObj(); JSONObject materialExObj = material.getMaterialExObj();
String basicBarCode = ""; String basicBarCode = "";

View File

@@ -376,7 +376,6 @@ public class MaterialExtendService {
} }
public MaterialExtend getInfoByBarCode(String barCode)throws Exception { public MaterialExtend getInfoByBarCode(String barCode)throws Exception {
MaterialExtend materialExtend = new MaterialExtend();
MaterialExtendExample example = new MaterialExtendExample(); MaterialExtendExample example = new MaterialExtendExample();
example.createCriteria().andBarCodeEqualTo(barCode) example.createCriteria().andBarCodeEqualTo(barCode)
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); .andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
@@ -389,20 +388,25 @@ public class MaterialExtendService {
} }
/** /**
* 查询某个商品里面被清除的条码信息 * 商品的副条码和数据库里面的商品条码存在重复(除自身商品之外)
* @param barCodeList * @param manyBarCode
* @param mId * @param barCode
* @return * @return
* @throws Exception
*/ */
public List<MaterialExtend> getMeListByBarCodeAndMid(List<String> barCodeList, Long mId)throws Exception { public int getCountByManyBarCodeWithoutUs(String manyBarCode, String barCode) {
List<MaterialExtend> list = new ArrayList<>();
if(barCodeList.size()>0) {
MaterialExtendExample example = new MaterialExtendExample(); MaterialExtendExample example = new MaterialExtendExample();
example.createCriteria().andBarCodeNotIn(barCodeList).andMaterialIdEqualTo(mId) example.createCriteria().andBarCodeEqualTo(manyBarCode).andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED);
.andDeleteFlagNotEqualTo(BusinessConstants.DELETE_FLAG_DELETED); List<MaterialExtend> list = materialExtendMapper.selectByExample(example);
list = materialExtendMapper.selectByExample(example); if(list!=null && list.size()>0) {
} for(MaterialExtend me: list) {
return list; List<MaterialExtend> basicMeList = materialExtendMapperEx.getBasicInfoByMid(me.getMaterialId());
for(MaterialExtend basicMe: basicMeList) {
if(basicMe!=null && !barCode.equals(basicMe.getBarCode())) {
return 1;
}
}
}
}
return 0;
} }
} }

View File

@@ -75,4 +75,10 @@
where id = #{id,jdbcType=BIGINT} where id = #{id,jdbcType=BIGINT}
and ifnull(delete_flag,'0') !='1' and ifnull(delete_flag,'0') !='1'
</update> </update>
<select id="getBasicInfoByMid" resultType="com.jsh.erp.datasource.entities.MaterialExtend">
select * from jsh_material_extend
where material_id=#{materialId} and default_flag='1'
and ifnull(delete_Flag,'0') !='1'
</select>
</mapper> </mapper>