WmsInboundResultController.java 35 KB

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