package com.steerinfo.dil.service.impl; import com.steerinfo.dil.feign.WmshBoundFeign; import com.steerinfo.dil.mapper.TmstrainLoadingResultMapper; import com.steerinfo.dil.mapper.TmstrainTotalResultMapper; import com.steerinfo.dil.mapper.TmstrainTruckTotalResultMapper; import com.steerinfo.dil.model.TmstrainLoadingResult; import com.steerinfo.dil.model.TmstrainTotalResult; import com.steerinfo.dil.model.TmstrainTruckTotalResult; import com.steerinfo.dil.service.ITmstrainLoadingResultService; import com.steerinfo.dil.util.DataChange; import io.swagger.models.auth.In; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** * TmstrainLoadingResult服务实现: * @author generator * @version 1.0-SNAPSHORT 2021-08-30 02:23 * 类描述 * 修订历史: * 日期:2021-08-30 * 作者:generator * 参考: * 描述:TmstrainLoadingResult服务实现 * @see null * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved. */ @Service(value = "tmstrainLoadingResultService") public class TmstrainLoadingResultServiceImpl implements ITmstrainLoadingResultService { @Autowired private TmstrainLoadingResultMapper tmstrainLoadingResultMapper; @Autowired private WmshBoundFeign wmshBoundFeign; @Autowired private TmstrainTruckTotalResultMapper tmstrainTruckTotalResultMapper; @Autowired private TmstrainTotalResultMapper tmstrainTotalResultMapper; /** * 查看所有装车实绩 * @param map * @return */ @Override public List> getTmstrainWagonLoad(Map map) { BigDecimal resultType = DataChange.dataToBigDecimal(map.get("resultType")); switch (resultType.intValue()){ case 1: case 2: case 3: return tmstrainLoadingResultMapper.getTmsWagonLoadInfo(map); // apiId = 58 - 209 case 4: return tmstrainLoadingResultMapper.selectLoadedForConverted(map); //apiId = 203 case 10: //查询国产矿需要补录的装车实绩 return tmstrainLoadingResultMapper.getNoPurOrderIdLoadResult(map); //apiId = 209 } return null; } /** * 进口矿新增装车实绩 * @param tmstrainLoadingResult * @return */ @Override @Transactional public int addTmstrainLoadingResult(TmstrainLoadingResult tmstrainLoadingResult) { List wagonNoList = tmstrainLoadingResult.getWagonNoList(); //通过采购订单号获得批次ID BigDecimal purchaseOrderId = tmstrainLoadingResult.getPurchaseOrderRailPlanId(); BigDecimal batchId = tmstrainLoadingResultMapper.getBatchIdByPurOrderId(purchaseOrderId); tmstrainLoadingResult.setBatchId(batchId); //添加常规字段 addRegularField(tmstrainLoadingResult); int count = 0; Double totalWeight = 0.0; for (String wagonNo : wagonNoList) { tmstrainLoadingResult.setResultWagonNo(wagonNo); BigDecimal maxId = tmstrainLoadingResultMapper.selectMaxId(); //生成主键id tmstrainLoadingResult.setResultId(maxId); //通过车皮号计算车皮标重 int wagonWeight = calculateWagonWeight(tmstrainLoadingResult.getResultWagonNo()); tmstrainLoadingResult.setResultBillableTonnage(new BigDecimal(wagonWeight)); count += tmstrainLoadingResultMapper.insertSelective(tmstrainLoadingResult); totalWeight += tmstrainLoadingResult.getResultBillableTonnage().doubleValue(); //添加火运总实绩 TmstrainTotalResult tmstrainTotalResult = new TmstrainTotalResult(); tmstrainTotalResult.setId(tmstrainTotalResultMapper.selectMaxId()); //获取添加火运总实绩主键ID //添加火运装车实绩ID tmstrainTotalResult.setLoadingId(maxId); count += tmstrainTotalResultMapper.insertSelective(tmstrainTotalResult); } //如果订单类型为采购进口矿火运(万州港---达州 || 万州港--老区轨道衡) 添加总车皮标重传输给港存库 if(tmstrainLoadingResult.getResultType().intValue() == 1){ tmstrainLoadingResult.setResultBillableTonnage(new BigDecimal(totalWeight.toString())); // addOutWarehouse(tmstrainLoadingResult, batchId); } return count; } /** * 添加国产矿装车实绩 * @param tmstrainLoadingResult * @return */ public int addDomesticLoadResult(TmstrainLoadingResult tmstrainLoadingResult){ List wagonNoList = tmstrainLoadingResult.getWagonNoList(); //通过到站ID匹配计量衡 如果是老区轨道衡或者是新区轨道衡 则匹配轨道衡 BigDecimal arrivalStationId = tmstrainLoadingResult.getArrivalStationId(); //如果到站ID是老区轨道衡 if(arrivalStationId.intValue() == 3){ tmstrainLoadingResult.setTrainCalculateId(new BigDecimal(13)); //设置计量衡为 铁专线(老区) } //如果到站Id是新区轨道衡 if(arrivalStationId.intValue() == 4){ tmstrainLoadingResult.setTrainCalculateId(new BigDecimal(14));//设置计量衡为 新区轨道衡 (新区) } //添加常规字段 addRegularField(tmstrainLoadingResult); //通过采购订单号获得批次ID BigDecimal purchaseOrderId = tmstrainLoadingResult.getPurchaseOrderRailPlanId(); if(purchaseOrderId != null){ BigDecimal batchId = tmstrainLoadingResultMapper.getBatchIdByPurOrderId(purchaseOrderId); tmstrainLoadingResult.setBatchId(batchId); } int count = 0; for (String wagonNo : wagonNoList) { tmstrainLoadingResult.setResultWagonNo(wagonNo); BigDecimal maxId = tmstrainLoadingResultMapper.selectMaxId(); //生成主键id tmstrainLoadingResult.setResultId(maxId); //通过车皮号计算车皮标重 int wagonWeight = calculateWagonWeight(tmstrainLoadingResult.getResultWagonNo()); tmstrainLoadingResult.setResultBillableTonnage(new BigDecimal(wagonWeight)); count += tmstrainLoadingResultMapper.insertSelective(tmstrainLoadingResult); //添加火运总实绩 TmstrainTotalResult tmstrainTotalResult = new TmstrainTotalResult(); tmstrainTotalResult.setId(tmstrainTotalResultMapper.selectMaxId()); //获取添加火运总实绩主键ID //添加火运装车实绩ID tmstrainTotalResult.setLoadingId(maxId); count += tmstrainTotalResultMapper.insertSelective(tmstrainTotalResult); } return count; } /** * 补录采购订单信息 * @param map * @return */ public int updateDomesticLoadResult(Map map){ //获取要补录的实绩ID 列表 List resultIdList = (List) map.get("resultIdList"); TmstrainLoadingResult tmstrainLoadingResult = new TmstrainLoadingResult(); BigDecimal purchaseOrderId = DataChange.dataToBigDecimal(map.get("purchaseOrderId")); if(purchaseOrderId.intValue() != 0){ //添加批次 BigDecimal batchId = tmstrainLoadingResultMapper.getBatchIdByPurOrderId(purchaseOrderId); tmstrainLoadingResult.setBatchId(batchId); } tmstrainLoadingResult.setPurchaseOrderRailPlanId(purchaseOrderId); //采购订单Id Object insertUpdateRemark = map.get("insertUpdateRemark"); if(insertUpdateRemark != null) { String remark = (String) insertUpdateRemark; if(remark.length() != 0) tmstrainLoadingResult.setInsertUpdateRemark(remark); //备注 } int count = 0; for (Integer resultId : resultIdList) { tmstrainLoadingResult.setResultId(new BigDecimal(resultId)); //设置要补录的实绩主键 count += tmstrainLoadingResultMapper.updateByPrimaryKeySelective(tmstrainLoadingResult); } return count; } /** * 通过车皮标重计算车皮标重 * @return */ public int calculateWagonWeight(String wagonNo){ String number = wagonNo.substring(0,2); if (number.equals("14")) { String No = wagonNo.substring(0,3); if (No.equals("143")||No.equals("140")||No.equals("141")||No.equals("142")){ return 60; } else if (No.equals("145")){ return 61; } } else if(number.equals("45")||number.equals("46")){ return 60; } else if(number.equals("42")||number.equals("47")||number.equals("48")||number.equals("49")){ return 61; } else if(number.equals("15")||number.equals("16")||number.equals("17")||number.equals("18")){ return 70; } return 0; } /** * 添加港存库出库实绩 * @param tmstrainLoadingResult * @param batchId */ public void addOutWarehouse(TmstrainLoadingResult tmstrainLoadingResult, BigDecimal batchId){ Map map = new HashMap<>(); map.put("isClean",tmstrainLoadingResult.getResultIsclear()); map.put("resultTonnage", tmstrainLoadingResult.getResultBillableTonnage()); map.put("batchId", batchId); //通过发站查询发站的所属港口 BigDecimal portId = tmstrainLoadingResultMapper.getPortIdBySendStationId(tmstrainLoadingResult.getSendStationId()); map.put("portId", portId); wmshBoundFeign.addResult(map); } /** * 添加常规字段 * @param tmstrainLoadingResult */ public void addRegularField(TmstrainLoadingResult tmstrainLoadingResult){ //常规字段插入 tmstrainLoadingResult.setInsertUsername("admin"); tmstrainLoadingResult.setInsertTime(new Date()); tmstrainLoadingResult.setInsertUpdateRemark("无"); tmstrainLoadingResult.setDeleted(new BigDecimal(0)); } /** * 通过ID获取装车实绩数据 * @param resultId * @return */ @Override public List> getTmstrainLoadingResultByResultId(BigDecimal resultId) { return tmstrainLoadingResultMapper.selectByResultId(resultId); } /** * 修改火运装车实绩 * @param tmstrainLoadingResult * @return */ @Override public int updateTmstrainLoadingResult(TmstrainLoadingResult tmstrainLoadingResult) { tmstrainLoadingResult.setUpdateTime(new Date()); return tmstrainLoadingResultMapper.updateByPrimaryKeySelective(tmstrainLoadingResult); } /** * 删除装车作业 * @param resultId * @return */ @Override public int deleteTmstrainLoadingResultByResultId(BigDecimal resultId) { TmstrainLoadingResult tmstrainLoadingResult = new TmstrainLoadingResult(); tmstrainLoadingResult.setResultId(resultId); tmstrainLoadingResult.setDeleted(new BigDecimal(1)); return tmstrainLoadingResultMapper.updateByPrimaryKeySelective(tmstrainLoadingResult); } /** * 内转添加装车实绩 * "railPlanId": 1, * "resultClass":"白班", * "resultWagonNo":"1609999", * "insertUpdateRemark": "这是第二条", * "scanCodeText": "HRB400E-12-21706023-9-3077-385-20210909120037-a0691de83a1a1fef-08010103010100014-20" * @param map * @return */ @Override @Transactional public int addTrainLoadResultForConverted(Map map) { int count = 0; TmstrainLoadingResult tmstrainLoadingResult = new TmstrainLoadingResult(); String resultWagonNo = (String) map.get("resultWagonNo"); //车皮号 BigDecimal railPlanId = DataChange.dataToBigDecimal(map.get("railPlanId")); //发运计划ID Integer loadingId = tmstrainLoadingResultMapper.getLoadingIdByWnoAndRailPlanId(resultWagonNo, railPlanId.intValue()); //通过火运装车实绩ID查询火运总实绩ID 如果火运装车实绩不为空 BigDecimal trainTotalId = null; if(loadingId != null){ trainTotalId = tmstrainTotalResultMapper.getTotalIdByLoadingId(loadingId); } //如果没有这个车皮号和发运计划的装车实绩,则新增一条装车实绩 if(loadingId == null){ //获取装车实绩主键ID BigDecimal maxId = tmstrainLoadingResultMapper.selectMaxId(); tmstrainLoadingResult.setId(maxId); //获取发运计划ID tmstrainLoadingResult.setPurchaseOrderRailPlanId(railPlanId); tmstrainLoadingResult.setResultWagonNo(resultWagonNo); //通过车皮号计算车皮标重 tmstrainLoadingResult.setResultBillableTonnage(new BigDecimal(calculateWagonWeight(resultWagonNo))); tmstrainLoadingResult.setResultLoadingDate(new Date()); tmstrainLoadingResult.setResultClass((String) map.get("resultClass")); //班别 tmstrainLoadingResult.setInsertUpdateRemark((String) map.get("insertUpdateRemark")); tmstrainLoadingResult.setInsertTime(new Date()); tmstrainLoadingResult.setInsertUsername("admin"); tmstrainLoadingResult.setResultType(new BigDecimal(4)); //内转类型 tmstrainLoadingResult.setDeleted(new BigDecimal(0)); //逻辑删除0 //添加车皮装车实绩 count += tmstrainLoadingResultMapper.insertSelective(tmstrainLoadingResult); //添加火运总实绩 TmstrainTotalResult tmstrainTotalResult = new TmstrainTotalResult(); trainTotalId = tmstrainTotalResultMapper.selectMaxId(); tmstrainTotalResult.setId(trainTotalId); //获取添加火运总实绩主键ID //添加火运装车实绩ID tmstrainTotalResult.setLoadingId(maxId); count += tmstrainTotalResultMapper.insertSelective(tmstrainTotalResult); } //通过物资扫描结果匹配出库主键ID Integer outBoundResultId = tmstrainLoadingResultMapper.getOutBoundResultIdByScan((String) map.get("scanCodeText")); //通过出库主键查询汽运总实绩ID和物资ID Map mesMap = tmstrainLoadingResultMapper.getResultTotalIdByOutBoundResultId(outBoundResultId); //通过汽运总实绩ID查询该订单是否已装车(扫一件即可全部扫描上) Integer resultId = tmstrainLoadingResultMapper.getTrainTruckIdByTruckTotalId(DataChange.dataToBigDecimal(mesMap.get("resultTotalId"))); if(resultId != null){ return 1; //如果已经扫描上了则默认已装车 } //添加火运物资中间表 TmstrainTruckTotalResult tmstrainTruckTotalResult = new TmstrainTruckTotalResult(); tmstrainTruckTotalResult.setResultId(tmstrainTruckTotalResultMapper.selectMaxId());//添加火运物资中间表主键ID tmstrainTruckTotalResult.setTmstruckTotalResultId(DataChange.dataToBigDecimal(mesMap.get("resultTotalId")));//添加汽运总实绩ID tmstrainTruckTotalResult.setMaterialId(DataChange.dataToBigDecimal(mesMap.get("materialId")));//添加物资ID tmstrainTruckTotalResult.setTmstrainTotalResultId(trainTotalId);//添加火运总实绩ID tmstrainTruckTotalResult.setLoadStatus(new BigDecimal(0)); //已装车 tmstrainTruckTotalResult.setInsertTime(new Date()); tmstrainTruckTotalResult.setInsertUsername("admin"); count += tmstrainTruckTotalResultMapper.insertSelective(tmstrainTruckTotalResult); return count; } @Override public List> selectLoadByResultId(BigDecimal resultId) { return tmstrainLoadingResultMapper.selectLoadByResultId(resultId); } @Override public List> getSendStationName() { return tmstrainLoadingResultMapper.getSendStationName(); } @Override public List> getArrivalStationName() { return tmstrainLoadingResultMapper.getArrivalStationName(); } @Override public List> getBatchId() { return tmstrainLoadingResultMapper.getBatchId(); } @Override public List> getWagonNo(Map map) { return tmstrainLoadingResultMapper.getWagonNo(map); } /** * 内转查询车皮物资信息 * @param map * @return */ @Override public List> getMaterialAndCarByLoadingId(Map map) { return tmstrainLoadingResultMapper.getMaterialAndCarByLoadingId(map); } }