TMSController.java 22 KB

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