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 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 case 4: return tmstrainLoadingResultMapper.selectLoadedForConverted(map); //apiId = 203 } return null; } /** * 新增装车实绩 * @param tmstrainLoadingResult * @return */ @Override @Transactional public int addTmstrainLoadingResult(TmstrainLoadingResult tmstrainLoadingResult) { List wagonNoList = tmstrainLoadingResult.getWagonNoList(); //通过批次ID获得采购订单号 BigDecimal batchId = tmstrainLoadingResult.getBatchId(); //查询并插入采购订单号 if(batchId != null){ BigDecimal purchaseOrderId = tmstrainLoadingResultMapper.getPurchaseOrderId(batchId); tmstrainLoadingResult.setPurchaseOrderRailPlanId(purchaseOrderId); } //添加常规字段 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(); } //如果订单类型为采购进口矿火运(万州港---老区轨道衡 || 万州港--老区轨道衡) if(tmstrainLoadingResult.getResultType().intValue() == 1){ tmstrainLoadingResult.setResultBillableTonnage(new BigDecimal(totalWeight.toString())); addOutWarehouse(tmstrainLoadingResult, batchId); } 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); //添加火运物资中间表 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); } /** * 内转查询装车实绩 * @param map * @return */ @Override public List> selectLoadedForConverted(Map map) { return tmstrainLoadingResultMapper.selectLoadedForConverted(map); } @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); } }