TMSController.java 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565
  1. package com.steerinfo.dil.controller;
  2. import com.steerinfo.dil.annotaion.LogAround;
  3. import com.steerinfo.dil.annotaion.RequestLimit;
  4. import com.steerinfo.dil.feign.AmsFeign;
  5. import com.steerinfo.dil.feign.RmsFeign;
  6. import com.steerinfo.dil.feign.TmsFeign;
  7. import com.steerinfo.dil.mapper.UniversalMapper;
  8. import com.steerinfo.dil.util.BaseRESTfulController;
  9. import com.steerinfo.dil.util.ExcelToolUtils;
  10. import com.steerinfo.framework.controller.RESTfulResult;
  11. import io.swagger.annotations.ApiImplicitParam;
  12. import io.swagger.annotations.ApiImplicitParams;
  13. import io.swagger.annotations.ApiOperation;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.web.bind.annotation.*;
  16. import org.springframework.web.multipart.MultipartFile;
  17. import java.io.File;
  18. import java.io.FileInputStream;
  19. import java.math.BigDecimal;
  20. import java.text.DateFormat;
  21. import java.text.ParseException;
  22. import java.text.SimpleDateFormat;
  23. import java.util.*;
  24. import java.util.stream.Collectors;
  25. import com.steerinfo.dil.util.DataChange;
  26. import org.springframework.web.multipart.MultipartRequest;
  27. /**
  28. * @author luobang
  29. * @create 2021-09-17 14:11
  30. */
  31. @RestController
  32. @RequestMapping("${api.version}/tms")
  33. public class TMSController extends BaseRESTfulController {
  34. @Autowired
  35. private TmsFeign tmsFeign;
  36. @Autowired
  37. private AmsFeign amsFeign;
  38. @Autowired
  39. private RmsFeign rmsFeign;
  40. @Autowired
  41. private UniversalMapper universalMapper;
  42. @ApiOperation(value = "车辆实绩")
  43. @ApiImplicitParams({
  44. @ApiImplicitParam(name = "map", value = "参数", required = false, dataType = "map"),
  45. @ApiImplicitParam(name = "apiId()", value = "动态表头", required = false, dataType = "Integer"),
  46. @ApiImplicitParam(name = "pageNum", value = "页码", required = false, dataType = "Integer"),
  47. @ApiImplicitParam(name = "pageSize", value = "页", required = false, dataType = "Integer"),
  48. })
  49. @PostMapping(value = "/getcomprehensiveresults")
  50. public Map<String, Object> getecomprehensiveresultslist(@RequestBody(required = false) Map<String, Object> map, Integer apiId,
  51. Integer pageNum,
  52. Integer pageSize) {
  53. return tmsFeign.getAmsSalaryContracList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  54. }
  55. @ApiOperation(value = "新增车辆实绩")
  56. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  57. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计算公式"})
  58. @PostMapping("/addcomprehensiveresults")
  59. public Map<String, Object> insertcomprehensiveresults(@RequestBody(required = false) Map<String, Object> map) throws ParseException {
  60. if (!map.isEmpty()) {
  61. if (!map.get("resultTime").toString().isEmpty()) {
  62. SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
  63. Date resultTime = simpleDateFormat.parse(map.get("resultTime").toString());
  64. map.put("resultTime", resultTime);
  65. }
  66. }
  67. map.put("insertUsername", map.get("userName").toString());
  68. return tmsFeign.insertAmsSalaryContrac(map);
  69. }
  70. @ApiOperation(value = "车辆实绩删除")
  71. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  72. @PutMapping(value = "/comprehensiveresultslogicdelete")
  73. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计算公式"})
  74. public Map<String, Object> comprehensiveresultsLogicDelete(@RequestBody(required = false) Map<String, Object> map) {
  75. return tmsFeign.logicdeleteAmsSaalryContrac(map);
  76. }
  77. @ApiOperation(value = "修改车辆实绩")
  78. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  79. @PutMapping(value = "/comprehensiveresultsupadete/{id}")
  80. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计算公式"})
  81. public Map<String, Object> comprehensiveresultsUpdate(@PathVariable BigDecimal id, @RequestBody(required = false) Map<String, Object> map) {
  82. map.put("updateUsername", map.get("userName").toString());
  83. return tmsFeign.updateAmsSalaryContrac(id, map);
  84. }
  85. @ApiOperation(value = "派发运输订单")
  86. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  87. @PostMapping(value = "/dispatchOrder")
  88. @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"})
  89. public Map<String, Object> dispatchOrder(@RequestBody(required = false) Map<String, Object> map) {
  90. return tmsFeign.dispatchOrder(map);
  91. }
  92. @ApiOperation(value = "更改运输订单状态")
  93. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  94. @PostMapping(value = "/changeTransOrder")
  95. @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"})
  96. public Map<String, Object> changeTransOrder(@RequestBody(required = false) Map<String, Object> map) {
  97. return tmsFeign.changeTransOrder(map);
  98. }
  99. @ApiOperation(value = "司机接收运单")
  100. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  101. @PostMapping(value = "/receiptOrder")
  102. @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"})
  103. public Map<String, Object> receiptOrder(@RequestBody(required = false) Map<String, Object> map) {
  104. return tmsFeign.receiptOrder(map);
  105. }
  106. @ApiOperation(value = "查询运输订单")
  107. @PostMapping("/getTransOrderList")
  108. public Map<String, Object> getTransOrderList(@RequestBody(required = false) Map<String, Object> map,
  109. Integer apiId,
  110. Integer pageNum,
  111. Integer pageSize) {
  112. return tmsFeign.getTransOrderList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  113. }
  114. @ApiOperation(value = "查询运输订单所有运输实绩")
  115. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  116. @PostMapping(value = "/getTransResult")
  117. public Map<String, Object> getTransResult(@RequestBody(required = false) Map<String, Object> map) {
  118. return tmsFeign.getTransResult(map);
  119. }
  120. @ApiOperation(value = "同步进厂")
  121. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  122. @PostMapping(value = "/syncEnfactoryResult")
  123. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"进厂实绩"})
  124. public Map<String, Object> syncEnfactoryResult(@RequestBody(required = false) Map<String, Object> map) {
  125. return tmsFeign.syncEnfactoryResult(map);
  126. }
  127. @ApiOperation(value = "同步出厂")
  128. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  129. @PostMapping(value = "/syncOutfactoryResult")
  130. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"出厂实绩"})
  131. public Map<String, Object> syncOutfactoryResult(@RequestBody(required = false) Map<String, Object> map) {
  132. return tmsFeign.syncOutfactoryResult(map);
  133. }
  134. @ApiOperation(value = "同步计量")
  135. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  136. @PostMapping(value = "/syncWeightResult")
  137. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计量实绩"})
  138. public Map<String, Object> syncWeightResult(@RequestBody(required = false) Map<String, Object> map) {
  139. return tmsFeign.syncWeightResult(map);
  140. }
  141. @ApiOperation(value="计时")
  142. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  143. @RequestLimit()
  144. @PostMapping(value = "/startend")
  145. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"计时"})
  146. public Map<String, Object> start(@RequestBody(required = false) Map<String, Object> map) {
  147. return tmsFeign.startend(map);
  148. }
  149. @ApiOperation(value = "查询计时")
  150. @PostMapping("/tmstimingresultsList")
  151. public Map<String, Object> tmstimingresultsList(@RequestBody(required = false) Map<String, Object> map,
  152. Integer apiId,
  153. Integer pageNum,
  154. Integer pageSize) {
  155. return tmsFeign.tmstimingresultsList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  156. }
  157. @ApiOperation(value = "修改计时")
  158. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  159. @PostMapping(value = "/tmstimingresultsUpdate")
  160. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"修改计时"})
  161. public Map<String, Object> tmstimingresultsUpdate(@RequestBody(required = false) Map<String, Object> map) {
  162. return tmsFeign.tmstimingresultsUpdate(map);
  163. }
  164. @ApiOperation(value = "销售派发运输订单")
  165. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  166. @PostMapping(value = "/saleDispatchOrder")
  167. @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"运输订单"})
  168. public Map<String, Object> saleDispatchOrder(@RequestBody(required = false) Map<String, Object> map) {
  169. return tmsFeign.saleDispatchOrder(map);
  170. }
  171. @ApiOperation(value = "查询销售运输订单")
  172. @PostMapping("/getSaleTransOrderList")
  173. public Map<String, Object> getSaleTransOrderList(@RequestBody(required = false) Map<String, Object> map,
  174. Integer apiId,
  175. Integer pageNum,
  176. Integer pageSize) {
  177. return tmsFeign.getSaleTransOrderList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  178. }
  179. @ApiOperation(value = "同步质检")
  180. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  181. @PostMapping(value = "/syncQualityResult")
  182. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"质检实绩"})
  183. public Map<String, Object> syncQualityResult(@RequestBody(required = false) Map<String, Object> map) {
  184. return tmsFeign.syncQualityResult(map);
  185. }
  186. @ApiOperation(value = "签到")
  187. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  188. @PostMapping(value = "/signIn")
  189. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"签到实绩"})
  190. public Map<String, Object> signIn(@RequestBody(required = false) Map<String, Object> map) {
  191. return tmsFeign.signIn(map);
  192. }
  193. @ApiOperation(value = "换车头")
  194. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  195. @PostMapping(value = "/replaceFront")
  196. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"换车头实绩"})
  197. public Map<String, Object> replaceFront(@RequestBody(required = false) Map<String, Object> map) {
  198. return tmsFeign.replaceFront(map);
  199. }
  200. @ApiOperation(value = "装货")
  201. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  202. @PostMapping(value = "/load")
  203. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"装货实绩"})
  204. public Map<String, Object> load(@RequestBody(required = false) Map<String, Object> map) {
  205. return tmsFeign.load(map);
  206. }
  207. @ApiOperation(value = "装货修改")
  208. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  209. @PostMapping(value = "/loadUpd")
  210. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"装货实绩"})
  211. public Map<String, Object> loadUpd(@RequestBody(required = false) Map<String, Object> map) {
  212. return tmsFeign.loadUpd(map);
  213. }
  214. @ApiOperation(value = "卸货")
  215. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  216. @PostMapping(value = "/unload")
  217. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"卸货实绩"})
  218. public Map<String, Object> unload(@RequestBody(required = false) Map<String, Object> map) {
  219. return tmsFeign.unload(map);
  220. }
  221. @ApiOperation(value = "卸货修改")
  222. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  223. @PostMapping(value = "/unloadUpd")
  224. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"卸货实绩"})
  225. public Map<String, Object> unloadUpd(@RequestBody(required = false) Map<String, Object> map) {
  226. return tmsFeign.unloadUpd(map);
  227. }
  228. @ApiOperation(value = "抵达")
  229. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  230. @PostMapping(value = "/arrival")
  231. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"抵达实绩"})
  232. public Map<String, Object> arrival(@RequestBody(required = false) Map<String, Object> map) {
  233. return tmsFeign.arrival(map);
  234. }
  235. @ApiOperation(value = "签收")
  236. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  237. @PostMapping(value = "/receipt")
  238. @LogAround(foreignKeys = {"resultId"}, foreignKeyTypes = {"签收实绩"})
  239. public Map<String, Object> receipt(@RequestBody(required = false) Map<String, Object> map) {
  240. return tmsFeign.receipt(map);
  241. }
  242. @ApiOperation(value = "查询厂内车辆数")
  243. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  244. @PostMapping(value = "/getCountEnfactory")
  245. public Map<String, Object> getCountEnfactory(@RequestBody(required = false) Map<String, Object> map) {
  246. return tmsFeign.getCountEnfactory(map == null ? new HashMap<>() : map);
  247. }
  248. @ApiOperation(value = "查询签到")
  249. @PostMapping("/getSignInResultList")
  250. public Map<String, Object> getSignInResultList(@RequestBody(required = false) Map<String, Object> map,
  251. Integer apiId,
  252. Integer pageNum,
  253. Integer pageSize) {
  254. return tmsFeign.getSignInResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  255. }
  256. @ApiOperation(value = "查询换车头")
  257. @PostMapping("/getReplaceFrontResultList")
  258. public Map<String, Object> getReplaceFrontResultList(@RequestBody(required = false) Map<String, Object> map,
  259. Integer apiId,
  260. Integer pageNum,
  261. Integer pageSize) {
  262. return tmsFeign.getReplaceFrontResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  263. }
  264. @ApiOperation(value = "查询进厂")
  265. @PostMapping("/getEnfactoryResultList")
  266. public Map<String, Object> getEnfactoryResultList(@RequestBody(required = false) Map<String, Object> map,
  267. Integer apiId,
  268. Integer pageNum,
  269. Integer pageSize) {
  270. return tmsFeign.getEnfactoryResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  271. }
  272. @ApiOperation(value = "查询出厂")
  273. @PostMapping("/getOutfactoryResultList")
  274. public Map<String, Object> getTmsOutfactoryResultList
  275. (@RequestBody(required = false) Map<String, Object> map,
  276. Integer apiId,
  277. Integer pageNum,
  278. Integer pageSize) {
  279. return tmsFeign.getOutfactoryResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  280. }
  281. @ApiOperation(value = "查询装货")
  282. @PostMapping("/getLoadResultList")
  283. public Map<String, Object> getLoadResultList(@RequestBody(required = false) Map<String, Object> map,
  284. Integer apiId,
  285. Integer pageNum,
  286. Integer pageSize) {
  287. return tmsFeign.getLoadResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  288. }
  289. @ApiOperation(value = "查询卸货")
  290. @PostMapping("/getUnloadResultList")
  291. public Map<String, Object> getUnloadResultList(@RequestBody(required = false) Map<String, Object> map,
  292. Integer apiId,
  293. Integer pageNum,
  294. Integer pageSize) {
  295. return tmsFeign.getUnloadResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  296. }
  297. @ApiOperation(value = "查询计量")
  298. @PostMapping("/getWeightResultList")
  299. public Map<String, Object> getWeightResultList(@RequestBody(required = false) Map<String, Object> map,
  300. Integer apiId,
  301. Integer pageNum,
  302. Integer pageSize) {
  303. return tmsFeign.getWeightResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  304. }
  305. @ApiOperation(value = "查询质检")
  306. @PostMapping("/getQualityResultList")
  307. public Map<String, Object> getQualityResult(@RequestBody(required = false) Map<String, Object> map,
  308. Integer apiId,
  309. Integer pageNum,
  310. Integer pageSize) {
  311. return tmsFeign.getQualityResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  312. }
  313. @ApiOperation(value = "查询抵达")
  314. @PostMapping("/getArrivalResultList")
  315. public Map<String, Object> getArrivalResultList(@RequestBody(required = false) Map<String, Object> map,
  316. Integer apiId,
  317. Integer pageNum,
  318. Integer pageSize) {
  319. return tmsFeign.getArrivalResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  320. }
  321. @ApiOperation(value = "查询签收")
  322. @PostMapping("/getReceiptResultList")
  323. public Map<String, Object> getReceiptResultList(@RequestBody(required = false) Map<String, Object> map,
  324. Integer apiId,
  325. Integer pageNum,
  326. Integer pageSize) {
  327. return tmsFeign.getReceiptResultList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  328. }
  329. @ApiOperation(value = "采购火运装货作业")
  330. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  331. @PostMapping(value = "/purchaseTrainLoad")
  332. // @LogAround(foreignKeys = {"resultId"},foreignKeyTypes = {"装货实绩"})
  333. public Map<String, Object> purchaseTrainLoad(@RequestBody MultipartFile file,
  334. String businessType,
  335. String userId,
  336. String userName) throws Exception {
  337. File excel = ExcelToolUtils.multipartFileToFile(file);
  338. FileInputStream is = null;
  339. String fileName = excel.getName();
  340. // 解决fileName兼容性问题
  341. int lastindex = fileName.lastIndexOf("\\");
  342. fileName = fileName.substring(lastindex + 1);
  343. if (fileName != null && fileName.length() > 0) {
  344. is = new FileInputStream(excel);
  345. }
  346. Map<String, Object> map = new HashMap<>();
  347. //获取Excel中包含的对象数组
  348. List<Map<String, Object>> list = ExcelToolUtils.getExcelList(is, fileName, 0);
  349. map.put("list", list);
  350. //统计通知单的重量车数和车牌号
  351. Set<String> capacitySet = new HashSet<>();//车牌号
  352. for (Map<String, Object> item : list) {
  353. //校验行
  354. if(item.get("通知单号")==null || item.get("通知单号").equals("")
  355. || item.get("车号")==null || item.get("车号").equals("")
  356. || item.get("装车日期")==null || item.get("装车日期").equals("")
  357. || item.get("净重")==null || item.get("净重").equals("")
  358. || item.get("皮重")==null || item.get("皮重").equals("")
  359. || item.get("毛重")==null || item.get("毛重").equals("")){
  360. throw new Exception("单元格数据异常(通知单号/车号/装车日期/净重/皮重/毛重),请检查模板或数据是否正确!");
  361. }
  362. //通知单统计
  363. String requirementNumber = item.get("通知单号").toString();
  364. if (map.get("requirementNumber") != null) {
  365. if (map.get("requirementNumber").equals(requirementNumber)) {
  366. //已存在,修改
  367. BigDecimal weight = DataChange.dataToBigDecimal(map.get("weight"));
  368. BigDecimal truckNumber = DataChange.dataToBigDecimal(map.get("truckNumber"));
  369. String loadTime = map.get("loadTime").toString();
  370. weight = weight.add(DataChange.dataToBigDecimal(item.get("净重")));
  371. truckNumber = truckNumber.add(new BigDecimal(1));
  372. map.put("weight", weight);
  373. map.put("truckNumber", truckNumber);
  374. if(!loadTime.equals(item.get("装车日期").toString())){
  375. throw new Exception("同一个Excel只允许一批车辆,请检查装车日期!");
  376. }
  377. } else {
  378. throw new Exception("同一个Excel文件中只允许有一个通知单号!");
  379. }
  380. } else {
  381. //不存在,新增
  382. BigDecimal weight = DataChange.dataToBigDecimal(item.get("净重"));
  383. BigDecimal truckNumber = new BigDecimal(1);
  384. String loadTime = item.get("装车日期").toString();
  385. map.put("requirementNumber", requirementNumber);
  386. map.put("weight", weight);
  387. map.put("truckNumber", truckNumber);
  388. map.put("loadTime",loadTime);
  389. }
  390. //车牌号去重
  391. capacitySet.add(item.get("车号").toString());
  392. }
  393. //校验当前excel是否已经导入过
  394. if (universalMapper.countTrainLoad(map) > 0) {
  395. throw new Exception("存在重复的装车信息!不允许重复导入!");
  396. }
  397. //新增火车运力资源
  398. String[] capacities = capacitySet.toArray(new String[0]);//车牌号
  399. if (capacities.length != list.size()) {
  400. throw new Exception("车号不允许重复!");
  401. } else {
  402. new Runnable() {
  403. @Override
  404. public void run() {
  405. Map<String, Object> capacityMap = new HashMap<>();
  406. capacityMap.put("capacities", capacities);
  407. capacityMap.put("userId", userId);
  408. capacityMap.put("userName", userName);
  409. rmsFeign.batchInsertCapacityTrain(capacityMap);
  410. }
  411. }.run();
  412. }
  413. //新增AMS及TMS
  414. map.put("userId",userId);
  415. map.put("userName",userName);
  416. map.put("businessType",businessType);
  417. return tmsFeign.purchaseTrainLoad(map);
  418. }
  419. @ApiOperation(value = "查询采购火运装货")
  420. @PostMapping("/purchaseTrainLoadList")
  421. public Map<String, Object> purchaseTrainLoadList(@RequestBody(required = false) Map<String, Object> map,
  422. Integer apiId,
  423. Integer pageNum,
  424. Integer pageSize) {
  425. return tmsFeign.purchaseTrainLoadList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  426. }
  427. @ApiOperation(value = "采购火运装货作业")
  428. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  429. @PostMapping(value = "/purchaseTrainWeight")
  430. // @LogAround(foreignKeys = {"resultId"},foreignKeyTypes = {"计量实绩"})
  431. public Map<String, Object> purchaseTrainWeight(@RequestBody MultipartFile file,
  432. String businessType,
  433. String userId,
  434. String userName) throws Exception {
  435. File excel = ExcelToolUtils.multipartFileToFile(file);
  436. FileInputStream is = null;
  437. String fileName = excel.getName();
  438. // 解决fileName兼容性问题
  439. int lastindex = fileName.lastIndexOf("\\");
  440. fileName = fileName.substring(lastindex + 1);
  441. if (fileName != null && fileName.length() > 0) {
  442. is = new FileInputStream(excel);
  443. }
  444. Map<String, Object> map = new HashMap<>();
  445. //获取Excel中包含的对象数组
  446. List<Map<String, Object>> list = ExcelToolUtils.getExcelList(is, fileName, 0);
  447. map.put("list", list);
  448. Set<String> capacitySet = new HashSet<>();//车牌号
  449. for (Map<String, Object> item : list) {
  450. //校验行
  451. if(item.get("通知单号")==null || item.get("通知单号").equals("")
  452. || item.get("车号")==null || item.get("车号").equals("")
  453. || item.get("计量日期")==null || item.get("计量日期").equals("")
  454. || item.get("净重")==null || item.get("净重").equals("")
  455. || item.get("皮重")==null || item.get("皮重").equals("")
  456. || item.get("毛重")==null || item.get("毛重").equals("")){
  457. throw new Exception("单元格数据异常(通知单号/车号/计量日期/净重/皮重/毛重),请检查模板或数据是否正确!");
  458. }
  459. //校验数据
  460. String requirementNumber = item.get("通知单号").toString();
  461. if (map.get("requirementNumber") != null) {
  462. if (map.get("requirementNumber").equals(requirementNumber)) {
  463. String weightTime = map.get("weightTime").toString();
  464. if(!weightTime.equals(item.get("计量日期").toString())){
  465. throw new Exception("同一个Excel只允许一批车辆,请检查计量日期!");
  466. }
  467. } else {
  468. throw new Exception("同一个Excel文件中只允许有一个通知单号!");
  469. }
  470. } else {
  471. //不存在,新增
  472. map.put("requirementNumber", requirementNumber);
  473. map.put("weightTime",item.get("计量日期").toString());
  474. }
  475. //车牌号去重
  476. capacitySet.add(item.get("车号").toString());
  477. }
  478. String[] capacities = capacitySet.toArray(new String[0]);//车牌号
  479. if (capacities.length != list.size()) {
  480. throw new Exception("车号不允许重复!");
  481. }
  482. map.put("userId",userId);
  483. map.put("userName",userName);
  484. map.put("businessType",businessType);
  485. //获取火车运单及计量详情
  486. List<Map<String,Object>> orderList = universalMapper.findTrainOrder(map);
  487. if (orderList.size() <= 0) {
  488. throw new Exception("未查询到装车信息,请先上传装车作业!");
  489. }
  490. map.put("orderList",orderList);
  491. //新增TMS
  492. return tmsFeign.purchaseTrainWeight(map);
  493. }
  494. @ApiOperation(value = "查询采购火运计量")
  495. @PostMapping("/purchaseTrainWeightList")
  496. public Map<String, Object> purchaseTrainWeightList(@RequestBody(required = false) Map<String, Object> map,
  497. Integer apiId,
  498. Integer pageNum,
  499. Integer pageSize) {
  500. return tmsFeign.purchaseTrainWeightList(map == null ? new HashMap<>() : map, apiId, pageNum, pageSize);
  501. }
  502. @ApiOperation(value = "更改销售运输订单状态")
  503. @ApiImplicitParam(name = "map", value = "JSON格式数据", required = true, dataType = "Map<String, Object>")
  504. @PostMapping(value = "/changeSaleTransOrder")
  505. @LogAround(foreignKeys = {"transOrderId"}, foreignKeyTypes = {"销售运输订单"})
  506. public Map<String, Object> changeSaleTransOrder(@RequestBody(required = false) Map<String, Object> map) {
  507. return tmsFeign.changeSaleTransOrder(map);
  508. }
  509. }