WmspOutboundResultController.java 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556
  1. package com.steerinfo.dil.controller;
  2. import com.steerinfo.dil.feign.ESFeign;
  3. import com.steerinfo.dil.mapper.CommonSeq;
  4. import com.steerinfo.dil.mapper.WmspInboundScanResultMapper;
  5. import com.steerinfo.dil.model.WmspOutboundResult;
  6. import com.steerinfo.dil.model.WmspOutboundScanResult;
  7. import com.steerinfo.dil.service.IWmspOutboundResultMaterialService;
  8. import com.steerinfo.dil.service.impl.WmspOutboundResultServiceImpl;
  9. import com.steerinfo.dil.service.impl.WmspOutboundScanResultServiceImpl;
  10. import com.steerinfo.dil.util.BaseRESTfulController;
  11. import com.steerinfo.dil.util.ColumnDataUtil;
  12. import com.steerinfo.dil.util.DataChange;
  13. import com.steerinfo.dil.util.PageListAdd;
  14. import com.steerinfo.dil.vo.OutBoundDetailed;
  15. import com.steerinfo.framework.controller.RESTfulResult;
  16. import com.steerinfo.framework.service.pagehelper.PageHelper;
  17. import io.swagger.annotations.ApiImplicitParam;
  18. import io.swagger.annotations.ApiImplicitParams;
  19. import io.swagger.annotations.ApiOperation;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.transaction.annotation.Transactional;
  22. import org.springframework.web.bind.annotation.*;
  23. import java.math.BigDecimal;
  24. import java.text.SimpleDateFormat;
  25. import java.util.Date;
  26. import java.util.HashMap;
  27. import java.util.List;
  28. import java.util.Map;
  29. /**
  30. * WmspOutboundResult RESTful接口:
  31. * @author generator
  32. * @version 1.0-SNAPSHORT 2021-09-08 10:35
  33. * 类描述
  34. * 修订历史:
  35. * 日期:2021-09-08
  36. * 作者:generator
  37. * 参考:
  38. * 描述:WmspOutboundResult RESTful接口
  39. * @see null
  40. * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
  41. */
  42. @RestController
  43. @RequestMapping("/${api.version}/wmspoutboundresults")
  44. public class WmspOutboundResultController extends BaseRESTfulController {
  45. @Autowired
  46. private WmspOutboundResultServiceImpl wmspOutboundResultService;
  47. @Autowired
  48. private WmspInboundScanResultMapper wmspInboundScanResultMapper;
  49. @Autowired
  50. private IWmspOutboundResultMaterialService wmspOutboundResultMaterialService;
  51. @Autowired
  52. private WmspOutboundScanResultServiceImpl wmspOutboundScanResultService;
  53. @Autowired
  54. private CommonSeq commonSeq;
  55. @Autowired
  56. private ESFeign esFeign;
  57. private final SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  58. /**
  59. * 编写人:hukui
  60. * PC端查看钢材出库实绩
  61. * 参数:
  62. * apiId:表头id
  63. * pageSize:每页记录数
  64. * pageNum:查询页数
  65. * 返回值:
  66. * data:所有出库单实绩
  67. * */
  68. @Autowired
  69. ColumnDataUtil columnDataUtil;
  70. @ApiImplicitParams({
  71. @ApiImplicitParam(name = "pageNum", value = "查询页数", required = false, dataType = "Integer"),
  72. @ApiImplicitParam(name = "pageSize", value = "每页记录数", required = false, dataType = "Integer"),
  73. @ApiImplicitParam(name = "apiId", value = "96", required = false, dataType = "BigDecimal"),
  74. })
  75. @PostMapping(value = "/getWmspOutboundResult")
  76. public RESTfulResult getWmspOutboundResult(@RequestBody(required = false) Map<String, Object> mapval,
  77. Integer pageNum,
  78. Integer pageSize,
  79. Integer apiId,
  80. String con)
  81. {
  82. if (con != null) {
  83. if (!"undefined".equals(con)) {
  84. String index = "get_wms_outResult";//设置要查询的索引名称
  85. return success(esFeign.getConResult(mapval, index, apiId, pageNum, pageSize, con));//获取查询结果
  86. }
  87. }
  88. List<Map<String, Object>> libaryOutBoundList = null;
  89. if (mapval.size() == 0) {
  90. //将查询结果存入索引中
  91. libaryOutBoundList = wmspOutboundResultService.selectResultNumber(mapval);
  92. Map<String, Object> map1 = new HashMap<>();
  93. //添加索引
  94. map1.put("index", "get_wms_outresult");
  95. //添加id
  96. map1.put("indexId", "outBoundResultId");
  97. libaryOutBoundList.add(map1);
  98. //新建索引
  99. esFeign.insertIndex(libaryOutBoundList);
  100. //删除
  101. libaryOutBoundList.remove(libaryOutBoundList.size() - 1);
  102. }
  103. if (libaryOutBoundList == null) {
  104. libaryOutBoundList = wmspOutboundResultService.selectResultNumber(mapval);
  105. }
  106. PageHelper.startPage(pageNum, pageSize);
  107. List<Map<String, Object>> columnList =wmspOutboundResultService.selectResultNumber(mapval);
  108. PageListAdd pageList = columnDataUtil.tableColumnData(apiId, libaryOutBoundList, columnList);
  109. return success(pageList);
  110. }
  111. @ApiOperation("进入出库扫码页面,查询出库物资信息详情")
  112. @GetMapping("/getInitOutboundScanResultMaterialInfo")
  113. @ApiImplicitParam(name = "resultId",value = "出库实绩id",paramType = "BigDecimal",required = true)
  114. public RESTfulResult getInitOutboundScanResultMaterialInfo(@RequestParam(value = "resultId",required = true) BigDecimal resultId){
  115. OutBoundDetailed outBoundDetailed= wmspOutboundResultService.getInitOutboundScanResultMaterialInfo(resultId);
  116. return success(outBoundDetailed);
  117. }
  118. /**
  119. * 编写人:hukui
  120. * 通过前端扫描司机运单二维码,新增出单实绩并返回新增的出库单实绩
  121. * 参数:
  122. * mapval(运输订单号,订单类别)
  123. * 返回值:
  124. * list:出库单实绩
  125. * */
  126. @PostMapping(value = "/insertWmspOutBoundResult")
  127. public Map<String, Object> insertWmspOutBoundResult(@RequestBody(required = false) Map<String, Object> mapval){
  128. /**拿到前端传递的运输订单号*/
  129. String orderNumber = mapval.get("orderNumber").toString();
  130. /**根据运输订单号,查询运输订单信息,*/
  131. Map<String, Object> order = wmspOutboundResultService.getOrder(orderNumber);
  132. /**拿运输订单信息中的运输订单Id*/
  133. BigDecimal orderId = (BigDecimal) order.get("orderId");
  134. //根据该运输订单Id判断当前订单是否已经完成出厂,若完成直接返回null
  135. if (wmspOutboundResultService.getOutboundStatus(orderId)==0){
  136. Map<String,Object> map = new HashMap<>();
  137. map.put("orderId",orderId);
  138. /**根据运输订单ID和物资id查询出库单(没有逻辑删除)
  139. *若orderNum大于0,则不是第一次扫描,已经新增出库单,返回详情信息
  140. *若orderNum等于0,则是第一次扫描,需要增加出库单,再返回详情信息
  141. * */
  142. int orderNum = wmspOutboundResultService.ExistWmspOutboundResult(map);
  143. if(orderNum == 0){
  144. //创建出货单
  145. WmspOutboundResult wmspOutboundResult=wmspOutboundResultService.createOutboundResult(orderId,new BigDecimal(order.get("orderType").toString()));
  146. if (wmspOutboundResult!=null){
  147. /**根据运输订单号,查询出该订单还没有装货的物资*/
  148. List<Map<String,Object>> orderList = wmspOutboundResultService.getMaterial(orderId.intValue());
  149. int status= wmspOutboundResultMaterialService.insertOutboundMaterial(wmspOutboundResult.getResultId(),orderList);
  150. }
  151. }
  152. //查询运单相关信息
  153. return wmspOutboundResultService.getOutBoundDetailedInfo(orderId);
  154. }
  155. return null;
  156. }
  157. /**
  158. * 编写人:zouzhendon
  159. * PDA前端装卸工拒绝扫描出的运输订单,并逻辑删除出库单
  160. * 参数:
  161. * resultId(出库单Id)
  162. * 返回值:
  163. * int:是否逻辑删除出库单
  164. * */
  165. @PostMapping(value = "/deletewmspOutboundResult")
  166. public RESTfulResult deleteWmspOutboundResult(@RequestParam Integer resultId){
  167. //通过出库单Id逻辑删除出库单
  168. int i = wmspOutboundResultService.deleteWmspOutboundResult(new BigDecimal(resultId));
  169. return success(i);
  170. }
  171. /**
  172. * 编写人:yanghaiming
  173. * 装卸工PDA前端扫描钢材吊牌二维码,新增出库单扫描实绩并返回已扫描并稽核成功的物资信息
  174. * 参数:
  175. * map(resultNumber 出库单号,personnelJobNumber 装卸工工号 resultMaterial 装卸工扫描吊牌结果)
  176. * 返回值:
  177. * list:出库单实绩
  178. * */
  179. @Transactional
  180. @PostMapping(value = "/insertwmspOutboundScanResult")
  181. public synchronized RESTfulResult insertwmspOutboundScanResult(@RequestBody(required = false) Map<String, Object> map){
  182. //判断物资是否满足要求,目前一下三种不做处理的判断
  183. //获取装卸工扫描吊牌结果 HRB400-14-21706854-9-3049-280-20211001015115-7a63cd87a4095e7f-08010103010100003-4
  184. String subResultMaterial = map.get("resultMaterial").toString().substring(0,map.get("resultMaterial").toString().length() - 1);
  185. //获取出库单号
  186. BigDecimal resultId = new BigDecimal(map.get("resultId").toString());
  187. //物资唯一编码
  188. String MaterialOnlyCode=subResultMaterial.split("-")[7];
  189. //判断物质是否已经被扫描
  190. int isScan = wmspOutboundResultService.ExistScanResult(subResultMaterial);
  191. //判断物资是否是需要出库的物资,需要出库物资数量不等于0,通过物资唯一编码和出库实绩
  192. Integer materialNumber = wmspOutboundResultMaterialService.isOutboundResultMaterial(MaterialOnlyCode,resultId);
  193. //判断物资是否数量已满
  194. int scanCount = wmspOutboundScanResultService.getScanCount(MaterialOnlyCode,resultId);
  195. //根据物资id查询相对应的入库实绩ID,并将其赋值给相对应的入库扫描实绩表,判断是否入库
  196. List<Map<String, Object>> list = wmspInboundScanResultMapper.getInboundResultIdByMaterial(subResultMaterial);
  197. if(list.size()>0&&isScan==0&&(materialNumber!=null&&materialNumber!=0)&&(materialNumber>scanCount)){
  198. //创建扫描实绩
  199. //通过装卸工工号查询装卸工Id
  200. BigDecimal personnelId = wmspOutboundResultService.getPersonnelIdByJobnumber(map.get("personnelJobNumber").toString());
  201. //默认以获取到的第一个值作为入库实绩Id
  202. Map<String, Object> map1 = list.get(0);
  203. int status= wmspOutboundResultService.createOutboundScanResult(subResultMaterial,personnelId,resultId,(BigDecimal)map1.get("inboundResultId"));
  204. }
  205. //返回值展示结果
  206. return failed();
  207. }
  208. /**
  209. * 编写人:zouzhendon
  210. * 装卸工PDA前端扫描钢材吊牌二维码,新增出库单扫描实绩并返回已扫描并稽核成功的物资信息
  211. * 参数:
  212. * map(resultNumber 出库单号,personnelJobNumber 装卸工工号 resultMaterial 装卸工扫描吊牌结果)
  213. * 返回值:
  214. * list:出库单实绩
  215. * */
  216. @Transactional
  217. @PostMapping(value = "/insertwmspOutboundScanResult2")
  218. public synchronized RESTfulResult insertwmspOutboundScanResult2(@RequestBody(required = false) Map<String, Object> map){
  219. ///获得前台传来得信息
  220. //获取装卸工扫描吊牌结果 HRB400-14-21706854-9-3049-280-20211001015115-7a63cd87a4095e7f-08010103010100003-4
  221. String resultMaterial = (String) map.get("resultMaterial");
  222. String subResultMaterial = resultMaterial.substring(0,resultMaterial.length() - 1);
  223. //获取出库单号
  224. BigDecimal resultId = new BigDecimal(map.get("resultId").toString());
  225. /**根据扫描结果查询扫描实绩、判断是否一件出库
  226. * 若scanCount大于0,则不是第一次扫描,已经新增出库扫描实绩,返回已扫描过
  227. * 若scanCount等于0,则是第一次扫描,需要增加出库扫描实绩,再返回已扫描并稽核成功的物资信息
  228. * */
  229. ///判断物质是否已经被扫描
  230. int scanCount = wmspOutboundResultService.ExistScanResult(subResultMaterial);
  231. ///如果没有被扫描
  232. if(scanCount==0){
  233. //wmspOutboundResultService.getOutBoundId(resultNumber);
  234. //获取装卸工工号
  235. String personnelJobNumber = (String) map.get("personnelJobNumber");
  236. //通过装卸工工号查询装卸工Id
  237. BigDecimal personnelId = wmspOutboundResultService.getPersonnelIdByJobnumber(personnelJobNumber);
  238. //通过出库实绩Id判断出库单已扫描的件数是否等于运输订单物资表的物资件数
  239. ///解析物质二维码信息
  240. //截取扫描结果,得到物资唯一编码
  241. String[] split = resultMaterial.split("-");
  242. //唯一编码
  243. String MaterialOnlyCode=split[7];
  244. //通过物资物资唯一编码查询钢材物资表的物资Id
  245. BigDecimal SteelMaterialId = wmspOutboundResultService.getSteelMaterialIdByMaterialOnlyCode(MaterialOnlyCode);
  246. //通过出库实绩Id查询物资Id
  247. BigDecimal OutboundMaterialId = wmspOutboundResultService.getOutboundMaterialByResultId(resultId);
  248. //初始化出库扫描实绩
  249. WmspOutboundScanResult wmspOutboundScanResult = new WmspOutboundScanResult();
  250. //使用序列号增加生成主键id
  251. int seq_wmspOutboundScanResult = commonSeq.getSeqNumber("seq__WMSP_OUTBOUND_SCAN_RESULT");
  252. //插入主键id
  253. wmspOutboundScanResult.setResultId(new BigDecimal(seq_wmspOutboundScanResult));
  254. //根据物资id查询相对应的入库实绩ID,并将其赋值给相对应的入库扫描实绩表
  255. List<Map<String, Object>> list= wmspInboundScanResultMapper.getInboundResultIdByMaterial(subResultMaterial);
  256. //默认以获取到的第一个值作为入库实绩Id
  257. Map<String ,Object> map1 = list.get(0);
  258. //如果等于0说明该物资没有录入系统
  259. if (list.size()==0){
  260. }
  261. wmspOutboundScanResult.setInboundResultId((BigDecimal) map1.get("inboundResultId"));
  262. //插入出库实绩ID
  263. wmspOutboundScanResult.setOutboundResultId(resultId);
  264. //插入装卸工Id
  265. wmspOutboundScanResult.setLoadId(personnelId);
  266. //插入装卸工扫描吊牌结果
  267. wmspOutboundScanResult.setResultMaterial(resultMaterial);
  268. //插入装卸工扫描吊牌时间
  269. wmspOutboundScanResult.setResultLoadTime(new Date());
  270. //插入出库物资数量
  271. wmspOutboundScanResult.setOutboundMaterialNumber(new BigDecimal(1));
  272. //常规字段
  273. wmspOutboundScanResult.setInsertUsername("admin");
  274. wmspOutboundScanResult.setInsertTime(new Date());
  275. wmspOutboundScanResult.setUpdateUsername("admin");
  276. wmspOutboundScanResult.setUpdateTime(new Date());
  277. wmspOutboundScanResult.setInsertUpdateRemark("无");
  278. if(SteelMaterialId.intValue()==OutboundMaterialId.intValue()){
  279. int EqualMaterialsNumber = wmspOutboundResultService.EqualMaterialsNumber(resultId);
  280. if(EqualMaterialsNumber==1){
  281. //相等返回装货数量已够
  282. wmspOutboundScanResult.setResultCheck(new BigDecimal(1));
  283. }else {
  284. //稽核成功,设定扫描实绩稽核结果为成功
  285. wmspOutboundScanResult.setResultCheck(new BigDecimal(0));
  286. }
  287. //插入扫描实绩
  288. wmspOutboundResultService.scanResultInsert(wmspOutboundScanResult);
  289. }else {
  290. //稽核失败,设定扫描实绩稽核结果为失败
  291. wmspOutboundScanResult.setResultCheck(new BigDecimal(1));
  292. //插入扫描实绩
  293. wmspOutboundResultService.scanResultInsert(wmspOutboundScanResult);
  294. }
  295. //返回已扫描并并稽核成功的物资信息
  296. //1、获取出库单统一信息
  297. //获取月台Id
  298. //BigDecimal platformId = wmspOutboundResultService.getPlatformIdByResultId(resultId);
  299. //通过月台Id获取仓库名
  300. //String warehouseName = wmspOutboundResultService.getWarehouseNameByPlatformId(platformId);
  301. //获取出库单统一部分信息
  302. Map<String,Object> theSameOutboundInfo = wmspOutboundResultService.theSameOutboundInfo(resultId);
  303. //theSameOutboundInfo.put("warehouseName",warehouseName);
  304. //2、获取出库扫描实绩数据
  305. List<Map<String,Object>> scanAuditSuccessInfo = wmspOutboundResultService.scanAuditSuccessInfo(resultId);
  306. //补全出库扫描实绩数据的信息,对扫描实绩进行去重
  307. for (Map<String, Object> stringObjectMap : scanAuditSuccessInfo) {
  308. String resultMaterial1 = (String) stringObjectMap.get("resultMaterial");
  309. //截取扫描结果,得到一件物资的详细信息
  310. String[] split1 = resultMaterial1.split("-");
  311. //规格
  312. String Specification="Φ"+split1[1];
  313. stringObjectMap.put("Specification",Specification);
  314. //型号
  315. String Model=split1[0];
  316. stringObjectMap.put("Model",Model);
  317. //炉号
  318. String FurnaceNumber=split1[2];
  319. stringObjectMap.put("FurnaceNumber",FurnaceNumber);
  320. //理重
  321. String TheoreticalWeight=split1[4];
  322. stringObjectMap.put("TheoreticalWeight",TheoreticalWeight);
  323. //唯一编码
  324. String MaterialOnlyCode1=split1[7];
  325. stringObjectMap.put("MaterialOnlyCode",MaterialOnlyCode1);
  326. //通过唯一编码获取物资名称、计量单位、垛位
  327. Map<String,Object> otherMap = wmspOutboundResultService.getOtherInfoByMaterialOnlyCode(MaterialOnlyCode1);
  328. //取出再放入物资名称
  329. String materialName = otherMap.get("materialName").toString();
  330. stringObjectMap.put("materialName",materialName);
  331. //取出再放入计量单位
  332. String unitOfMeasureName = otherMap.get("unitOfMeasureName").toString();
  333. stringObjectMap.put("unitOfMeasureName",unitOfMeasureName);
  334. //取出再放入垛位
  335. String stackingNo = otherMap.get("stackingNo").toString();
  336. stringObjectMap.put("stackingNo",stackingNo);
  337. //合并出库单统一信息map
  338. stringObjectMap.putAll(theSameOutboundInfo);
  339. }
  340. return success(scanAuditSuccessInfo);
  341. }else{
  342. //返回已扫描并并稽核成功的物资信息
  343. //1、获取出库单统一信息
  344. //获取月台Id
  345. //BigDecimal platformId = wmspOutboundResultService.getPlatformIdByResultId(resultId);
  346. //通过月台Id获取仓库名
  347. //String warehouseName = wmspOutboundResultService.getWarehouseNameByPlatformId(platformId);
  348. //获取出库单统一部分信息
  349. Map<String,Object> theSameOutboundInfo = wmspOutboundResultService.theSameOutboundInfo(resultId);
  350. //theSameOutboundInfo.put("warehouseName",warehouseName);
  351. //2、获取出库扫描实绩数据
  352. List<Map<String,Object>> scanAuditSuccessInfo = wmspOutboundResultService.scanAuditSuccessInfo(resultId);
  353. //补全出库扫描实绩数据的信息
  354. for (Map<String, Object> stringObjectMap : scanAuditSuccessInfo) {
  355. String resultMaterial1 = (String) stringObjectMap.get("resultMaterial");
  356. //截取扫描结果,得到一件物资的详细信息
  357. String[] split1 = resultMaterial1.split("-");
  358. //规格
  359. String Specification = "Φ" + split1[1];
  360. stringObjectMap.put("Specification", Specification);
  361. //型号
  362. String Model = split1[0];
  363. stringObjectMap.put("Model", Model);
  364. //炉号
  365. String FurnaceNumber = split1[2];
  366. stringObjectMap.put("FurnaceNumber", FurnaceNumber);
  367. //理重
  368. String TheoreticalWeight = split1[4];
  369. stringObjectMap.put("TheoreticalWeight", TheoreticalWeight);
  370. //唯一编码
  371. String MaterialOnlyCode1 = split1[7];
  372. stringObjectMap.put("MaterialOnlyCode", MaterialOnlyCode1);
  373. //通过唯一编码获取物资名称、计量单位、垛位
  374. Map<String, Object> otherMap = wmspOutboundResultService.getOtherInfoByMaterialOnlyCode(MaterialOnlyCode1);
  375. //取出再放入物资名称
  376. String materialName = otherMap.get("materialName").toString();
  377. stringObjectMap.put("materialName", materialName);
  378. //取出再放入计量单位
  379. String unitOfMeasureName = otherMap.get("unitOfMeasureName").toString();
  380. stringObjectMap.put("unitOfMeasureName", unitOfMeasureName);
  381. //取出再放入垛位
  382. String stackingNo = otherMap.get("stackingNo").toString();
  383. stringObjectMap.put("stackingNo", stackingNo);
  384. //合并出库单统一信息map
  385. stringObjectMap.putAll(theSameOutboundInfo);
  386. }
  387. return success(scanAuditSuccessInfo);
  388. }
  389. }
  390. /**
  391. * 编写人:hujianguo
  392. * 装卸工PDA前端点击出库
  393. * 参数:
  394. * resultId
  395. * 返回值:
  396. * result:出库成功标志
  397. * */
  398. @ApiOperation(value = "出库(非0:成功,0:失败)")
  399. @PostMapping("/outbountResultToSuccess3")
  400. public RESTfulResult outbountResultToSuccess2(@RequestParam Integer resultId) {
  401. int result = wmspOutboundResultService.outbountResultToSuccess(resultId);
  402. if (result == 0) {
  403. return failed("还未扫描完,请继续!");
  404. }
  405. else {
  406. return success(result);
  407. }
  408. }
  409. @ApiOperation( value = "确定出厂",notes ="通过提货单对已扫出厂码的钢材进行出库。" +
  410. "如果是拼装的提货单,当某一类钢材全部扫完,将当前物资的实时库存删除,并改变物质类型状态" +
  411. "如果是单一物质则,就当物质全部扫完才能确定出库,并将出库实绩改为完成" )
  412. @ApiImplicitParam(name = "resultId",dataType = "BigDecimal",value = "出库实绩Id")
  413. @PostMapping("/outbountResultToSuccess")
  414. public RESTfulResult sureOutbount(@RequestParam BigDecimal resultId){
  415. int result = wmspOutboundResultService.sureOutbount(resultId);
  416. if(result == 1){
  417. return success(1,"该类型已出库");
  418. }
  419. if(result == 2){
  420. return success(2,"该订单已出库");
  421. }
  422. return success();
  423. }
  424. @ApiOperation(value = "出库(非0:成功,0:失败)")
  425. @PostMapping("/outbountResultToSuccess2")
  426. public RESTfulResult outbountResultToSuccess(@RequestParam Integer resultId) {
  427. int result = wmspOutboundResultService.outbountResultToSuccess(resultId);
  428. if (result == 0) {
  429. return failed("还未扫描完,请继续!");
  430. }
  431. else {
  432. return success(result);
  433. }
  434. }
  435. /**
  436. * 编写人:hukui
  437. * 通过前端扫描司机运单二维码,新增出单实绩并返回新增的出库单实绩
  438. * 参数:
  439. * mapval(运输订单号,订单类别)
  440. * 返回值:
  441. * list:出库单实绩
  442. * */
  443. @PostMapping(value = "/updataResultStatus")
  444. public RESTfulResult updataResultStatus(@RequestBody(required = false) Integer resultId){
  445. // 创建一个出库单实体
  446. WmspOutboundResult wmspOutboundResult = new WmspOutboundResult();
  447. // 把前端传递的出库单主键id赋值给实体
  448. wmspOutboundResult.setResultId(new BigDecimal(resultId));
  449. // 把出库单状态改为已出库
  450. wmspOutboundResult.setResultStatus(new BigDecimal(1));
  451. int i = wmspOutboundResultService.updateByPrimaryKeySelective(wmspOutboundResult);
  452. return success(i);
  453. }
  454. /**
  455. * 司机扫描订单二维码进行倒库,首先根据运输订单号查找运输订单,
  456. *
  457. */
  458. @PostMapping("/insertOutBoundResult")
  459. public RESTfulResult insertOutBoundResult(@RequestBody(required = false) Map<String, Object> map){
  460. return success();
  461. }
  462. //创建一个删除实时库的接口
  463. @PostMapping("/deleteGridMaterial")
  464. public RESTfulResult deleteGridMaterial(@RequestParam String materialOnlyCode){
  465. //根据物资id查询相对应的入库实绩ID,并将其赋值给相对应的入库扫描实绩表,判断是否入库
  466. List<Map<String, Object>> list = wmspInboundScanResultMapper.getInboundResultIdByMaterial(materialOnlyCode);
  467. int result = wmspOutboundResultService.deleteGridMaterial(materialOnlyCode);
  468. //判断物质是否已经被扫描
  469. int isScan = wmspOutboundResultService.ExistScanResult(materialOnlyCode);
  470. if (result>0&&isScan==0&&list.size()>0){
  471. Map<String, Object> map1 = list.get(0);
  472. //创建出库实绩
  473. WmspOutboundResult wmspOutboundResult=wmspOutboundResultService.createOutboundResult(new BigDecimal(1),new BigDecimal(2));
  474. int status= wmspOutboundResultService.createOutboundScanResult(materialOnlyCode,new BigDecimal(1),wmspOutboundResult.getResultId(),(BigDecimal)map1.get("inboundResultId"));
  475. }
  476. if(result == -1){
  477. return failed(-1,"请勿重复扫码");
  478. }
  479. if(result == -2){
  480. return failed(-2,"该钢材还未入库");
  481. }
  482. return success("操作成功");
  483. }
  484. //统计出厂每个炉号生产的支数
  485. @PostMapping("/getWmsOutboundResultStatistics")
  486. @ApiOperation(value = "展示入库统计信息")
  487. @ApiImplicitParams({
  488. @ApiImplicitParam(name = "apiId", value = "371", required = false, dataType = "BigDecimal"),
  489. })
  490. public RESTfulResult getWmsOutboundResultStatistics(@RequestBody(required = false) Map<String, Object> mapValue,
  491. Integer apiId,
  492. Integer pageNum,
  493. Integer pageSize,
  494. Integer warehouseId,
  495. String con,
  496. String startTime,
  497. String endTime) {
  498. if (con!=null && !con.equals("undefined") && !"".equals(con)){
  499. mapValue.put("con","%"+con+"%");
  500. }
  501. if(mapValue == null){
  502. mapValue =new HashMap<>();
  503. }
  504. mapValue.put("warehouseId",warehouseId);
  505. DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);//根据时间段查询数据
  506. List<Map<String,Object>> inboundResultList = wmspOutboundResultService.getWmsOutboundResultStatistics(mapValue);
  507. /*分页*/
  508. PageHelper.startPage(pageNum, pageSize);
  509. List<Map<String,Object>> columnList = wmspOutboundResultService.getWmsOutboundResultStatistics(mapValue);
  510. PageListAdd pageList = columnDataUtil.tableColumnData(apiId,inboundResultList,columnList);
  511. return success(pageList);
  512. }
  513. }