WmspOutboundResultController.java 29 KB

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