WmsInboundResultController.java 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801
  1. package com.steerinfo.dil.controller;
  2. import com.steerinfo.dil.feign.ESFeign;
  3. import com.steerinfo.dil.mapper.WmspGridMaterialMapper;
  4. import com.steerinfo.dil.model.*;
  5. import com.steerinfo.dil.service.ICommonService;
  6. import com.steerinfo.dil.service.impl.*;
  7. import com.steerinfo.dil.util.*;
  8. import com.steerinfo.framework.controller.RESTfulResult;
  9. import com.steerinfo.framework.service.pagehelper.PageHelper;
  10. import io.swagger.annotations.Api;
  11. import io.swagger.annotations.ApiImplicitParam;
  12. import io.swagger.annotations.ApiImplicitParams;
  13. import io.swagger.annotations.ApiOperation;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.transaction.annotation.Transactional;
  16. import org.springframework.web.bind.annotation.*;
  17. import java.math.BigDecimal;
  18. import java.text.ParseException;
  19. import java.text.SimpleDateFormat;
  20. import java.util.Date;
  21. import java.util.HashMap;
  22. import java.util.List;
  23. import java.util.Map;
  24. //import java.util.*;
  25. /**
  26. * @author luobang
  27. * @create 2021-09-06 18:13
  28. */
  29. @Api("入库实绩")
  30. @RestController
  31. @RequestMapping("${api.version}/inboundResult")
  32. public class WmsInboundResultController extends BaseRESTfulController {
  33. @Autowired
  34. ColumnDataUtil columnDataUtil;
  35. @Autowired
  36. ESFeign esFeign;
  37. @Autowired
  38. WmsInboundResultServiceImpl wmsInboundResultServiceImpl;
  39. @Autowired
  40. WmsInboundScanResultServiceImpl wmsInboundScanResultServiceImpl;
  41. @Autowired
  42. WmsInboundDrivingResultServiceImpl wmsInboundDrivingResultServiceImpl;
  43. @Autowired
  44. RmsStackingServiceImpl rmsStackingService;
  45. @Autowired
  46. RmsPwarehouseGridServiceImpl rmsPwarehouseGridService;
  47. @Autowired
  48. WmspGridMaterialServiceImpl wmspGridMaterialService;
  49. @Autowired
  50. WmspGridMaterialMapper wmspGridMaterialMapper;
  51. @Autowired
  52. WmsInboundStackResultServiceImpl wmsInboundStackResultServiceImpl;
  53. @Autowired
  54. WmspInboundDistributeServiceImpl wmspInboundDistributeService;
  55. @Autowired
  56. ICommonService commonService;
  57. @Autowired
  58. WmsInboundScanResultServiceImpl wmsInboundScanResultService;
  59. @Autowired
  60. WmspSendReceiveServiceImpl wmspSendReceiveService;
  61. private final SimpleDateFormat sdfDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  62. /**
  63. * 展示入库实绩
  64. * @param mapValue
  65. * @param apiId
  66. * @param pageNum
  67. * @param pageSize
  68. * @return
  69. */
  70. @PostMapping("/getWmsInboundResult")
  71. @ApiOperation(value = "展示入库实绩信息")
  72. @ApiImplicitParams({
  73. @ApiImplicitParam(name = "apiId", value = "371", required = false, dataType = "BigDecimal"),
  74. })
  75. public RESTfulResult getWmsInboundResult(@RequestBody(required = false) Map<String, Object> mapValue,
  76. Integer apiId,
  77. Integer pageNum,
  78. Integer pageSize,
  79. Integer warehouseId,
  80. String startTime,
  81. String endTime) {
  82. DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);//根据时间段查询数据
  83. List<Map<String,Object>> inboundResultList = wmsInboundResultServiceImpl.getInboundResult(mapValue,warehouseId);
  84. /*分页*/
  85. PageHelper.startPage(pageNum, pageSize);
  86. List<Map<String,Object>> columnList = wmsInboundResultServiceImpl.getInboundResult(mapValue,warehouseId);
  87. // 处理异常状态字段
  88. for (Map<String,Object>map:columnList
  89. ) {
  90. BigDecimal isComplete = (BigDecimal) map.get("isComplete");
  91. if(isComplete.intValue() == 1){
  92. map.remove("isComplete");
  93. map.put("isComplete","无异常,正常入库");
  94. }else{
  95. map.remove("isComplete");
  96. map.put("isComplete","异常入库");
  97. }
  98. }
  99. PageListAdd pageList = columnDataUtil.tableColumnData(apiId,inboundResultList,columnList);
  100. return success(pageList);
  101. }
  102. /**
  103. * 展示入库实绩
  104. * @param mapValue
  105. * @param apiId
  106. * @param pageNum
  107. * @param pageSize
  108. * @return
  109. */
  110. @PostMapping("/getWmsInboundResultStatistics")
  111. @ApiOperation(value = "展示入库统计信息")
  112. @ApiImplicitParams({
  113. @ApiImplicitParam(name = "apiId", value = "445", required = false, dataType = "BigDecimal"),
  114. })
  115. public RESTfulResult getWmsInboundResultStatistics(@RequestBody(required = false) Map<String, Object> mapValue,
  116. Integer apiId,
  117. Integer pageNum,
  118. Integer pageSize,
  119. Integer warehouseId,
  120. String startTime,
  121. String endTime) {
  122. DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);//根据时间段查询数据
  123. List<Map<String,Object>> inboundResultList = wmsInboundResultServiceImpl.getWmsInboundResultStatistics(mapValue,warehouseId);
  124. /*分页*/
  125. PageHelper.startPage(pageNum, pageSize);
  126. List<Map<String,Object>> columnList = wmsInboundResultServiceImpl.getWmsInboundResultStatistics(mapValue,warehouseId);
  127. PageListAdd pageList = columnDataUtil.tableColumnData(apiId,inboundResultList,columnList);
  128. return success(pageList);
  129. }
  130. /**
  131. * 展示入库实绩
  132. * @param mapValue
  133. * @param apiId
  134. * @param pageNum
  135. * @param pageSize
  136. * @return
  137. */
  138. @PostMapping("/getWmsInboundResults")
  139. @ApiOperation(value = "展示入库实绩信息")
  140. @ApiImplicitParams({
  141. @ApiImplicitParam(name = "apiId", value = "371", required = false, dataType = "BigDecimal"),
  142. })
  143. public RESTfulResult getWmsInboundResults(@RequestBody(required = false) Map<String, Object> mapValue,
  144. Integer apiId,
  145. Integer pageNum,
  146. Integer pageSize,
  147. Integer warehouseId,
  148. String startTime,
  149. String endTime) {
  150. DataChange.queryDataByDateTime(startTime, endTime, mapValue, sdfDateTime);//根据时间段查询数据
  151. List<Map<String,Object>> inboundResultList = wmsInboundResultServiceImpl.getInboundResults(mapValue,warehouseId);
  152. /*分页*/
  153. PageHelper.startPage(pageNum, pageSize);
  154. List<Map<String,Object>> columnList = wmsInboundResultServiceImpl.getInboundResults(mapValue,warehouseId);
  155. // 处理异常状态字段
  156. for (Map<String,Object>map:columnList
  157. ) {
  158. BigDecimal isComplete = (BigDecimal) map.get("isComplete");
  159. if(isComplete.intValue() == 1){
  160. map.remove("isComplete");
  161. map.put("isComplete","无异常,正常入库");
  162. }else{
  163. map.remove("isComplete");
  164. map.put("isComplete","异常入库");
  165. }
  166. }
  167. PageListAdd pageList = columnDataUtil.tableColumnData(apiId,inboundResultList,columnList);
  168. return success(pageList);
  169. }
  170. /**
  171. * 展示入库实绩
  172. * @param mapValue
  173. * @param apiId
  174. * @param pageNum
  175. * @param pageSize
  176. * @return
  177. */
  178. @PostMapping("/getWmsReservedResult")
  179. @ApiOperation(value = "展示预留入库实绩信息")
  180. @ApiImplicitParams({
  181. @ApiImplicitParam(name = "apiId", value = "371", required = false, dataType = "BigDecimal"),
  182. })
  183. public RESTfulResult getWmsReservedResult(@RequestBody(required = false) Map<String, Object> mapValue,
  184. Integer apiId,
  185. Integer pageNum,
  186. Integer pageSize,
  187. Integer warehouseId,
  188. String con) {
  189. if (mapValue == null){
  190. mapValue = new HashMap<>();
  191. }
  192. if(con != null){
  193. if(!"undefined".equals(con)){
  194. String index = "get_wms_reservedresult";
  195. return success(esFeign.getConResult(mapValue,index,apiId,pageNum,pageSize,con));
  196. }
  197. }
  198. mapValue.put("warehouseId",warehouseId);
  199. List<Map<String,Object>>inboundResultList = null;
  200. if(mapValue.size() == 0){
  201. //将查询结果存入索引中
  202. inboundResultList = wmsInboundResultServiceImpl.getWmsReservedResult(mapValue);
  203. Map<String, Object> inboundResultMap = new HashMap<>();
  204. //添加索引
  205. inboundResultMap.put("index","get_wms_reservedresult");
  206. //添加ID
  207. inboundResultMap.put("indexId","reservedresultId");
  208. inboundResultList.add(inboundResultMap);
  209. //新建索引
  210. esFeign.insertIndex(inboundResultList);
  211. //删除
  212. inboundResultList.remove(inboundResultList.size() -1);
  213. }
  214. if(inboundResultList == null) {
  215. inboundResultList = wmsInboundResultServiceImpl.getWmsReservedResult(mapValue);
  216. }
  217. /*分页*/
  218. PageHelper.startPage(pageNum, pageSize);
  219. List<Map<String,Object>> columnList = wmsInboundResultServiceImpl.getWmsReservedResult(mapValue);
  220. // 处理异常状态字段
  221. for (Map<String,Object>map:columnList
  222. ) {
  223. BigDecimal isComplete = (BigDecimal) map.get("isComplete");
  224. if(isComplete.intValue() == 1){
  225. map.remove("isComplete");
  226. map.put("isComplete","无异常,正常入库");
  227. }else{
  228. map.remove("isComplete");
  229. map.put("isComplete","异常入库");
  230. }
  231. }
  232. PageListAdd pageList = columnDataUtil.tableColumnData(apiId,inboundResultList,columnList);
  233. return success(pageList);
  234. }
  235. ///**
  236. // * 新增入库实绩
  237. // *
  238. // * @param
  239. // * @return
  240. // */
  241. //@ApiOperation("新增入库实绩")
  242. //@PostMapping("/insertInboundResult4")
  243. //@Transactional
  244. //public RESTfulResult addInvoice2(@RequestParam("userName") String userName,@RequestParam("groupId") BigDecimal groupId,@RequestParam("personnelWorkshopid") BigDecimal personnelWorkshopid, @RequestBody(required = false) List<Map<String, Object>> mapList) {
  245. //
  246. // //遗留 查询批次、以及状态
  247. // int batch=0;
  248. // //需要判断是否已经提交过了 通过resultId判断物质是否已经下发过了跳出、多次下发的结果
  249. // int resultStatus= wmsInboundScanResultServiceImpl.getResultStatusByResultId(mapList.get(0).get("resultId").toString());
  250. // if(resultStatus==1){
  251. // return success("请勿重复下发");
  252. // }
  253. // //、创建批次
  254. // WmspInboundDistribute wmspInboundDistribute=wmspInboundDistributeService.initAndCreateInboundDistribute(personnelWorkshopid,groupId,userName,batch);
  255. // //判断物质是否是线材
  256. //
  257. //
  258. // //将下面的订单都录入这个批次里面
  259. // for (int i=0;i<mapList.size();i++){
  260. // BigDecimal count = wmsInboundScanResultService.selectMaterialTypeByMaterialId(new BigDecimal(mapList.get(0).get("materialId").toString()));
  261. // if (count!=null){
  262. // Map<String,Object> item=mapList.get(i);
  263. // // BigDecimal houseGrid = rmsPwarehouseGridService.selectGrid(mapList.size()-(i+1), personnelWorkshopid,new BigDecimal(item.get("materialId").toString()));
  264. // BigDecimal houseGrid = null;
  265. // if (personnelWorkshopid.compareTo(new BigDecimal(1))==0){
  266. // houseGrid = new BigDecimal("12335");
  267. // }else if (personnelWorkshopid.compareTo(new BigDecimal(2))==0){
  268. // houseGrid = new BigDecimal("24472");
  269. // }
  270. // //创建一个入库作业实绩
  271. // WmspInboundResult wmspInboundResult = wmsInboundResultServiceImpl.initAndWmspInboundResult(1,i+1,personnelWorkshopid,groupId,userName,wmspInboundDistribute.getDistributeId(),houseGrid,item);
  272. // //改变扫码实绩里面的状态
  273. // int status= wmsInboundScanResultServiceImpl.updateInboundScanStatus(new BigDecimal(item.get("resultId").toString()),wmspInboundResult.getInboundId());
  274. // //创建实时库存
  275. // wmspGridMaterialService.initInsertWmspGridMaterial(item,houseGrid);
  276. // //改为扫一次添加得代码
  277. // //当都完成的时候就要去改变这一批的状态改为下发状态
  278. // if(mapList.size()==i+1){
  279. // int status2= wmsInboundResultServiceImpl.updateInboundStatus(wmspInboundDistribute.getDistributeId());
  280. // }
  281. // }else {
  282. // //如果是线材直接结束
  283. // //将下面的订单都录入这个批次里面
  284. // Map<String, Object> item = mapList.get(i);
  285. // //获得高线库
  286. // HashMap<String, Object> map3 = new HashMap<>();
  287. // map3.put("warehouseId",3);
  288. // BigDecimal houseGrid=rmsPwarehouseGridService.getGridId(map3);;
  289. // //创建一个入库作业实绩
  290. // WmspInboundResult wmspInboundResult = wmsInboundResultServiceImpl.initAndWmspInboundResult(1, i + 1, personnelWorkshopid, new BigDecimal(0), userName, wmspInboundDistribute.getDistributeId(), houseGrid, item);
  291. // //改变扫码实绩里面的状态
  292. // int status = wmsInboundScanResultServiceImpl.updateInboundScanStatus(new BigDecimal(item.get("resultId").toString()), wmspInboundResult.getInboundId());
  293. // //创建实时库存
  294. // wmspGridMaterialService.initInsertWmspGridMaterial(item, houseGrid);
  295. // //当都完成的时候就要去改变这一批的状态改为下发状态
  296. // if(mapList.size()==i+1){
  297. // int status2= wmsInboundResultServiceImpl.updateInboundStatus(wmspInboundDistribute.getDistributeId());
  298. // }
  299. // }
  300. // //改为扫一次添加得代码
  301. // int status3= wmspInboundDistributeService.updateDistributeStatus(wmspInboundDistribute.getDistributeId().toString());
  302. // }
  303. // return success("下发成功");
  304. //}
  305. /**
  306. * 新增入库实绩
  307. *
  308. * @param
  309. * @return
  310. */
  311. @ApiOperation("新增入库实绩")
  312. @PostMapping("/insertInboundResult")
  313. @Transactional
  314. public RESTfulResult addInvoice(@RequestParam("userName") String userName,
  315. @RequestParam("groupId") BigDecimal groupId,
  316. @RequestParam("personnelWorkshopid") BigDecimal personnelWorkshopid,
  317. @RequestBody(required = false) List<Map<String, Object>> mapList,
  318. @RequestParam(required = false) String remark) {
  319. //遗留 查询批次、以及状态
  320. int batch=0;
  321. //需要判断是否已经提交过了 通过resultId判断物质是否已经下发过了跳出、多次下发的结果
  322. int resultStatus= wmsInboundScanResultServiceImpl.getResultStatusByResultId(mapList.get(0).get("resultId").toString());
  323. if(resultStatus==1){
  324. return success("请勿重复下发");
  325. }
  326. if(remark == null || "null".equals(remark)){
  327. remark = "";
  328. }
  329. //、创建批次
  330. WmspInboundDistribute wmspInboundDistribute=wmspInboundDistributeService.initAndCreateInboundDistribute(personnelWorkshopid,groupId,userName,batch);
  331. //判断物质是否是线材
  332. BigDecimal count = wmsInboundScanResultService.selectMaterialTypeByMaterialId(new BigDecimal(mapList.get(0).get("materialId").toString()));
  333. if (count!=null){
  334. //将下面的订单都录入这个批次里面
  335. for (int i=0;i<mapList.size();i++){
  336. Map<String,Object> item=mapList.get(i);
  337. // BigDecimal houseGrid = rmsPwarehouseGridService.selectGrid(mapList.size()-(i+1), personnelWorkshopid,new BigDecimal(item.get("materialId").toString()));
  338. BigDecimal houseGrid = null;
  339. if (wmspInboundDistribute.getPersonnelWorkshopid().compareTo(new BigDecimal(1))==0){
  340. houseGrid = new BigDecimal("12335");
  341. }else if (wmspInboundDistribute.getPersonnelWorkshopid().compareTo(new BigDecimal(2))==0){
  342. houseGrid = new BigDecimal("24472");
  343. }else {
  344. return null;
  345. }
  346. //创建一个入库作业实绩
  347. WmspInboundResult wmspInboundResult = wmsInboundResultServiceImpl.initAndWmspInboundResult(1,i+1,personnelWorkshopid,groupId,userName,wmspInboundDistribute.getDistributeId(),houseGrid,item,remark);
  348. //改变扫码实绩里面的状态
  349. int status= wmsInboundScanResultServiceImpl.updateInboundScanStatus(new BigDecimal(item.get("resultId").toString()),wmspInboundResult.getInboundId());
  350. //创建实时库存
  351. wmspGridMaterialService.initInsertWmspGridMaterial(item,houseGrid);
  352. //改为扫一次添加得代码
  353. //当都完成的时候就要去改变这一批的状态改为下发状态
  354. if(mapList.size()==i+1){
  355. int status2= wmsInboundResultServiceImpl.updateInboundStatus(wmspInboundDistribute.getDistributeId());
  356. }
  357. }
  358. //改为扫一次添加得代码
  359. int status3= wmspInboundDistributeService.updateDistributeStatus(wmspInboundDistribute.getDistributeId().toString());
  360. }else {
  361. //如果是线材直接结束
  362. //将下面的订单都录入这个批次里面
  363. for (int i=0;i<mapList.size();i++) {
  364. Map<String, Object> item = mapList.get(i);
  365. //获得高线库
  366. HashMap<String, Object> map3 = new HashMap<>();
  367. map3.put("warehouseId",3);
  368. BigDecimal houseGrid=rmsPwarehouseGridService.getGridId(map3);;
  369. //创建一个入库作业实绩
  370. WmspInboundResult wmspInboundResult = wmsInboundResultServiceImpl.initAndWmspInboundResult(1, i + 1, personnelWorkshopid, new BigDecimal(0), userName, wmspInboundDistribute.getDistributeId(), houseGrid, item,remark);
  371. //改变扫码实绩里面的状态
  372. int status = wmsInboundScanResultServiceImpl.updateInboundScanStatus(new BigDecimal(item.get("resultId").toString()), wmspInboundResult.getInboundId());
  373. //创建实时库存
  374. wmspGridMaterialService.initInsertWmspGridMaterial(item, houseGrid);
  375. //当都完成的时候就要去改变这一批的状态改为下发状态
  376. if(mapList.size()==i+1){
  377. int status2= wmsInboundResultServiceImpl.updateInboundStatus(wmspInboundDistribute.getDistributeId());
  378. }
  379. }
  380. int status3= wmspInboundDistributeService.updateDistributeStatus(wmspInboundDistribute.getDistributeId().toString());
  381. // wmspSendReceiveService.addInBoundSendReceive();
  382. }
  383. return success("下发成功");
  384. }
  385. // /**
  386. // * 新增入库实绩
  387. // *
  388. // * @param
  389. // * @return
  390. // */
  391. // @ApiOperation("新增入库实绩")
  392. // @PostMapping("/insertInboundResult3")
  393. // @Transactional
  394. // public RESTfulResult addInvoice3(@RequestParam("userName") String userName,@RequestParam("groupId") BigDecimal groupId,@RequestParam("personnelWorkshopid") BigDecimal personnelWorkshopid, @RequestBody(required = false) List<Map<String, Object>> mapList) {
  395. // //查询当前组最新得一条入库实绩、判断是否是自己创建得、状态是否是带下发状态
  396. // Map<String,Object> conditionMap=wmsInboundResultServiceImpl.selectInboundResultByGroupId(groupId);
  397. // //如果最新的一条是自己的并且
  398. // //遗留 查询批次、以及状态
  399. // int batch=0;
  400. // //此条件成了说明他提交之后、另外一个还没提交交
  401. // if ((conditionMap!=null&&conditionMap.get("userName").toString().equals(userName)&&conditionMap.get("resultStatus").toString().equals("1"))){
  402. // return success("等待提交");
  403. // }
  404. //
  405. // //此条件成了说明第二个人开始提交了
  406. // if (conditionMap!=null&&!conditionMap.get("userName").toString().equals(userName)&&conditionMap.get("resultStatus").toString().equals("1")){
  407. // //将下面的订单都录入这个批次里面
  408. // for (int i=0;i<mapList.size();i++){
  409. // Map<String,Object> item=mapList.get(i);
  410. // //获得同一批的第i个的网格 解释:目前还没有设计出来网格的结构 没有做默认为 第一库、第一月台、第一垛位、第一行、第一列 \推送信息给行车工、让他们抢单代码备注了
  411. // BigDecimal houseGrid = wmsInboundResultServiceImpl.getGrid(conditionMap.get("distributeId").toString(), i+1);
  412. // //如果差不多、说明上一个人少扫了一次
  413. // if (houseGrid==null){
  414. // houseGrid = rmsPwarehouseGridService.selectGrid(mapList.size()-(i+1), personnelWorkshopid,new BigDecimal(item.get("materialId").toString()));
  415. // //创建实时库存
  416. // wmspGridMaterialService.initInsertWmspGridMaterial(item,houseGrid);
  417. // }
  418. // //创建一个入库作业实绩
  419. // WmspInboundResult wmspInboundResult = wmsInboundResultServiceImpl.initAndWmspInboundResult(0,i+1,personnelWorkshopid,groupId,userName,new BigDecimal(conditionMap.get("distributeId").toString()),houseGrid,item);
  420. // //改变扫码实绩里面的状态
  421. // int status= wmsInboundScanResultServiceImpl.updateInboundScanStatus(new BigDecimal(item.get("resultId").toString()),wmspInboundResult.getInboundId());
  422. // //当都完成的时候就要去改变这一批的状态改为下发状态
  423. // if(mapList.size()==i+1){
  424. // int status2= wmsInboundResultServiceImpl.updateInboundStatus(new BigDecimal(conditionMap.get("distributeId").toString()));
  425. // }
  426. // }
  427. // int status3= wmspInboundDistributeService.updateDistributeStatus(conditionMap.get("distributeId").toString());
  428. //
  429. // return success("下发成功");
  430. // //第n批第一次提交
  431. // }else{
  432. // //需要判断是否已经提交过了 通过resultId判断物质是否已经下发过了跳出、多次下发的结果
  433. // int resultStatus= wmsInboundScanResultServiceImpl.getResultStatusByResultId(mapList.get(0).get("resultId").toString());
  434. // if(resultStatus==1){
  435. // return success("请勿重复下发");
  436. // }
  437. // //、创建批次
  438. // WmspInboundDistribute wmspInboundDistribute=wmspInboundDistributeService.initAndCreateInboundDistribute(personnelWorkshopid,groupId,userName,batch);
  439. // //判断物质是否是线材
  440. // BigDecimal count = wmsInboundScanResultService.selectMaterialTypeByMaterialId(new BigDecimal(mapList.get(0).get("materialId").toString()));
  441. // if (count!=null){
  442. // //将下面的订单都录入这个批次里面
  443. // for (int i=0;i<mapList.size();i++){
  444. //
  445. // Map<String,Object> item=mapList.get(i);
  446. //
  447. // //获得一个默认的网格 解释:目前还没有设计出来网格的结构 没有做默认为 第一库、第一月台、第一垛位、第一行、第一列 \推送信息给行车工、让他们抢单代码备注了
  448. // BigDecimal houseGrid = rmsPwarehouseGridService.selectGrid(mapList.size()-(i+1), personnelWorkshopid,new BigDecimal(item.get("materialId").toString()));
  449. // //创建一个入库作业实绩
  450. // WmspInboundResult wmspInboundResult = wmsInboundResultServiceImpl.initAndWmspInboundResult(0,i+1,personnelWorkshopid,groupId,userName,wmspInboundDistribute.getDistributeId(),houseGrid,item);
  451. // //改变扫码实绩里面的状态
  452. // int status= wmsInboundScanResultServiceImpl.updateInboundScanStatus(new BigDecimal(item.get("resultId").toString()),wmspInboundResult.getInboundId());
  453. // //创建实时库存
  454. // wmspGridMaterialService.initInsertWmspGridMaterial(item,houseGrid);
  455. // //改为扫一次添加得代码
  456. // //当都完成的时候就要去改变这一批的状态改为下发状态
  457. // if(mapList.size()==i+1){
  458. // int status2= wmsInboundResultServiceImpl.updateInboundStatus(wmspInboundDistribute.getDistributeId());
  459. // }
  460. //
  461. // }
  462. // //改为扫一次添加得代码
  463. // int status3= wmspInboundDistributeService.updateDistributeStatus(wmspInboundDistribute.getDistributeId().toString());
  464. // }else {
  465. // //如果是线材直接结束
  466. // //将下面的订单都录入这个批次里面
  467. // for (int i=0;i<mapList.size();i++) {
  468. // Map<String, Object> item = mapList.get(i);
  469. // //获得高线库
  470. // HashMap<String, Object> map3 = new HashMap<>();
  471. // map3.put("warehouseId",3);
  472. // BigDecimal houseGrid=rmsPwarehouseGridService.getGridId(map3);;
  473. // //创建一个入库作业实绩
  474. // WmspInboundResult wmspInboundResult = wmsInboundResultServiceImpl.initAndWmspInboundResult(1, i + 1, personnelWorkshopid, new BigDecimal(0), userName, wmspInboundDistribute.getDistributeId(), houseGrid, item);
  475. // //改变扫码实绩里面的状态
  476. // int status = wmsInboundScanResultServiceImpl.updateInboundScanStatus(new BigDecimal(item.get("resultId").toString()), wmspInboundResult.getInboundId());
  477. // //创建实时库存
  478. // wmspGridMaterialService.initInsertWmspGridMaterial(item, houseGrid);
  479. // //当都完成的时候就要去改变这一批的状态改为下发状态
  480. // if(mapList.size()==i+1){
  481. // int status2= wmsInboundResultServiceImpl.updateInboundStatus(wmspInboundDistribute.getDistributeId());
  482. // }
  483. //
  484. // //获取物资大类id
  485. //// BigDecimal materialSteelId = DataChange.dataToBigDecimal(item.get("materialId"));
  486. //// BigDecimal materialId = wmspSendReceiveService.getMaterialId(materialSteelId);
  487. //// Map<String,Object> map4 = new HashMap<>();
  488. //// map4.put("materialId",materialId);
  489. //// map4.put("warehouseId",3);
  490. //// wmspSendReceiveService.addInBoundSendReceive(map4);
  491. //// wmspSendReceiveService.addThisdayInventorySendReceive(map4);
  492. // }
  493. // int status3= wmspInboundDistributeService.updateDistributeStatus(wmspInboundDistribute.getDistributeId().toString());
  494. // // wmspSendReceiveService.addInBoundSendReceive();
  495. // }
  496. // return success("下发成功");
  497. // }
  498. //
  499. // }
  500. // /**
  501. // * 新增入库实绩
  502. // *
  503. // * @param
  504. // * @return
  505. // */
  506. // @ApiOperation("新增入库实绩")
  507. // @PostMapping("/insertInboundResult2")
  508. // @Transactional
  509. // public RESTfulResult addInvoice( @RequestBody(required = false) List<Map<String, Object>> mapList) {
  510. //
  511. //
  512. // //获取前方传来的仓库ID进行入库
  513. // BigDecimal warehouseId = new BigDecimal((Integer)mapList.get(0).get("personnelWorkshopid"));
  514. //
  515. // String inboundValue = null;
  516. // BigDecimal ST = null;
  517. // if(warehouseId.intValue() == 3){
  518. // inboundValue = wmsInboundResultServiceImpl.selectWarehouseName(new BigDecimal(3));
  519. // }
  520. // //!!!默认该仓库的所有行车工都能看到
  521. // //!!!待添加,查询该仓库所有在班的行车工
  522. // String personnelJobNumber = "000417";
  523. // if(warehouseId.intValue() != 3){
  524. // //查询入库垛位信息
  525. // Map<String,Object> stackingMap = rmsStackingService.getStackingToUpdate(mapList.size(),warehouseId,personnelJobNumber);
  526. // //获取入库垛位ID
  527. // ST = (BigDecimal) stackingMap.get("stackingId");
  528. // inboundValue = stackingMap.get("stackingNo").toString();
  529. // }
  530. // for (Map<String,Object> map:mapList
  531. // ) {
  532. // WmspInboundResult wmspInboundResult = new WmspInboundResult();
  533. // wmspInboundResult.setInboundId(new BigDecimal(wmsInboundResultServiceImpl.count() + 1));
  534. // /*
  535. // 设置入库类型为生产入库
  536. // */
  537. // wmspInboundResult.setInboundType(new BigDecimal(0));
  538. // /*
  539. // 设置入库单编号
  540. // */
  541. // String number=Liushuih.generateNextNumber("WRKD-", "yyyyMMdd-", 8, 12);
  542. // wmspInboundResult.setInboundNumber(number);
  543. // /*
  544. // 设置逻辑删除字段
  545. // */
  546. // wmspInboundResult.setResultDeleted(new BigDecimal(0));
  547. // /*
  548. // 设置常规字段
  549. // */
  550. // wmspInboundResult.setInsertUsername("admin");
  551. // wmspInboundResult.setInsertTime(new Date());
  552. // wmspInboundResult.setUpdateUsername("admin");
  553. // wmspInboundResult.setUpdateTime(new Date());
  554. // wmspInboundResult.setInsertUpdateRemark("无");
  555. // /*
  556. // 设置入库日期
  557. // */
  558. // wmspInboundResult.setInboundTime(new Date());
  559. // /*
  560. // 设置入库单状态为已下发
  561. // */
  562. // wmspInboundResult.setResultStatus(new BigDecimal(1));
  563. //
  564. // /*
  565. // 设置入库状态,当异常值为0时,入库状态设为未完成;当异常值为1时,入库状态设为完成
  566. // */
  567. // Integer K = 1;
  568. // if(warehouseId.intValue() != 3){
  569. // System.out.println(map.containsKey("abnormalis"));
  570. // System.out.println(map.get("abnormalis"));
  571. // K = (map.containsKey("abnormalis")&&map.get("abnormalis").toString().isEmpty())?Integer.valueOf(map.get("abnormalis").toString()):0;
  572. // }
  573. // if (K==0){
  574. // wmspInboundResult.setResultStatus(new BigDecimal(0));
  575. // wmspInboundResult.setInboundIscomplete(new BigDecimal(0));
  576. // }
  577. // else{
  578. // wmspInboundResult.setResultStatus(new BigDecimal(1));
  579. // wmspInboundResult.setInboundIscomplete(new BigDecimal(1));
  580. // }
  581. // Integer MN = null ;
  582. // Integer CC = null ;
  583. // Integer CX = null ;
  584. // if(warehouseId.intValue() != 3){
  585. // //根据垛位ID查询物资数,确定层次层序,即网格ID
  586. // HashMap<String, Object> map1 = new HashMap<>();
  587. // map1.put("stackingId",ST);
  588. // //获取物资数
  589. // MN=rmsStackingService.selectMaterialNumber(map1);
  590. // //计算层次号
  591. // CC=(MN)/24+1;
  592. // //计算层序号
  593. // CX=(MN)%24+1;
  594. // //更新垛位表
  595. // rmsStackingService.updateStack(ST);
  596. // }
  597. // //根据仓库id、垛位ID,层次号,层序号查找仓储网格
  598. // HashMap<String, Object> map3 = new HashMap<>();
  599. // map3.put("warehouseId",warehouseId);
  600. // map3.put("stackingID",ST);
  601. // map3.put("gradationNumber",CC);
  602. // map3.put("sequenceNumber",CX);
  603. // BigDecimal gridId=rmsPwarehouseGridService.getGridId(map3);
  604. // //设置入库实绩里面的网格ID
  605. // wmspInboundResult.setGridId(gridId);
  606. // /*
  607. // 插入一条网格物资中间表
  608. // */
  609. // WmspGridMaterial wmspGridMaterial = new WmspGridMaterial();
  610. // //设置主键ID
  611. // wmspGridMaterial.setGmId(wmspGridMaterialMapper.getCount());
  612. // wmspGridMaterial.setGridId(gridId);
  613. // wmspGridMaterial.setGmNumber(new BigDecimal(1));
  614. // wmspGridMaterial.setStandardDataId(new BigDecimal(1));
  615. // //设置网格物资表里面的物资ID
  616. // BigDecimal materialId= DataChange.dataToBigDecimal(map.get("materialId"));
  617. // wmspInboundResult.setMaterialId(materialId);
  618. // wmspGridMaterial.setMaterialId(materialId);
  619. // //设置逻辑删除字段
  620. // wmspGridMaterial.setDeleted(new BigDecimal(0));
  621. // //设置常规字段
  622. // wmspGridMaterial.setInsertUsername("admin");
  623. // wmspGridMaterial.setInsertTime(new Date());
  624. // wmspGridMaterial.setUpdateUsername("admin");
  625. // wmspGridMaterial.setUpdateTime(new Date());
  626. // wmspGridMaterial.setInsertUpdateRemark("无");
  627. // wmspGridMaterial.setStatus(new BigDecimal(2));
  628. // wmspGridMaterialService.insertWmspGridMaterial(wmspGridMaterial);
  629. // /*
  630. // 新增入库实绩主表
  631. // */
  632. // wmsInboundResultServiceImpl.insertWmsInboundResult(wmspInboundResult);
  633. // /*
  634. // 新增天车司机接收实绩
  635. // */
  636. // WmspInboundDrivingResult wmspInboundDrivingResult = new WmspInboundDrivingResult();
  637. // wmspInboundDrivingResult.setDrivingId(new BigDecimal(wmsInboundDrivingResultServiceImpl.count()+1));
  638. // wmspInboundDrivingResult.setDriverId(new BigDecimal(9));
  639. // wmspInboundDrivingResult.setDrivingReceiveTime(new Date());
  640. // wmspInboundDrivingResult.setInboundResultId(wmspInboundResult.getInboundId());
  641. // wmspInboundDrivingResult.setInsertUsername("admin");
  642. // wmspInboundDrivingResult.setInsertTime(new Date());
  643. // wmspInboundDrivingResult.setUpdateUsername("admin");
  644. // wmspInboundDrivingResult.setResultDeleted(new BigDecimal(1));
  645. // wmsInboundDrivingResultServiceImpl.insertWmspInboundDrivingResult(wmspInboundDrivingResult);
  646. // /*
  647. // 新增选择垛位实绩
  648. // */
  649. // WmspInboundStackResult wmspInboundStackResult = new WmspInboundStackResult();
  650. // wmspInboundStackResult.setResultId(new BigDecimal(wmsInboundStackResultServiceImpl.count()+1));
  651. // wmspInboundStackResult.setInboundResultId(wmspInboundResult.getInboundId());
  652. // wmspInboundStackResult.setStackingId(ST);
  653. // wmspInboundStackResult.setResultDeleted(new BigDecimal(1));
  654. // //设置常规字段
  655. // wmspInboundStackResult.setInsertUsername("admin");
  656. // wmspInboundStackResult.setInsertTime(new Date());
  657. // wmspInboundStackResult.setUpdateUsername("admin");
  658. // wmspInboundStackResult.setUpdateTime(new Date());
  659. // wmspInboundStackResult.setInsertUpdateRemark("无");
  660. // wmspInboundStackResult.setStackingStatus(new BigDecimal(0));
  661. // wmsInboundStackResultServiceImpl.insertWmsInboundStackResult(wmspInboundStackResult);
  662. // System.out.println(map.get("LOADA"));
  663. // System.out.println(map.get("LOADB"));
  664. // //判断物资是否为线材
  665. // BigDecimal count = wmsInboundScanResultServiceImpl.selectMaterialTypeByMaterialId(materialId);
  666. //
  667. // BigDecimal resultId= new BigDecimal((Integer)map.get("resultId")) ;
  668. //// BigDecimal RESULTBID= new BigDecimal((Integer)map.get("RESULTBID")) ;
  669. // BigDecimal InbounId=wmspInboundResult.getInboundId();
  670. // if(count!=null){
  671. // /*
  672. // 编辑扫描实绩-根据前台返回的扫描实绩ID修改扫描实绩
  673. // */
  674. // HashMap<String, Object> map5 = new HashMap<>();
  675. // Map<String,Object> otherLoadMap = new HashMap<>();
  676. // otherLoadMap.put("personnelWorkshopid",map.get("personnelWorkshopid"));
  677. // otherLoadMap.put("personnelShifts",map.get("personnelShifts"));
  678. // otherLoadMap.put("personnelTeam",map.get("personnelTeam"));
  679. // otherLoadMap.put("resultId",resultId);
  680. // //获取同一班次班组车间扫描次数扫描实绩
  681. // List<Map<String,Object>> otherResultIds = wmsInboundScanResultServiceImpl.getOntherLoadId(otherLoadMap);
  682. // //根据物资id查询是否该物资为线材
  683. // //设置另一个扫描实绩id为空
  684. // BigDecimal otherResultId = null;
  685. // //遍历查询出的同一班次班组车间扫描次数所有扫描实绩
  686. // for (Map<String,Object> otherMap : otherResultIds) {
  687. // //判断,查询出来的扫描实绩id是否于点击下发的扫描实绩的id相同
  688. // //如果不同,将获取到的扫描实绩主键id赋予otherResultId
  689. // if (((BigDecimal) otherMap.get("resultId")).intValue() != resultId.intValue()) {
  690. // otherResultId = (BigDecimal) otherMap.get("resultId");
  691. // }
  692. // }
  693. // //更新扫描实绩
  694. // map5.put("resultId",resultId);
  695. // map5.put("InbounId",InbounId);
  696. // wmsInboundScanResultServiceImpl.updateWmsInboundScanById(map5);
  697. // map5.remove("resultId");
  698. // map5.put("resultId",otherResultId);
  699. // wmsInboundScanResultServiceImpl.updateWmsInboundScanById(map5);
  700. // }
  701. // //更新扫描实绩状态
  702. // Map<String,Object> map7=new HashMap<>();
  703. // map7.put("resultId",resultId);
  704. // map7.put("InbounId",InbounId);
  705. // wmsInboundScanResultServiceImpl.updateWmsInboundScanById(map7);
  706. // }
  707. // return success(inboundValue);
  708. // }
  709. //根据入库实绩id查找扫描实绩
  710. @PostMapping("/selectScanResultByIboundResultId")
  711. @ApiOperation(value = "根据入库实绩id获得扫描实绩数据")
  712. @ApiImplicitParams({
  713. @ApiImplicitParam(name = "apiId", value = "", required = false, dataType = "BigDecimal"),
  714. })
  715. public RESTfulResult selectScanResultByIboundResultId(@RequestBody(required = false) Map<String, Object> mapValue,
  716. Integer apiId,
  717. Integer pageNum,
  718. Integer pageSize,
  719. String con
  720. ) {
  721. if(con != null){
  722. if(!"undefined".equals(con)){
  723. String index = "get_wms_inboundScanResult";
  724. return success(esFeign.getConResult(mapValue,index,apiId,pageNum,pageSize,con));
  725. }
  726. }
  727. List<Map<String,Object>>inboundScanResultList = null;
  728. if(mapValue.size() == 0){
  729. //将查询结果存入索引中
  730. inboundScanResultList = wmsInboundResultServiceImpl.selectScanResultByIboundResultId(mapValue);
  731. Map<String, Object> inboundScanResultMap = new HashMap<>();
  732. //添加索引
  733. inboundScanResultMap.put("index","get_wms_inboundScanResult");
  734. //添加ID
  735. inboundScanResultMap.put("indexId","inboundScanResultId");
  736. inboundScanResultList.add(inboundScanResultMap);
  737. //新建索引
  738. esFeign.insertIndex(inboundScanResultList);
  739. //删除
  740. inboundScanResultList.remove(inboundScanResultList.size() -1);
  741. }
  742. if(inboundScanResultList == null) {
  743. inboundScanResultList = wmsInboundResultServiceImpl.selectScanResultByIboundResultId(mapValue);
  744. }
  745. /*分页*/
  746. PageHelper.startPage(pageNum, pageSize);
  747. List<Map<String,Object>> columnList = wmsInboundResultServiceImpl.selectScanResultByIboundResultId(mapValue);
  748. PageListAdd pageList = columnDataUtil.tableColumnData(apiId,inboundScanResultList,columnList);
  749. return success(pageList);
  750. }
  751. // 根据对应的入库实绩id修改入库状态为预留
  752. @PostMapping("/changeReserved")
  753. @ApiOperation(value = "根据对应的入库实绩id修改入库状态为预留")
  754. public int changeReserved(@RequestBody(required = false) List<Map<String, Object>> mapList) {
  755. return wmsInboundResultServiceImpl.changeReserved(mapList);
  756. }
  757. //勾选撤销入库
  758. @PostMapping("/undoInbound")
  759. @ApiOperation(value = "勾选撤销入库")
  760. public RESTfulResult undoInbound(@RequestParam BigDecimal inboundId){
  761. int result = wmsInboundResultServiceImpl.undoInbound(inboundId);
  762. return success(result);
  763. }
  764. @ApiOperation(value="获取已经下发的每个炉号的数量")
  765. @PostMapping("/getFurnaceNoAmount")
  766. public RESTfulResult getFurnaceNoAmount(@RequestBody(required = false) Map<String,Object>map) throws ParseException {
  767. List<Map<String,Object>> mapList = wmsInboundResultServiceImpl.getFurnaceNoAmount(map);
  768. return success(mapList);
  769. }
  770. }