package com.steerinfo.dil.controller; import com.steerinfo.dil.annotaion.LogAround; import com.steerinfo.dil.annotaion.RequestLimit; import com.steerinfo.dil.feign.AmsFeign; import com.steerinfo.dil.feign.RmsFeign; import com.steerinfo.dil.feign.TmsFeign; import com.steerinfo.dil.mapper.UniversalMapper; import com.steerinfo.dil.util.BaseRESTfulController; import com.steerinfo.dil.util.ExcelToolUtils; import com.steerinfo.dil.util.Util; import com.steerinfo.framework.controller.RESTfulResult; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import oracle.jdbc.proxy.annotation.Post; import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.OutputStreamWriter; import java.math.BigDecimal; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; import com.steerinfo.dil.util.DataChange; import org.springframework.web.multipart.MultipartRequest; /** * @author luobang * @create 2021-09-17 14:11 */ @RestController @RequestMapping("${api.version}/tms") public class TMSController extends BaseRESTfulController { @Autowired private TmsFeign tmsFeign; @Autowired private AmsFeign amsFeign; @Autowired private RmsFeign rmsFeign; @Autowired private UniversalMapper universalMapper; @ApiOperation(value = "车辆实绩") @ApiImplicitParams({ @ApiImplicitParam(name = "map", value = "参数", required = false, dataType = "map"), @ApiImplicitParam(name = "apiId()", value = "动态表头", required = false, dataType = "Integer"), @ApiImplicitParam(name = "pageNum", value = "页码", required = false, dataType = "Integer"), @ApiImplicitParam(name = "pageSize", value = "页", required = false, dataType = "Integer"), }) @PostMapping(value = "/getcomprehensiveresults") public Map getecomprehensiveresultslist(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getAmsSalaryContracList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "新增车辆实绩") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计算公式"}) @PostMapping("/addcomprehensiveresults") public Map insertcomprehensiveresults(@RequestBody(required = false) Map map) { return tmsFeign.addComprehensiveResult(map); } @ApiOperation(value = "车辆实绩删除") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PutMapping(value = "/comprehensiveresultslogicdelete") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计算公式"}) public Map comprehensiveresultsLogicDelete(@RequestBody(required = false) Map map) { return tmsFeign.logicdeleteAmsSaalryContrac(map); } @ApiOperation(value = "修改车辆实绩") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/comprehensiveresultsupadete") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计算公式"}) public Map comprehensiveresultsUpdate(@RequestBody(required = false) Map map) { return tmsFeign.updateAmsSalaryContrac(map); } @ApiOperation(value = "修改车辆实绩") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/tmscomprehensiveresults/batchUpdate") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计算公式"}) public Map tmscomprehensiveresultsBatchUpdate(@RequestBody(required = false) Map map) { return tmsFeign.tmscomprehensiveresultsBatchUpdate((List)map.get("list")); } @ApiOperation(value = "派发运输订单") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/dispatchOrder") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"}) public Map dispatchOrder(@RequestBody(required = false) Map map) { return tmsFeign.dispatchOrder(map); } @ApiOperation(value = "批量派发运输订单") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/batchDispatch") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"}) public Map batchDispatch(@RequestBody(required = false) Map map) { return tmsFeign.batchDispatch(map); } @ApiOperation(value = "批量派发运输订单") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/batchDispatchSc") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"}) public Map batchDispatchSc(@RequestBody(required = false) Map map) { return tmsFeign.batchDispatchSc(map); } @ApiOperation(value = "修改运输订单") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/updateTransOrder") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"}) public Map updateTransOrder(@RequestBody(required = false) Map map) { return tmsFeign.updateTransOrder(map); } @ApiOperation(value = "合并运输订单") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/mergeTransOrder") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"}) public Map mergeTransOrder(@RequestBody(required = false) Map map) { return tmsFeign.mergeTransOrder(map); } @ApiOperation(value = "更改运输订单状态") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/changeTransOrder") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"}) public Map changeTransOrder(@RequestBody(required = false) Map map) { return tmsFeign.changeTransOrder(map); } @ApiOperation(value = "司机接收运单") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/receiptOrder") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"}) public Map receiptOrder(@RequestBody(required = false) Map map) { return tmsFeign.receiptOrder(map); } @ApiOperation(value = "查询运输订单") @PostMapping("/getTransOrderList") public Map getTransOrderList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getTransOrderList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询运输订单所有运输实绩") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/getTransResult") public Map getTransResult(@RequestBody(required = false) Map map) { return tmsFeign.getTransResult(map); } @ApiOperation(value = "同步进厂") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/syncEnfactoryResult") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"进厂实绩"}) public Map syncEnfactoryResult(@RequestBody(required = false) Map map) { return tmsFeign.syncEnfactoryResult(map); } @ApiOperation(value = "同步出厂") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/syncOutfactoryResult") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"出厂实绩"}) public Map syncOutfactoryResult(@RequestBody(required = false) Map map) { return tmsFeign.syncOutfactoryResult(map); } @ApiOperation(value = "同步计量") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/syncWeightResult") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计量实绩"}) public Map syncWeightResult(@RequestBody(required = false) Map map) { return tmsFeign.syncWeightResult(map); } @ApiOperation(value="计时") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/startend") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计时"}) public Map start(@RequestBody(required = false) Map map) { return tmsFeign.startend(map); } @ApiOperation(value="计时") @PostMapping(value = "/updCountResult") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"计次"}) public Map updCountResult(@RequestBody(required = false) Map map) { return tmsFeign.updCountResult(map); } @ApiOperation(value="审批计时") @PostMapping(value = "/approveTimeResult") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"计次"}) public Map approveTimeResult(@RequestBody(required = false) Map map) { return tmsFeign.approveTimeResult(map); } @ApiOperation(value="计时复报") @PostMapping(value = "/resendTimeResult") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"计次"}) public Map resendTimeResult(@RequestBody(required = false) Map map) { return tmsFeign.resendTimeResult(map); } @ApiOperation(value = "查询计时") @PostMapping("/tmstimingresultsList") public Map tmstimingresultsList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.tmstimingresultsList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询计时") @PostMapping("/getOrderTimeList") public Map getOrderTimeList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getOrderTimeList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询计时") @PostMapping("/getTimeList") public Map getOrderTimeList(@RequestBody(required = false) Map map) { return tmsFeign.getTimeList(map); } @ApiOperation(value = "修改计时") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/tmstimingresultsUpdate") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"修改计时"}) public Map tmstimingresultsUpdate(@RequestBody(required = false) Map map) { return tmsFeign.tmstimingresultsUpdate(map); } @ApiOperation(value = "销售派发运输订单") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/saleDispatchOrder") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"}) public Map saleDispatchOrder(@RequestBody(required = false) Map map) { return tmsFeign.saleDispatchOrder(map); } @ApiOperation(value = "批量销售派发运输订单") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/saleDispatchOrderList") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"}) public Map saleDispatchOrderList(@RequestBody(required = false) Map map) { return tmsFeign.saleDispatchOrderList(map); } @ApiOperation(value = "查询销售运输订单") @PostMapping("/getSaleTransOrderList") public Map getSaleTransOrderList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getSaleTransOrderList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "同步质检") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/syncQualityResult") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"质检实绩"}) public Map syncQualityResult(@RequestBody(required = false) Map map) { return tmsFeign.syncQualityResult(map); } @ApiOperation(value = "签到") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/signIn") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"签到实绩"}) public Map signIn(@RequestBody(required = false) Map map) { return tmsFeign.signIn(map); } @ApiOperation(value = "换车头") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/replaceFront") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"换车头实绩"}) public Map replaceFront(@RequestBody(required = false) Map map) { return tmsFeign.replaceFront(map); } @ApiOperation(value = "装货") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/load") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"装货实绩"}) public Map load(@RequestBody(required = false) Map map) { return tmsFeign.load(map); } @ApiOperation(value = "装货修改") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/loadUpd") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"装货实绩"}) public Map loadUpd(@RequestBody(required = false) Map map) { return tmsFeign.loadUpd(map); } @ApiOperation(value = "卸货") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/unload") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"卸货实绩"}) public Map unload(@RequestBody(required = false) Map map) { return tmsFeign.unload(map); } @ApiOperation(value = "卸货修改") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/unloadUpd") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"卸货实绩"}) public Map unloadUpd(@RequestBody(required = false) Map map) { return tmsFeign.unloadUpd(map); } @ApiOperation(value = "抵达") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/arrival") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"抵达实绩"}) public Map arrival(@RequestBody(required = false) Map map) { return tmsFeign.arrival(map); } @ApiOperation(value = "签收") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/receipt") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"签收实绩"}) public Map receipt(@RequestBody(required = false) Map map) { return tmsFeign.receipt(map); } @ApiOperation(value = "查询厂内车辆数") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/getCountEnfactory") public Map getCountEnfactory(@RequestBody(required = false) Map map) { return tmsFeign.getCountEnfactory(map == null ? new HashMap<>() : map); } @ApiOperation(value = "查询签到") @PostMapping("/getSignInResultList") public Map getSignInResultList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getSignInResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询换车头") @PostMapping("/getReplaceFrontResultList") public Map getReplaceFrontResultList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getReplaceFrontResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询进厂") @PostMapping("/getEnfactoryResultList") public Map getEnfactoryResultList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getEnfactoryResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询出厂") @PostMapping("/getOutfactoryResultList") public Map getTmsOutfactoryResultList (@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getOutfactoryResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询装货") @PostMapping("/getLoadResultList") public Map getLoadResultList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getLoadResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询卸货") @PostMapping("/getUnloadResultList") public Map getUnloadResultList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getUnloadResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询计量") @PostMapping("/getWeightResultList") public Map getWeightResultList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getWeightResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询质检") @PostMapping("/getQualityResultList") public Map getQualityResult(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getQualityResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询抵达") @PostMapping("/getArrivalResultList") public Map getArrivalResultList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getArrivalResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询签收") @PostMapping("/getReceiptResultList") public Map getReceiptResultList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getReceiptResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "采购火运装货作业") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/purchaseTrainLoad") // @LogAround(foreignKeys = {"resultId"},foreignKeyTypes = {"装货实绩"}) public Map purchaseTrainLoad(@RequestBody MultipartFile file, String businessType, String userId, String userName) throws Exception { Map map = new HashMap<>(); //获取Excel中包含的对象数组 List> list = ExcelToolUtils.getExcelList(file, 0); map.put("list", list); //统计通知单的重量车数和车牌号 Set capacitySet = new HashSet<>();//车牌号 List requirementList = new ArrayList<>(); String loadDate = null; for (Map item : list) { //校验行 if(item.get("通知单号")==null || item.get("通知单号").equals("") || item.get("车号")==null || item.get("车号").equals("") || item.get("发站")==null || item.get("发站").equals("") || item.get("到站")==null || item.get("到站").equals("") || item.get("装车日期")==null || item.get("装车日期").equals("")){ throw new Exception("单元格数据异常(通知单号/车号/装车日期/发站/到站),请检查模板或数据是否正确!"); } BigDecimal tareWeight = DataChange.dataToBigDecimal(item.get("皮重")); BigDecimal grossWeight = DataChange.dataToBigDecimal(item.get("毛重")); BigDecimal netWeight = DataChange.dataToBigDecimal(item.get("净重")); if(tareWeight.compareTo(BigDecimal.ZERO) > 0 && grossWeight.compareTo(BigDecimal.ZERO) > 0){ item.put("净重", grossWeight.subtract(tareWeight)); }else if(netWeight.compareTo(BigDecimal.ZERO) > 0){ item.put("净重", netWeight); }else { throw new Exception("单元格数据异常:净重/皮重/毛重,请检查模板或数据是否正确!"); } //通知单统计 String requirementNumber = item.get("通知单号").toString(); if (map.get(requirementNumber) != null) { //已存在,修改 Map requirementMap =(Map) map.get(requirementNumber); BigDecimal weight = DataChange.dataToBigDecimal(requirementMap.get("weight")); BigDecimal truckNumber = DataChange.dataToBigDecimal(requirementMap.get("truckNumber")); String loadTime = requirementMap.get("loadTime").toString(); List> trainList = (ArrayList) requirementMap.get("trainList"); weight = weight.add(DataChange.dataToBigDecimal(item.get("净重"))); truckNumber = truckNumber.add(new BigDecimal(1)); trainList.add(item); requirementMap.put("weight", weight); requirementMap.put("truckNumber", truckNumber); requirementMap.put("trainList",trainList); if(!loadTime.equals(item.get("装车日期").toString())){ throw new Exception("同一个Excel只允许一批车辆,请检查装车日期!"); } } else { //不存在,新增 Map requirementMap = new HashMap<>(); List> trainList = new ArrayList<>(); trainList.add(item); BigDecimal weight = DataChange.dataToBigDecimal(item.get("净重")); BigDecimal truckNumber = new BigDecimal(1); String loadTime = item.get("装车日期").toString(); if(loadDate == null){ loadDate = loadTime; map.put("loadDate",loadDate); }else if(!loadDate.equals(loadTime)){ throw new Exception("同一个Excel只允许一批车辆,请检查装车日期!"); } requirementMap.put("requirementNumber", requirementNumber); requirementMap.put("weight", weight); requirementMap.put("truckNumber", truckNumber); requirementMap.put("loadTime",loadTime); requirementMap.put("trainList",trainList); requirementMap.put("userId",userId); requirementMap.put("userName",userName); requirementMap.put("businessType",businessType); requirementList.add(requirementNumber); map.put(requirementNumber, requirementMap); } //车牌号去重 capacitySet.add(item.get("车号").toString()); } //校验当前excel是否已经导入过 if (universalMapper.countTrainLoad(map) > 0) { throw new Exception("存在重复的装车信息!不允许重复导入!"); } //新增火车运力资源 String[] capacities = capacitySet.toArray(new String[0]);//车牌号 try{ new Runnable() { @Override public void run() { Map capacityMap = new HashMap<>(); capacityMap.put("capacities", capacities); capacityMap.put("userId", userId); capacityMap.put("userName", userName); rmsFeign.batchInsertCapacityTrain(capacityMap); } }.run(); }catch (Exception e){e.printStackTrace();} //新增AMS及TMS map.put("userId",userId); map.put("userName",userName); map.put("businessType",businessType); map.put("requirementList",requirementList); return tmsFeign.purchaseTrainLoad(map); } @ApiOperation(value = "查询采购火运装货") @PostMapping("/purchaseTrainLoadList") public Map purchaseTrainLoadList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.purchaseTrainLoadList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询采购火运装货报表") @PostMapping("/purchaseTrainLoadReport") public Map purchaseTrainLoadReport(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.purchaseTrainLoadReport(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "修改火运装车") @PostMapping("/updateTrainLoad") public Map updateTrainLoad(@RequestBody(required = false) Map map){ return tmsFeign.updateTrainLoad(map); } @ApiOperation(value = "删除火运装车", notes = "删除火运装车") @PostMapping(value = "/deleteTrainLoad") @LogAround(foreignKeys = {"transOrderId"},foreignKeyTypes = {"运输订单"}) public Map deleteTrainLoad(@RequestBody(required = false) Map map) { return tmsFeign.deleteTrainLoad(map); } @ApiOperation(value = "修改火运装车序号") @PostMapping("/updateTrainLoadSeq") public Map updateTrainLoadSeq(@RequestBody(required = false) Map map){ return tmsFeign.updateTrainLoadSeq(map); } @ApiOperation(value = "采购火运计量作业") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/purchaseTrainWeight") // @LogAround(foreignKeys = {"resultId"},foreignKeyTypes = {"计量实绩"}) public Map purchaseTrainWeight(@RequestBody MultipartFile file, String businessType, String userId, String userName) throws Exception { Map map = new HashMap<>(); //获取Excel中包含的对象数组 List> list = ExcelToolUtils.getExcelList(file, 0); map.put("list", list); Set capacitySet = new HashSet<>();//车牌号 String weightTime = null; for (Map item : list) { //校验行 if(item.get("通知单号")==null || item.get("通知单号").equals("") || item.get("车号")==null || item.get("车号").equals("") || item.get("计量日期")==null || item.get("计量日期").equals("") || item.get("皮重")==null || item.get("皮重").equals("") || item.get("毛重")==null || item.get("毛重").equals("") || item.get("磅单号")==null || item.get("磅单号").equals("")){ throw new Exception("单元格数据异常(通知单号/车号/计量日期/净重/皮重/毛重/磅单号),请检查模板或数据是否正确!"); } item.put("净重", DataChange.dataToBigDecimal(item.get("毛重")).subtract(DataChange.dataToBigDecimal(item.get("皮重")))); //校验数据 // if(weightTime == null){ // weightTime = item.get("计量日期").toString(); // }else if(!weightTime.equals(item.get("计量日期").toString())){ // throw new Exception("同一个Excel只允许一批车辆,请检查计量日期!"); // } //车牌号去重 capacitySet.add(item.get("车号").toString()); } String[] capacities = capacitySet.toArray(new String[0]);//车牌号 if (capacities.length != list.size()) { throw new Exception("车号不允许重复!"); } map.put("userId",userId); map.put("userName",userName); map.put("businessType",businessType); //获取火车运单及计量详情 List> orderListAll = universalMapper.findTrainWeight(map); if (orderListAll.size() <= 0) { throw new Exception("未查询到装车信息,请先上传装车作业!"); } List requireList = new ArrayList<>(); for(Map order : orderListAll){ if(order.get("unloadResultId") != null){ throw new Exception(order.get("capacityId")+"已卸车,不允许再上传计量!"); } String requireNumber = order.get("requireNumber").toString(); Map requirementMap =(Map) map.get(requireNumber); if(requirementMap!=null){ List> orderList = (ArrayList) requirementMap.get("orderList"); orderList.add(order); BigDecimal weight = DataChange.dataToBigDecimal(requirementMap.get("weight")); requirementMap.put("weight",weight.add(DataChange.dataToBigDecimal(order.get("netWeight")))); requirementMap.put("orderList",orderList); }else{ requirementMap = new HashMap<>(); List> orderList = new ArrayList<>(); orderList.add(order); BigDecimal weight = DataChange.dataToBigDecimal(order.get("netWeight")); requirementMap.put("transPlanId",order.get("transPlanId")); requirementMap.put("materialId",order.get("materialId")); requirementMap.put("weight",weight); requirementMap.put("weightTime",weightTime); requirementMap.put("userId",userId); requirementMap.put("userName",userName); requirementMap.put("orderList",orderList); requireList.add(requireNumber); } map.put(requireNumber,requirementMap); } Map result = null; for(String requireNumber : requireList){ Map requirementMap =(Map) map.get(requireNumber); List> orderList = (ArrayList) requirementMap.get("orderList"); if(universalMapper.countTransOrder(requirementMap) != orderList.size()){ throw new Exception("计量车数与装车车数不一致!"); } result = tmsFeign.purchaseTrainWeight(requirementMap); if (!"succeed".equals(result.get("status"))) { throw new Exception("计量上传失败:" + result.get("message")); } } return result; } @ApiOperation(value = "查询采购火运计量") @PostMapping("/purchaseTrainWeightList") public Map purchaseTrainWeightList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.purchaseTrainWeightList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "采购火运卸车作业") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/purchaseTrainUnload") // @LogAround(foreignKeys = {"resultId"},foreignKeyTypes = {"计量实绩"}) public Map purchaseTrainUnload(@RequestBody MultipartFile file, String businessType, String userId, String userName) throws Exception { Map map = new HashMap<>(); //获取Excel中包含的对象数组 List> list = ExcelToolUtils.getExcelList(file, 0); map.put("list", list); Set capacitySet = new HashSet<>();//车牌号 String unloadTime = null; for (Map item : list) { //校验行 if(item.get("通知单号")==null || item.get("通知单号").equals("") || item.get("车号")==null || item.get("车号").equals("") || item.get("卸车日期")==null || item.get("卸车日期").equals("")){ throw new Exception("单元格数据异常(通知单号/车号/卸车日期),请检查模板或数据是否正确!"); } if(item.get("净重") == null || item.get("净重").equals("")){ //净重为空 if(item.get("毛重") != null && !item.get("毛重").equals("") && item.get("皮重") != null && !item.get("皮重").equals("")){ item.put("净重", DataChange.dataToBigDecimal(item.get("毛重")).subtract(DataChange.dataToBigDecimal(item.get("皮重")))); }else{ throw new Exception("单元格数据异常(净重),请检查模板或数据是否正确!"); } } if(item.get("毛重") == null || item.get("毛重").equals("")){ //毛重为空 if(item.get("净重") != null && !item.get("净重").equals("") && item.get("皮重") != null && !item.get("皮重").equals("")){ item.put("毛重", DataChange.dataToBigDecimal(item.get("净重")).add(DataChange.dataToBigDecimal(item.get("皮重")))); }else{ throw new Exception("单元格数据异常(毛重),请检查模板或数据是否正确!"); } } if(item.get("皮重") == null || item.get("皮重").equals("")){ //毛重为空 if(item.get("净重") != null && !item.get("净重").equals("") && item.get("毛重") != null && !item.get("毛重").equals("")){ item.put("皮重", DataChange.dataToBigDecimal(item.get("毛重")).subtract(DataChange.dataToBigDecimal(item.get("净重")))); }else{ throw new Exception("单元格数据异常(皮重),请检查模板或数据是否正确!"); } } //校验数据 // if(unloadTime == null){ // unloadTime = item.get("卸车日期").toString(); // }else if(!unloadTime.equals(item.get("卸车日期").toString())){ // throw new Exception("同一个Excel只允许一批车辆,请检查卸车日期!"); // } //车牌号去重 System.out.println(item.get("车号").toString()); Boolean b = capacitySet.add(item.get("车号").toString()); System.out.println(b); } String[] capacities = capacitySet.toArray(new String[0]);//车牌号 if (capacities.length != list.size()) { throw new Exception("车号不允许重复!"); } map.put("userId",userId); map.put("userName",userName); map.put("businessType",businessType); //获取火车运单及计量详情 List> orderListAll = universalMapper.findTrainUnload(map); if (orderListAll.size() <= 0) { throw new Exception("未查询到装车信息,请先上传装车作业!"); } List requireList = new ArrayList<>(); for(Map order : orderListAll){ if(order.get("unloadResultId") != null){ throw new Exception(order.get("capacityId")+"已卸车,不允许再上传!"); } String requireNumber = order.get("requireNumber").toString(); Map requirementMap =(Map) map.get(requireNumber); if(requirementMap!=null){ List> orderList = (ArrayList) requirementMap.get("orderList"); orderList.add(order); requirementMap.put("orderList",orderList); }else{ requirementMap = new HashMap<>(); List> orderList = new ArrayList<>(); orderList.add(order); requirementMap.put("transPlanId",order.get("transPlanId")); requirementMap.put("materialId",order.get("materialId")); requirementMap.put("unloadPointId",order.get("unloadPointId")); requirementMap.put("unloadTime",unloadTime); requirementMap.put("userId",userId); requirementMap.put("userName",userName); requirementMap.put("orderList",orderList); requirementMap.put("requirementSerialNumber",requireNumber); requireList.add(requireNumber); } map.put(requireNumber,requirementMap); } Map result = null; for(String requireNumber : requireList){ Map requirementMap =(Map) map.get(requireNumber); List> orderList = (ArrayList) requirementMap.get("orderList"); // if(universalMapper.countTransOrder(requirementMap) != orderList.size()){ // throw new Exception("卸车车数与装车车数不一致!"); // } result = tmsFeign.purchaseTrainUnload(requirementMap); if (!"succeed".equals(result.get("status"))) { throw new Exception("上传失败:" + result.get("message")); } } return result; } @ApiOperation(value = "查询采购火运卸车") @PostMapping("/purchaseTrainUnloadList") public Map purchaseTrainUnloadList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.purchaseTrainUnloadList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "更改销售运输订单状态") @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map") @PostMapping(value = "/changeSaleTransOrder") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"销售运输订单"}) public Map changeSaleTransOrder(@RequestBody(required = false) Map map) { return tmsFeign.changeSaleTransOrder(map); } @ApiOperation(value = "查询司机运输汇总") @PostMapping("/getDriverTotalResult") public Map getDriverTotalResult(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getDriverTotalResult(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询车辆运输汇总") @PostMapping("/getCapacityTotalResult") public Map getCapacityTotalResult(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getCapacityTotalResult(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation("生产物流-调度任务新增") @PostMapping("/dispatchTask") Map dispatchTask(@RequestBody Map map) { return tmsFeign.dispatchTask(map); } @ApiOperation("获取销售派车单信息") @PostMapping("/getDlivDirnoSeqList/{id}") public RESTfulResult getDlivDirnoSeqList(@PathVariable("id") String id) { return tmsFeign.getDlivDirnoSeqList(id); } @ApiOperation("修改销售派车单信息") @PostMapping("/updateDlivDirnoSeq") @LogAround(foreignKeys = {"planChildId"}, foreignKeyTypes = {"修改销售运单"}) public RESTfulResult updateDlivDirnoSeq(@RequestBody Map map) { return tmsFeign.updateDlivDirnoSeq(map); } @ApiOperation("查询销售派车单装车信息") @PostMapping("/selectDlivDirnoSeqDetails") public RESTfulResult selectDlivDirnoSeqDetails(@RequestBody Map map) { return tmsFeign.selectDlivDirnoSeqDetails(map); } @ApiOperation("查询订单厂内轨迹") @PostMapping("/getPathByOrder") public RESTfulResult getPathByOrder(@RequestBody Map map) { return tmsFeign.getPathByOrder(map); } @ApiOperation("上传定位,更新路径") @PostMapping("/uploadLocation") public RESTfulResult uploadLocation(@RequestBody Map map) { return tmsFeign.uploadLocation(map); } @ApiOperation("实收吨数") @PostMapping("/updateWeight") public RESTfulResult updateWeight(@RequestBody Map map) { return tmsFeign.updateWeight(map); } @ApiOperation("checkWeightResult") @PostMapping("/checkWeightResult") @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计量实绩"}) public Map checkWeightResult(@RequestBody Map map) { return tmsFeign.checkWeightResult(map); } @ApiOperation(value = "发运通知单直接派车", notes = "发运通知单直接派车") @ApiImplicitParams({ @ApiImplicitParam(name = "map", value = "json格式具体参数", required = true, dataType = "Map") }) @PostMapping(value = "/saleDispatchList") public RESTfulResult saleDispatchList(@RequestBody Map map) { return tmsFeign.saleDispatchList(map); } @ApiOperation("多拼派车") @PostMapping("/saleDispatchDuoPin") RESTfulResult saleDispatchDuoPin(@RequestBody Map map) {return tmsFeign.saleDispatchDuoPin(map);} @ApiOperation("同步生产实绩") @PostMapping("/syncProductionResult") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"调拨实绩"}) RESTfulResult syncProductionResult(@RequestBody Map map) { return tmsFeign.syncProductionResult(map); } @ApiOperation("获取司机日工作量") @PostMapping("/getDriverDayJobForApp") RESTfulResult getDriverDayJobForApp(@RequestBody Map map,Integer apiId) { return tmsFeign.getDriverDayJobForApp(map,apiId); } @ApiOperation(value = "确认出库", notes = "确认出库") @ApiImplicitParams({ @ApiImplicitParam(name = "map", value = "json格式具体参数", required = true, dataType = "Map") }) @PostMapping(value = "/outBound") public RESTfulResult outBound(@RequestBody Map map) { return tmsFeign.outBound(map); } @ApiOperation(value = "撤销出库", notes = "撤销出库") @ApiImplicitParams({ @ApiImplicitParam(name = "map", value = "json格式具体参数", required = true, dataType = "Map") }) @PostMapping(value = "/revokeOutBound") public RESTfulResult revokeOutBound(@RequestBody Map map) { return tmsFeign.revokeOutBound(map); } @ApiOperation(value = "查询车辆登记单信息") @PostMapping("/likeTransitOrders") public Map likeTransitOrders(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.likeTransitOrders(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "新增车辆登记单信息") @PostMapping("/insertTmsTransitOrder") public Map insertTmsTransitOrder(@RequestBody Map map) { return tmsFeign.insertTmsTransitOrder(map); } @ApiOperation("导入通行登记单") @PostMapping("/importTrasitOrder") public Map importTrasitOrder(@RequestBody MultipartFile file, String userId, String userName) throws Exception { Map map = new HashMap<>(); //获取Excel中包含的对象数组 List> list = ExcelToolUtils.getExcelList(file, 0); map.put("list", list); for (Map item : list) { //校验行 if (item.get("车牌号") == null || item.get("通行卡类型") == null || item.get("开始时间") == null || item.get("结束时间") == null) { throw new Exception("单元格数据异常,请检查模板或数据是否正确!"); } } map.put("userId", userId); map.put("userName", userName); return tmsFeign.importTrasitOrder(map); } @ApiOperation(value = "查询请车批车") @PostMapping("/getPleaseApproveList") public Map getPleaseApproveList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.getPleaseApproveList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @PostMapping("/addPleaseApprove") public Map addPleaseApprove(@RequestBody Map map) { return tmsFeign.addPleaseApprove(map); } @PostMapping("/updPleaseApprove") public Map updPleaseApprove(@RequestBody Map map) { return tmsFeign.updPleaseApprove(map); } @PostMapping("/delPleaseApprove") public Map delPleaseApprove(@RequestBody Map map) { return tmsFeign.delPleaseApprove(map); } @PostMapping("/gatepostTransitManager") public Map gatepostTransitManager(@RequestBody Map map) { return tmsFeign.gatepostTransitManager(map); } @ApiOperation("导入宏瑞综合实绩") @PostMapping("/importComprehensiveResult") public Map importComprehensiveResult(@RequestBody MultipartFile file, String userId, String userName, String resultType) throws Exception { Map map = new HashMap<>(); if (file.isEmpty()) { return new HashMap<>(); } // 获取源文件名称 String originalFilename = file.getOriginalFilename(); // 获取源文件后缀名 String extension = "." + FilenameUtils.getExtension(originalFilename); // 定义新路径 String newPath = "/data/file/result/"; String newName = userName + "-" + originalFilename+ Util.RandomCreate(8) + ".xlsx"; File dataFile = new File(newPath); if (!dataFile.exists()) { dataFile.mkdirs(); } FileOutputStream fileOutputStream = new FileOutputStream(newPath + newName); fileOutputStream.write(file.getBytes()); fileOutputStream.flush(); fileOutputStream.close(); List> list = new ArrayList<>(); //获取Excel中包含的对象数组 if ("维保".equals(resultType)) { List excelHeads = Arrays.asList("车属单位","车型","车号","大号","维修时间","维修内容","维修","电器","钣焊","补胎","其它","工时合计","配件费用","外修费用","总合计"); list = ExcelToolUtils.getExcelList(file,2,excelHeads); }else{ list = ExcelToolUtils.getExcelList(file, 0); } map.put("list", list); map.put("userId", userId); map.put("userName", userName); map.put("resultType", resultType); map.put("filePath",newPath + newName); return tmsFeign.importComprehensiveResult(map); } @ApiOperation(value = "火运大宗销售订单 删除销售运输订单") @PostMapping("/changeTransOrderH") public Map changeTransOrderH(@RequestBody Map map) { return tmsFeign.changeTransOrderH(map); } @ApiOperation(value = "火运出库后修改车号") @PostMapping("/updateCarNo") public Map updateCarNo(@RequestBody Map map) { return tmsFeign.updateCarNo(map); } @ApiOperation(value = "查询排队网格信息") @PostMapping("/likeQueueGrid") public Map likeQueueGrid(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.likeQueueGrid(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "查询排队实绩信息") @PostMapping("/likeQueueResult") public Map likeQueueResult(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.likeQueueResult(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "处理排队网格数据") @PostMapping("/disposeQueueGrid") public Map disposeQueueGrid(@RequestBody Map map) { return tmsFeign.disposeQueueGrid(map); } @ApiOperation(value = "获取网格数据") @PostMapping("/getGridAllData") public Map getGridAllData(@RequestBody Map map) { return tmsFeign.getGridAllData(map); } @ApiOperation(value = "处理排队实绩数据") @PostMapping("/disposeQueueResult") public Map disposeQueueResult(@RequestBody Map map) { return tmsFeign.disposeQueueResult(map); } @ApiOperation(value = "禁用/启用运输订单") @PostMapping("/banTransOrder") @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"}) public Map banTransOrder(@RequestBody Map map) { return tmsFeign.banTransOrder(map); } @ApiOperation(value = "查询销售火运装货报表") @PostMapping("/loadingOperation") public Map loadingOperation(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.loadingOperation(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation(value = "修改火运装车列序号") @PostMapping("/updateTrainOrderSeq") public Map updateTrainOrderSeq(@RequestBody Map map) { return tmsFeign.updateTrainOrderSeq(map); } @ApiOperation(value = "查询销售火运装货报表明细") @PostMapping("/purchaseTrainsOrderList") public Map purchaseTrainsOrderList(@RequestBody(required = false) Map map, Integer apiId, Integer pageNum, Integer pageSize) { return tmsFeign.purchaseTrainsOrderList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize); } @ApiOperation("吊装信息") @PostMapping("/disposeHandling") public Map disposeHandling(@RequestBody Map map) { return tmsFeign.disposeHandling(map); } @ApiOperation("同步报表数据") @PostMapping("/getgenerateOperateDaily") public Map generateOperateDaily(@RequestBody Map map) { return tmsFeign.getgenerateOperateDaily(map); } @ApiOperation(value = "保存WMS传递的内转出库数据", notes = "保存WMS传递的内转出库数据") @PostMapping(value = "/preserveMoveListIn") public RESTfulResult preserveMoveListIn(@RequestBody Map mapList) { return tmsFeign.preserveMoveListIn(mapList); } @ApiOperation(value = "保存WMS传递的内转入库数据", notes = "保存WMS传递的内转入库数据") @PostMapping(value = "/preserveMoveListOut") public RESTfulResult preserveMoveListOut(@RequestBody Map mapList) { return tmsFeign.preserveMoveListOut(mapList); } @ApiOperation(value = "保存WMS传递的内转撤销入库数据", notes = "保存WMS传递的内转撤销入库数据") @PostMapping(value = "/preserveMoveListRevokeOut") public RESTfulResult preserveMoveListRevokeOut(@RequestBody Map mapList) { return tmsFeign.preserveMoveListRevokeOut(mapList); } @ApiOperation(value = "保存WMS传递的内转撤销出库数据", notes = "保存WMS传递的内撤销转出库数据") @PostMapping(value = "/preserveMoveListRevokeIn") public RESTfulResult preserveMoveListRevokeIn(@RequestBody Map mapList) { return tmsFeign.preserveMoveListRevokeIn(mapList); } @ApiOperation(value = "保存WMS传递的内转撤销出库数据", notes = "保存WMS传递的内撤销转出库数据") @PostMapping(value = "/modifyChange") public RESTfulResult modifyChange(@RequestBody Map params) { return tmsFeign.modifyChange(params); } @ApiOperation(value = "针对签到过期的计时单子重新赋权", notes = "针对签到过期的计时单子重新赋权") @PostMapping(value = "/resartStartTimming") public RESTfulResult resartStartTimming(@RequestBody Map params) { return tmsFeign.resartStartTimming(params); } }