package com.steerinfo.dil.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.TypeReference; import com.steerinfo.dil.mapper.WmspInboundScanResultMapper; import com.steerinfo.dil.mapper.WmspInboundStackResultMapper; import com.steerinfo.dil.model.WmspInboundScanResult; import com.steerinfo.dil.model.WmspInboundStackResult; import com.steerinfo.dil.service.IRmsMaterialSteelService; import com.steerinfo.dil.service.IWmsInboundScanResultService; import com.steerinfo.dil.service.IWmspInboundGroupService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * @author luobang * @create 2021-09-07 15:12 */ @Service public class WmsInboundScanResultServiceImpl implements IWmsInboundScanResultService { @Autowired private WmspInboundScanResultMapper wmspInboundScanResultMapper; @Autowired private WmspInboundStackResultMapper wmspInboundStackResultMapper; @Autowired private IWmspInboundGroupService wmspInboundGroupService; @Autowired private IRmsMaterialSteelService rmsMaterialSteelService; //判断是否重复扫码 @Override public Integer checkScanTag(Mapmap,BigDecimal loadId){ //获取扫描吊牌实绩 String resultMaterial = (String) map.get("resultMaterial"); //获取物资扫描实绩 String subResultMaterial = resultMaterial.substring(0,resultMaterial.length() - 1); Map checkScanMap = new HashMap<>(); checkScanMap.put("resultMaterial",subResultMaterial); checkScanMap.put("loadId",loadId); //根据扫描实绩查询出扫描实绩个数 Integer j=(checkScanResult(checkScanMap)).size(); if (j!=0) return 0; return 1; } /** * 1.新增吊钢工扫描吊牌实绩 * @param wmspInboundScanResult * @return */ @Override public Integer insertWmsInboundScanResult(WmspInboundScanResult wmspInboundScanResult) { return wmspInboundScanResultMapper.insertSelective(wmspInboundScanResult); } /** * 2.获取最大ID * @return */ @Override public BigDecimal count() { return wmspInboundScanResultMapper.getCount(); } /** * 3.获取吊钢工最大扫描数 * @param * @return */ @Override public int scanNumber(Map map) { if (wmspInboundScanResultMapper.getScanNumber(map)==null){ return 0; } return wmspInboundScanResultMapper.getScanNumber(map).intValue(); } /** * 4.更新扫描吊牌实绩 * @param wmspInboundScanResult * @return */ @Override public Integer updateWmsInboundScanResult(WmspInboundScanResult wmspInboundScanResult) { return wmspInboundScanResultMapper.updateByPrimaryKeySelective(wmspInboundScanResult); } /** * 更新异常值 // * @param wmspInboundScanResult * @return */ @Override public Integer updateInboundAbnormal(Map map) { return wmspInboundScanResultMapper.updateInboundAbnormal(map); } @Override public Integer updateWmsInboundScanById(Map map) { return wmspInboundScanResultMapper.updateInboundScanResult(map); } /** * 获取扫描吊牌实绩 * @param map * @return */ @Override public List> getScanTagResult(Map map) { return wmspInboundScanResultMapper.selectScanTagResult(map); } /** * 获取正常入库 * @param map * @return */ @Override public List> getIssuedScanTagResult(Map map) { return wmspInboundScanResultMapper.selectIssuedScanTagResult(map); } /** * 获取异常入库 * @param map * @return */ @Override public List> getIssuedScanTagNoResult(Map map) { return wmspInboundScanResultMapper.selectIssuedScanTagNoResult(map); } /** * 判断是否重复插入 * @param * @param * @return */ @Override public List> checkScanResult(Mapmap) { return wmspInboundScanResultMapper.checkScanResult(map); } /* 更新退库扫描实绩 */ @Override public Integer updateWmsReboundScanById(Map map5) { return wmspInboundScanResultMapper.updateReboundScanResult(map5); } /* 展示已下发退库实绩 */ @Override public List> getIssuedScanResult(Map map) { return wmspInboundScanResultMapper.selectReIssuedScanResult(map); } /* 展示未下发退库实绩 */ @Override public List> getReScanTagResult(Map map) { return wmspInboundScanResultMapper.selectReScanTagResult(map); } /* 展示已下发退库实绩 */ @Override public List> getIssuedScanIvResult(Map map) { return wmspInboundScanResultMapper.selectIvIssuedScanResult(map); } /* 展示未下发退库实绩 */ @Override public List> getIvScanTagResult(Map map) { return wmspInboundScanResultMapper.selectIvScanTagResult(map); } @Override public List>getScanResult(BigDecimal loadId) { return wmspInboundScanResultMapper.getScanResult(loadId); } @Override public BigDecimal getLoadId(Map map) { return wmspInboundScanResultMapper.getLoadId(map); } /** * 得到另外一个扫描实绩ID * @param otherLoadMap * @return */ @Override public List> getOntherLoadId(Map otherLoadMap) { return wmspInboundScanResultMapper.getOtherScanResultId(otherLoadMap); } @Override public BigDecimal getOtherLoadId(Map map) { return wmspInboundScanResultMapper.getOtherLoadId(map); } @Override public Integer getOtherMaterialSteelId(Map map) { return wmspInboundScanResultMapper.getOtherMaterialSteelId(map); } @Override public List> selectStacking(Map map) { return wmspInboundScanResultMapper.selectStackNo(map); } @Override public Integer updateStatus(Map map) { return wmspInboundScanResultMapper.updataStatus(map); } /** * 判断物资是否为线材 * @param materialId * @return */ @Override public BigDecimal selectMaterialTypeByMaterialId(BigDecimal materialId) { return wmspInboundScanResultMapper.selectMaterialTypeByMaterialId(materialId); } /** * 判断物质是否已经被扫 * @param userName * @param resultMaterial * @return */ @Override public int isExist(String userName, String resultMaterial) { return wmspInboundScanResultMapper.isExist(userName,resultMaterial); } /** * 查询扫描没有下发的物质 * @param userName * @return */ @Override public List> noIssueScanResult(String userName) { return wmspInboundScanResultMapper.noIssueScanResult(userName); } @Override public Map createInboundScanResultByResultMaterial(Integer scanedCount, String userName,String resultMaterial) throws ParseException { //创建入库扫描实绩、并且给对象赋值 WmspInboundScanResult wmspInboundScanResult=new WmspInboundScanResult(); //设置主键自增,这里需要修改 wmspInboundScanResult.setId(count()); //获取班次次序的吊牌信息 String[] result = resultMaterial.split("-"); if(result.length == 10){ String shiftOrder = result[9]; wmspInboundScanResult.setShiftOrder(shiftOrder); } //分组 //根据用户名和分组状态查询到分组信息 BigDecimal groupId= wmspInboundGroupService.getGroupIdByUserName(userName); wmspInboundScanResult.setInboundGroupId(groupId); //吊钢工扫描吊牌结果 wmspInboundScanResult.setResultMaterial(resultMaterial); //扫描吊牌信息 wmspInboundScanResult.setResultLoadTime(new Date()); //新增钢材物资ID Map materialSteel = rmsMaterialSteelService.insertRmsMaterialSteel2(resultMaterial); wmspInboundScanResult.setMaterialId(new BigDecimal(materialSteel.get("materialSteelId").toString())); //创建用户 //insertUsername wmspInboundScanResult.setInboundAbnormalis(new BigDecimal(0)); //设置入库物资件数,默认一件 wmspInboundScanResult.setInboundMaterialNumber(new BigDecimal(1)); // 状态:0:未下发;1:已下发 wmspInboundScanResult.setResultStatus(new BigDecimal(0)); //吊钢工已扫物资次数 ,目前已扫描为没有下发的物质 //BigDecimal scanCount= wmspInboundScanResultMapper.getScanedNumber(userId); wmspInboundScanResult.setResultNumber(new BigDecimal(scanedCount)); //逻辑删除:1:删除,0:未删除 wmspInboundScanResult.setResultDeleted(new BigDecimal(0)); //扫码用户 wmspInboundScanResult.setInsertUsername(userName); //创建时间 wmspInboundScanResult.setInsertTime(new Date()); int status = wmspInboundScanResultMapper.insertSelective(wmspInboundScanResult); //判断是否创建成功 if (status>0){ materialSteel.putAll(JSON.parseObject(JSON.toJSONString(wmspInboundScanResult),new TypeReference>(){})); return materialSteel; } return null; } @Override @Transactional(rollbackFor = Exception.class) public int createInboundScanResultByFind(List> list, Map map) throws Exception { List results=new ArrayList<>(); String userName=map.get("userName").toString(); for(Map temp:list){ if(temp==null || temp.get("shiftOrder")==null || temp.get("resultMaterial")==null){ throw new Exception("存在空值,终止"); } //创建入库扫描实绩、并且给对象赋值 WmspInboundScanResult wmspInboundScanResult=new WmspInboundScanResult(); //设置自增主键 wmspInboundScanResult.setId(count()); //获取班次次序的吊牌信息 wmspInboundScanResult.setShiftOrder(temp.get("shiftOrder").toString()); //分组 //根据用户名和分组状态查询到分组信息 BigDecimal groupId= wmspInboundGroupService.getGroupIdByUserName(userName); wmspInboundScanResult.setInboundGroupId(groupId); //吊钢工扫描吊牌结果 wmspInboundScanResult.setResultMaterial(temp.get("resultMaterial").toString()); //扫描吊牌信息 wmspInboundScanResult.setResultLoadTime(new Date()); //新增钢材物资ID Map materialSteel = rmsMaterialSteelService.insertRmsMaterialSteel2((String)temp.get("resultMaterial")); wmspInboundScanResult.setMaterialId(new BigDecimal(materialSteel.get("materialSteelId").toString())); //创建用户 //insertUsername wmspInboundScanResult.setInboundAbnormalis(new BigDecimal(0)); //设置入库物资件数,默认一件 wmspInboundScanResult.setInboundMaterialNumber(new BigDecimal(1)); // 状态:0:未下发;1:已下发 wmspInboundScanResult.setResultStatus(new BigDecimal(0)); //吊钢工已扫物资次数 ,目前已扫描为没有下发的物资 wmspInboundScanResult.setResultNumber(new BigDecimal(list.size())); //逻辑删除:1:删除,0:未删除 wmspInboundScanResult.setResultDeleted(new BigDecimal(0)); //扫码用户 wmspInboundScanResult.setInsertUsername(userName); //创建时间 wmspInboundScanResult.setInsertTime(new Date()); //插入列表 results.add(wmspInboundScanResult); } //批量插入 return wmspInboundScanResultMapper.batchInsert(results); } @Override public List> noIssueScanResultList(String userName) { return wmspInboundScanResultMapper.noIssueScanResultList(userName); } @Override public int changeInboundIscomplete(BigDecimal stackResultId) { // 根据stackResultId找到对应的成品并修改其状态 WmspInboundStackResult wmspInboundStackResult =new WmspInboundStackResult(); wmspInboundStackResult.setResultId(stackResultId); wmspInboundStackResult.setStackingStatus(new BigDecimal(1)); return wmspInboundStackResultMapper.updateByPrimaryKeySelective(wmspInboundStackResult); } public int updateInboundScanStatus(BigDecimal resultId,BigDecimal inboundId) { return wmspInboundScanResultMapper.updataStatusByResultId(resultId,inboundId); } @Override public Integer getResultStatusByResultId(String resultId) { return wmspInboundScanResultMapper.getResultStatusByResultId(resultId); } @Override public int isExist2(String userName, String resultMaterial) { return wmspInboundScanResultMapper.isExist2(userName,resultMaterial); } @Override public Map createInboundScanResultByResultMaterial2(int scanedCount, String userName, String resultMaterial) throws ParseException { //创建入库扫描实绩、并且给对象赋值 WmspInboundScanResult wmspInboundScanResult=new WmspInboundScanResult(); //设置主键自增,这里需要修改 wmspInboundScanResult.setId(count()); //分组 只需要扫一次没有分组信息 //根据用户名和分组状态查询到分组信息 // BigDecimal groupId= wmspInboundGroupService.getGroupIdByUserName(userName); // wmspInboundScanResult.setInboundGroupId(groupId); //吊钢工扫描吊牌结果 wmspInboundScanResult.setResultMaterial(resultMaterial); //扫描吊牌信息 wmspInboundScanResult.setResultLoadTime(new Date()); //新增钢材物资ID Map materialSteel = rmsMaterialSteelService.insertRmsMaterialSteel2(resultMaterial); wmspInboundScanResult.setMaterialId(new BigDecimal(materialSteel.get("materialSteelId").toString())); //创建用户 //insertUsername wmspInboundScanResult.setInboundAbnormalis(new BigDecimal(0)); //设置入库物资件数,默认一件 wmspInboundScanResult.setInboundMaterialNumber(new BigDecimal(1)); // 状态:0:未下发;1:已下发 wmspInboundScanResult.setResultStatus(new BigDecimal(0)); //吊钢工已扫物资次数 ,目前已扫描为没有下发的物质 //BigDecimal scanCount= wmspInboundScanResultMapper.getScanedNumber(userId); wmspInboundScanResult.setResultNumber(new BigDecimal(scanedCount)); //逻辑删除:1:删除,0:未删除 wmspInboundScanResult.setResultDeleted(new BigDecimal(0)); //扫码用户 wmspInboundScanResult.setInsertUsername(userName); //创建时间 wmspInboundScanResult.setInsertTime(new Date()); int status = wmspInboundScanResultMapper.insertSelective(wmspInboundScanResult); //判断是否创建成功 if (status>0){ materialSteel.putAll(JSON.parseObject(JSON.toJSONString(wmspInboundScanResult),new TypeReference>(){})); return materialSteel; } return null; } @Override public int isExistInboundScanResult(String resultMaterial) { int isExist = wmspInboundScanResultMapper.isExistInboundScanResult(resultMaterial); return isExist; } @Override public List> noIssueScanResultList2(String userName) { return wmspInboundScanResultMapper.noIssueScanResultList2(userName); } @Override public int getOrderTypeByNum(String orderNumber) { return wmspInboundScanResultMapper.getOrderTypeByNum(orderNumber); } @Override public Map getOrderTypeByInboundId(String resultId) { return wmspInboundScanResultMapper.getOrderTypeByInboundId(resultId); } @Override public List> findInboundScanResult(String orderNumber) { return wmspInboundScanResultMapper.findInboundScanResult(orderNumber); } }