TMSController.java 22 KB

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