WmspOutboundResultController.java 30 KB

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