RmsMaterialSteelServiceImpl.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.TypeReference;
  4. import com.steerinfo.dil.mapper.RmsMaterialMapper;
  5. import com.steerinfo.dil.mapper.RmsMaterialSteelMapper;
  6. import com.steerinfo.dil.model.RmsMaterialSteel;
  7. import com.steerinfo.dil.service.IRmsMaterialSteelService;
  8. import com.steerinfo.dil.util.DataChange;
  9. import com.steerinfo.dil.util.DecompileUtil;
  10. import org.springframework.beans.factory.annotation.Autowired;
  11. import org.springframework.stereotype.Service;
  12. import java.math.BigDecimal;
  13. import java.text.ParseException;
  14. import java.text.SimpleDateFormat;
  15. import java.util.Date;
  16. import java.util.HashMap;
  17. import java.util.Map;
  18. /**
  19. * @author luobang
  20. * @create 2021-09-26 20:23
  21. */
  22. @Service("rmsMaterialSteelService")
  23. public class RmsMaterialSteelServiceImpl implements IRmsMaterialSteelService {
  24. @Autowired
  25. RmsMaterialSteelMapper rmsMaterialSteelMapper;
  26. @Autowired
  27. RmsMaterialMapper rmsMaterialMapper;
  28. /**
  29. * 1.获取最大id数
  30. * @return
  31. */
  32. @Override
  33. public int count() {
  34. if(rmsMaterialSteelMapper.getCount()==null){
  35. return 0;
  36. }
  37. return rmsMaterialSteelMapper.getCount().intValue();
  38. }
  39. /**
  40. * 2.新增物资
  41. * @param
  42. * @param
  43. * @return
  44. */
  45. @Override
  46. public Integer insertRmsMaterialSteel(String str) throws ParseException {
  47. //将扫描吊牌结果根据分隔符截取字符串
  48. String[] split = str.split("-");
  49. //炉号
  50. String FurnaceNumber=split[2];
  51. //理重
  52. String TheoreticalWeight=split[4];
  53. //支数
  54. String materialCount =split[5];
  55. //生产日期
  56. String MaterialProductionDate =split[6];
  57. //唯一编码
  58. String MaterialOnlyCode=split[7];
  59. //编码
  60. String MaterialCode=split[8];
  61. //根据物资唯一编码去物资钢材表找物资,如果为空,则新增物资表,不为空,使用这一个ID
  62. HashMap<String, Object> mapRmsMaterialSteel = new HashMap<>();
  63. mapRmsMaterialSteel.put("materialOnlyCode",MaterialOnlyCode);
  64. BigDecimal k =getMaterialSteelId(mapRmsMaterialSteel);
  65. if(k !=null ){
  66. return k.intValue();
  67. }
  68. //根据物资编码规查找唯一的物资ID
  69. HashMap<String, Object> mapMaterial = new HashMap<>();
  70. String materialCode =MaterialCode.contains("\n")? MaterialCode.substring(0, MaterialCode.length() - 1):MaterialCode;
  71. mapMaterial.put("materialCode", materialCode);
  72. BigDecimal mi = rmsMaterialMapper.getMaterialId(mapMaterial);
  73. //开始创建实绩
  74. RmsMaterialSteel rmsMaterialSteel = new RmsMaterialSteel();
  75. //设置物资主键ID
  76. rmsMaterialSteel.setMaterialSteelId(rmsMaterialSteelMapper.getCount());
  77. //设置物资id
  78. rmsMaterialSteel.setMaterialId(mi);
  79. //设置物资唯一编码
  80. rmsMaterialSteel.setMaterialOnlyCode(MaterialOnlyCode);
  81. //设置炉号
  82. rmsMaterialSteel.setMaterialFurnaceNumber(FurnaceNumber);
  83. //设置物资理重
  84. //如果物资支数为空,就设置物资磅重
  85. if (materialCount.length()==0) {
  86. rmsMaterialSteel.setMaterialSingleBundleWeight(new BigDecimal(TheoreticalWeight));
  87. //反编译物资理重
  88. DecompileUtil decompileUtil=new DecompileUtil();
  89. int weight = decompileUtil.DecompileUtiltest(TheoreticalWeight);
  90. rmsMaterialSteel.setMaterialTheoreticalWeight(new BigDecimal(weight));
  91. }else {
  92. rmsMaterialSteel.setMaterialTheoreticalWeight(new BigDecimal(TheoreticalWeight));
  93. }
  94. //设置物资支数
  95. //判断支数不为空
  96. if (materialCount.length()!=0) {
  97. rmsMaterialSteel.setMaterialCount(new BigDecimal(materialCount));
  98. }
  99. if(MaterialProductionDate.substring(7, MaterialProductionDate.length()-1).length()!=0) {
  100. //设置物资生产日期,将字符串转换为时间
  101. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
  102. Date parse = sdf.parse(MaterialProductionDate);
  103. rmsMaterialSteel.setMaterialProductionDate(parse);
  104. }else {
  105. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  106. Date parse = sdf.parse(MaterialProductionDate);
  107. rmsMaterialSteel.setMaterialProductionDate(parse);
  108. }
  109. //设置常规字段
  110. rmsMaterialSteel.setInsertTime(new Date());
  111. rmsMaterialSteel.setInsertUsername("admin");
  112. rmsMaterialSteelMapper.insertSelective(rmsMaterialSteel);
  113. return rmsMaterialSteel.getId().intValue();
  114. }
  115. /**
  116. * 2.新增物资
  117. * @param
  118. * @param
  119. * @return
  120. */
  121. @Override
  122. public Map<String,Object> insertRmsMaterialSteel2(String str) throws ParseException {
  123. //将扫描吊牌结果根据分隔符截取字符串
  124. String[] split = str.split("-");
  125. //炉号
  126. String FurnaceNumber=split[2];
  127. //理重
  128. String TheoreticalWeight=split[4];
  129. //支数
  130. String materialCount =split[5];
  131. //生产日期
  132. String MaterialProductionDate =split[6];
  133. //唯一编码
  134. String MaterialOnlyCode=split[7];
  135. //编码
  136. String MaterialCode=split[8];
  137. //根据物资唯一编码去物资钢材表找物资,如果为空,则新增物资表,不为空,使用这一个ID
  138. HashMap<String, Object> mapRmsMaterialSteel = new HashMap<>();
  139. mapRmsMaterialSteel.put("materialOnlyCode",MaterialOnlyCode);
  140. Map<String,Object> k =getMaterialSteel(mapRmsMaterialSteel);
  141. //根据物资编码规查找唯一的物资ID
  142. HashMap<String, Object> mapMaterial = new HashMap<>();
  143. String materialCode =MaterialCode.contains("\n")? MaterialCode.substring(0, MaterialCode.length() - 1):MaterialCode;
  144. mapMaterial.put("materialCode", materialCode);
  145. Map<String,Object> mi= rmsMaterialMapper.getMaterialId2(mapMaterial);
  146. if(k !=null ){
  147. k.putAll(mi);
  148. return k;
  149. }
  150. //开始创建实绩
  151. RmsMaterialSteel rmsMaterialSteel = new RmsMaterialSteel();
  152. //设置物资主键ID
  153. rmsMaterialSteel.setMaterialSteelId(rmsMaterialSteelMapper.getCount());
  154. //设置物资id
  155. rmsMaterialSteel.setMaterialId(new BigDecimal(mi.get("materialId").toString()));
  156. //设置物资唯一编码
  157. rmsMaterialSteel.setMaterialOnlyCode(MaterialOnlyCode);
  158. //设置炉号
  159. rmsMaterialSteel.setMaterialFurnaceNumber(FurnaceNumber);
  160. //设置物资理重
  161. //如果物资支数为空,就设置物资磅重
  162. if (materialCount.length()==0) {
  163. rmsMaterialSteel.setMaterialSingleBundleWeight(new BigDecimal(TheoreticalWeight));
  164. //反编译物资理重
  165. DecompileUtil decompileUtil=new DecompileUtil();
  166. int weight = decompileUtil.DecompileUtiltest(TheoreticalWeight);
  167. rmsMaterialSteel.setMaterialTheoreticalWeight(new BigDecimal(weight));
  168. }else {
  169. rmsMaterialSteel.setMaterialTheoreticalWeight(new BigDecimal(TheoreticalWeight));
  170. }
  171. //设置物资支数
  172. //判断支数不为空
  173. if (materialCount.length()!=0) {
  174. rmsMaterialSteel.setMaterialCount(new BigDecimal(materialCount));
  175. }
  176. if(MaterialProductionDate.substring(7, MaterialProductionDate.length()-1).length()!=0) {
  177. //设置物资生产日期,将字符串转换为时间
  178. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
  179. Date parse = sdf.parse(MaterialProductionDate);
  180. rmsMaterialSteel.setMaterialProductionDate(parse);
  181. }else {
  182. SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
  183. Date parse = sdf.parse(MaterialProductionDate);
  184. rmsMaterialSteel.setMaterialProductionDate(parse);
  185. }
  186. //设置常规字段
  187. rmsMaterialSteel.setInsertTime(new Date());
  188. rmsMaterialSteel.setInsertUsername("admin");
  189. rmsMaterialSteelMapper.insertSelective(rmsMaterialSteel);
  190. mi.putAll(JSON.parseObject(JSON.toJSONString(rmsMaterialSteel),new TypeReference<Map<String,Object>>(){}));
  191. return mi;
  192. }
  193. private Map<String, Object> getMaterialSteel(HashMap<String, Object> mapRmsMaterialSteel) {
  194. return rmsMaterialSteelMapper.getMaterialSteel(mapRmsMaterialSteel);
  195. }
  196. /**
  197. * 3.根据物资唯一编码查询物资钢材ID
  198. * @param map
  199. * @return
  200. */
  201. @Override
  202. public BigDecimal getMaterialSteelId(Map<String, Object> map) {
  203. return rmsMaterialSteelMapper.selectMaterialSteelId(map);
  204. }
  205. }