package com.steerinfo.dil.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.steerinfo.dil.mapper.RmsMaterialMapper; import com.steerinfo.dil.mapper.RmsMaterialSteelMapper; import com.steerinfo.dil.model.RmsMaterialSteel; import com.steerinfo.dil.service.IRmsMaterialSteelService; import com.steerinfo.dil.util.DataChange; import com.steerinfo.dil.util.DecompileUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; /** * @author luobang * @create 2021-09-26 20:23 */ @Service("rmsMaterialSteelService") public class RmsMaterialSteelServiceImpl implements IRmsMaterialSteelService { @Autowired RmsMaterialSteelMapper rmsMaterialSteelMapper; @Autowired RmsMaterialMapper rmsMaterialMapper; /** * 1.获取最大id数 * @return */ @Override public int count() { if(rmsMaterialSteelMapper.getCount()==null){ return 0; } return rmsMaterialSteelMapper.getCount().intValue(); } /** * 2.新增物资 * @param * @param * @return */ @Override public Integer insertRmsMaterialSteel(String str) throws ParseException { //将扫描吊牌结果根据分隔符截取字符串 String[] split = str.split("-"); //炉号 String FurnaceNumber=split[2]; //理重 String TheoreticalWeight=split[4]; //支数 String materialCount =split[5]; //生产日期 String MaterialProductionDate =split[6]; //唯一编码 String MaterialOnlyCode=split[7]; //编码 String MaterialCode=split[8]; //根据物资唯一编码去物资钢材表找物资,如果为空,则新增物资表,不为空,使用这一个ID HashMap mapRmsMaterialSteel = new HashMap<>(); mapRmsMaterialSteel.put("materialOnlyCode",MaterialOnlyCode); BigDecimal k =getMaterialSteelId(mapRmsMaterialSteel); if(k !=null ){ return k.intValue(); } //根据物资编码规查找唯一的物资ID HashMap mapMaterial = new HashMap<>(); String materialCode =MaterialCode.contains("\n")? MaterialCode.substring(0, MaterialCode.length() - 1):MaterialCode; mapMaterial.put("materialCode", materialCode); BigDecimal mi = rmsMaterialMapper.getMaterialId(mapMaterial); //开始创建实绩 RmsMaterialSteel rmsMaterialSteel = new RmsMaterialSteel(); //设置物资主键ID rmsMaterialSteel.setMaterialSteelId(rmsMaterialSteelMapper.getCount()); //设置物资id rmsMaterialSteel.setMaterialId(mi); //设置物资唯一编码 rmsMaterialSteel.setMaterialOnlyCode(MaterialOnlyCode); //设置炉号 rmsMaterialSteel.setMaterialFurnaceNumber(FurnaceNumber); //设置物资理重 //如果物资支数为空,就设置物资磅重 if (materialCount.length()==0) { rmsMaterialSteel.setMaterialSingleBundleWeight(new BigDecimal(TheoreticalWeight)); //反编译物资理重 DecompileUtil decompileUtil=new DecompileUtil(); int weight = decompileUtil.DecompileUtiltest(TheoreticalWeight); rmsMaterialSteel.setMaterialTheoreticalWeight(new BigDecimal(weight)); }else { rmsMaterialSteel.setMaterialTheoreticalWeight(new BigDecimal(TheoreticalWeight)); } //设置物资支数 //判断支数不为空 if (materialCount.length()!=0) { rmsMaterialSteel.setMaterialCount(new BigDecimal(materialCount)); } if(MaterialProductionDate.substring(7, MaterialProductionDate.length()-1).length()!=0) { //设置物资生产日期,将字符串转换为时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); Date parse = sdf.parse(MaterialProductionDate); rmsMaterialSteel.setMaterialProductionDate(parse); }else { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); Date parse = sdf.parse(MaterialProductionDate); rmsMaterialSteel.setMaterialProductionDate(parse); } //设置常规字段 rmsMaterialSteel.setInsertTime(new Date()); rmsMaterialSteel.setInsertUsername("admin"); rmsMaterialSteelMapper.insertSelective(rmsMaterialSteel); return rmsMaterialSteel.getId().intValue(); } /** * 2.新增物资 * @param * @param * @return */ @Override public Map insertRmsMaterialSteel2(String str) throws ParseException { //将扫描吊牌结果根据分隔符截取字符串 String[] split = str.split("-"); //炉号 String FurnaceNumber=split[2]; //理重 String TheoreticalWeight=split[4]; //支数 String materialCount =split[5]; //生产日期 String MaterialProductionDate =split[6]; //唯一编码 String MaterialOnlyCode=split[7]; //编码 String MaterialCode=split[8]; //根据物资唯一编码去物资钢材表找物资,如果为空,则新增物资表,不为空,使用这一个ID HashMap mapRmsMaterialSteel = new HashMap<>(); mapRmsMaterialSteel.put("materialOnlyCode",MaterialOnlyCode); Map k =getMaterialSteel(mapRmsMaterialSteel); //根据物资编码规查找唯一的物资ID HashMap mapMaterial = new HashMap<>(); String materialCode =MaterialCode.contains("\n")? MaterialCode.substring(0, MaterialCode.length() - 1):MaterialCode; mapMaterial.put("materialCode", materialCode); Map mi= rmsMaterialMapper.getMaterialId2(mapMaterial); if(k !=null ){ k.putAll(mi); return k; } //开始创建实绩 RmsMaterialSteel rmsMaterialSteel = new RmsMaterialSteel(); //设置物资主键ID rmsMaterialSteel.setMaterialSteelId(rmsMaterialSteelMapper.getCount()); //设置物资id rmsMaterialSteel.setMaterialId(new BigDecimal(mi.get("materialId").toString())); //设置物资唯一编码 rmsMaterialSteel.setMaterialOnlyCode(MaterialOnlyCode); //设置炉号 rmsMaterialSteel.setMaterialFurnaceNumber(FurnaceNumber); //设置物资理重 //如果物资支数为空,就设置物资磅重 if (materialCount.length()==0) { rmsMaterialSteel.setMaterialSingleBundleWeight(new BigDecimal(TheoreticalWeight)); //反编译物资理重 DecompileUtil decompileUtil=new DecompileUtil(); int weight = decompileUtil.DecompileUtiltest(TheoreticalWeight); rmsMaterialSteel.setMaterialTheoreticalWeight(new BigDecimal(weight)); }else { rmsMaterialSteel.setMaterialTheoreticalWeight(new BigDecimal(TheoreticalWeight)); } //设置物资支数 //判断支数不为空 if (materialCount.length()!=0) { rmsMaterialSteel.setMaterialCount(new BigDecimal(materialCount)); } if(MaterialProductionDate.substring(7, MaterialProductionDate.length()-1).length()!=0) { //设置物资生产日期,将字符串转换为时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); Date parse = sdf.parse(MaterialProductionDate); rmsMaterialSteel.setMaterialProductionDate(parse); }else { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); Date parse = sdf.parse(MaterialProductionDate); rmsMaterialSteel.setMaterialProductionDate(parse); } //设置常规字段 rmsMaterialSteel.setInsertTime(new Date()); rmsMaterialSteel.setInsertUsername("admin"); rmsMaterialSteelMapper.insertSelective(rmsMaterialSteel); mi.putAll(JSON.parseObject(JSON.toJSONString(rmsMaterialSteel),new TypeReference>(){})); return mi; } private Map getMaterialSteel(HashMap mapRmsMaterialSteel) { return rmsMaterialSteelMapper.getMaterialSteel(mapRmsMaterialSteel); } /** * 3.根据物资唯一编码查询物资钢材ID * @param map * @return */ @Override public BigDecimal getMaterialSteelId(Map map) { return rmsMaterialSteelMapper.selectMaterialSteelId(map); } }