Commit f3842bb1ffbbd106269d3138455f00edf3cd328a
1 parent
6393111b
PDA新增入库单 出库单
Showing
6 changed files
with
165 additions
and
1 deletions
src/main/java/com/huaheng/mobile/receipt/MobileBatchReceiptController.java
... | ... | @@ -33,6 +33,7 @@ import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHea |
33 | 33 | import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; |
34 | 34 | import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; |
35 | 35 | import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; |
36 | +import com.huaheng.pc.receipt.receiptHeader.mapper.ReceiptHeaderMapper; | |
36 | 37 | import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; |
37 | 38 | import com.huaheng.pc.system.dict.domain.DictData; |
38 | 39 | import com.huaheng.pc.system.dict.service.IDictDataService; |
... | ... | @@ -86,6 +87,8 @@ public class MobileBatchReceiptController { |
86 | 87 | private IDictDataService dictDataService; |
87 | 88 | @Resource |
88 | 89 | private ReceiptTypeService receiptTypeService; |
90 | + @Resource | |
91 | + private ReceiptHeaderMapper receiptHeaderMapper; | |
89 | 92 | |
90 | 93 | |
91 | 94 | @PostMapping("/scanContainer") |
... | ... | @@ -651,6 +654,75 @@ public class MobileBatchReceiptController { |
651 | 654 | return AjaxResult.success(receiptType); |
652 | 655 | } |
653 | 656 | |
657 | + @PostMapping("/createReceiptCode") | |
658 | + @ApiOperation("移动端创建入库单号") | |
659 | + @Log(title = "移动端创建入库单号", action = BusinessType.OTHER) | |
660 | + public AjaxResult createReceiptCode(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){ | |
661 | + String companyCode = param.get("companyCode"); | |
662 | + String receiptType = "DE"; | |
663 | + String code = null; | |
664 | + Date now = new Date(); | |
665 | + SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); | |
666 | + String maxCode = receiptHeaderMapper.createCode(receiptType); | |
667 | + //如果指定类型的最后的code存在,并且日期一致。那么 code = 入库单类型 + 年月日 + (排序号 + 1) | |
668 | + if (maxCode != null && maxCode.substring(maxCode.length() - 11, maxCode.length() - 3).equals(df.format(now))) { | |
669 | + Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 3, maxCode.length())); | |
670 | + code = receiptType + df.format(now) + String.format("%03d", Count + 1); | |
671 | + } else { | |
672 | + code = receiptType + df.format(now) + "001"; | |
673 | + } | |
674 | + ReceiptHeader receiptHeader = new ReceiptHeader(); | |
675 | + receiptHeader.setId(null); | |
676 | + receiptHeader.setCode(code); | |
677 | + receiptHeader.setReceiptType(receiptType); | |
678 | + receiptHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); | |
679 | + receiptHeader.setCreated(null); | |
680 | + receiptHeader.setCreatedBy(ShiroUtils.getLoginName()); | |
681 | + receiptHeader.setLastUpdated(null); | |
682 | + receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
683 | + receiptHeader.setFirstStatus(200); | |
684 | + receiptHeader.setLastStatus(200); | |
685 | + receiptHeader.setCompanyCode(companyCode); | |
686 | + return AjaxResult.success().setData(receiptHeader.getCode()); | |
687 | + } | |
654 | 688 | |
689 | + @PostMapping("/createReceipt") | |
690 | + @ApiOperation("移动端创建入库单") | |
691 | + @Log(title = "移动端创建入库单", action = BusinessType.OTHER) | |
692 | + @Transactional(rollbackFor = Exception.class) | |
693 | + public AjaxResult createReceipt(@RequestBody @ApiParam(value = "物料号")List<ReceiptBill> receiptBills){ | |
694 | + String companyCode = receiptBills.get(0).getCompanyCode(); | |
695 | + String receiptCode = receiptBills.get(0).getReceiptCode(); | |
696 | + String receiptType = "DE"; | |
697 | + ReceiptHeader receiptHeader = new ReceiptHeader(); | |
698 | + receiptHeader.setId(null); | |
699 | + receiptHeader.setCode(receiptCode); | |
700 | + receiptHeader.setReceiptType(receiptType); | |
701 | + receiptHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); | |
702 | + receiptHeader.setCreated(null); | |
703 | + receiptHeader.setCreatedBy(ShiroUtils.getLoginName()); | |
704 | + receiptHeader.setLastUpdated(null); | |
705 | + receiptHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
706 | + receiptHeader.setFirstStatus(200); | |
707 | + receiptHeader.setLastStatus(200); | |
708 | + receiptHeader.setCompanyCode(companyCode); | |
709 | + receiptHeaderService.save(receiptHeader); | |
710 | + List<Integer> receiptDetailIds = receiptDetailService.insertTodayReceiptDetail(receiptHeader.getId(), receiptBills, false, companyCode); | |
711 | + receiptDetailService.updateReceiptHeader(receiptHeader); | |
712 | + if(receiptDetailIds != null && receiptDetailIds.size() > 0) { | |
713 | + return AjaxResult.success("创建入库单成功"); | |
714 | + } | |
715 | + return AjaxResult.error("创建入库单失败"); | |
716 | + } | |
655 | 717 | |
718 | + @PostMapping("/findMaterial") | |
719 | + @ApiOperation("移动端查询物料信息") | |
720 | + @Log(title = "移动端查询物料信息", action = BusinessType.OTHER) | |
721 | + public AjaxResult findMaterial(@RequestBody @ApiParam(value = "物料号") Map<String, String> param) throws Exception { | |
722 | + LambdaQueryWrapper<Material> materialLambdaQueryWrapper = Wrappers.lambdaQuery(); | |
723 | + materialLambdaQueryWrapper.eq(Material::getDeleted, false) | |
724 | + .orderByDesc(Material::getCreated); | |
725 | + List<Material> materialList = materialService.list(materialLambdaQueryWrapper); | |
726 | + return AjaxResult.success(materialList); | |
727 | + } | |
656 | 728 | } |
... | ... |
src/main/java/com/huaheng/mobile/receipt/ReceiptBill.java
src/main/java/com/huaheng/mobile/shipment/MobileShipmentController.java
... | ... | @@ -13,8 +13,11 @@ import com.huaheng.framework.aspectj.lang.constant.BusinessType; |
13 | 13 | import com.huaheng.framework.web.controller.BaseController; |
14 | 14 | import com.huaheng.framework.web.domain.AjaxResult; |
15 | 15 | import com.huaheng.mobile.invenory.TaskIds; |
16 | +import com.huaheng.mobile.receipt.ReceiptBill; | |
16 | 17 | import com.huaheng.pc.config.company.domain.Company; |
17 | 18 | import com.huaheng.pc.config.company.service.CompanyService; |
19 | +import com.huaheng.pc.config.material.domain.Material; | |
20 | +import com.huaheng.pc.config.material.service.MaterialService; | |
18 | 21 | import com.huaheng.pc.config.receiptType.domain.ReceiptType; |
19 | 22 | import com.huaheng.pc.config.shipmentType.domain.ShipmentType; |
20 | 23 | import com.huaheng.pc.config.shipmentType.service.ShipmentTypeService; |
... | ... | @@ -29,6 +32,7 @@ import com.huaheng.pc.shipment.shipmentContainerHeader.service.ShipmentContainer |
29 | 32 | import com.huaheng.pc.shipment.shipmentDetail.domain.ShipmentDetail; |
30 | 33 | import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService; |
31 | 34 | import com.huaheng.pc.shipment.shipmentHeader.domain.ShipmentHeader; |
35 | +import com.huaheng.pc.shipment.shipmentHeader.mapper.ShipmentHeaderMapper; | |
32 | 36 | import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService; |
33 | 37 | import com.huaheng.pc.task.taskHeader.domain.ShipmentTaskCreateModel; |
34 | 38 | import com.huaheng.pc.task.taskHeader.service.ShipmentTaskService; |
... | ... | @@ -67,6 +71,10 @@ public class MobileShipmentController extends BaseController { |
67 | 71 | private ShipmentTypeService shipmentTypeService; |
68 | 72 | @Resource |
69 | 73 | private InventoryDetailService inventoryDetailService; |
74 | + @Resource | |
75 | + private ShipmentHeaderMapper shipmentHeaderMapper; | |
76 | + @Resource | |
77 | + private MaterialService materialService; | |
70 | 78 | |
71 | 79 | /** |
72 | 80 | * 自动组盘 |
... | ... | @@ -269,4 +277,78 @@ public class MobileShipmentController extends BaseController { |
269 | 277 | List<ShipmentType> shipmentTypes = shipmentTypeService.list(shipmentTypeLambda); |
270 | 278 | return AjaxResult.success(shipmentTypes); |
271 | 279 | } |
280 | + | |
281 | + | |
282 | + @PostMapping("/createShipmentCode") | |
283 | + @ApiOperation("移动端创建出库单号") | |
284 | + @Log(title = "移动端创建出库单号", action = BusinessType.OTHER) | |
285 | + public AjaxResult createShipmentCode(@RequestBody @ApiParam(value = "物料号") Map<String, String> param){ | |
286 | + String shipmentType = "ELO"; | |
287 | + String code = null; | |
288 | + Date now = new Date(); | |
289 | + SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd"); | |
290 | + String maxCode = shipmentHeaderMapper.createCode(shipmentType); | |
291 | + //如果指定类型的最后的code存在,并且日期一致。那么 code = 入库单类型 + 年月日 + (排序号 + 1) | |
292 | + if (maxCode != null && maxCode.substring(maxCode.length() - 11, maxCode.length() - 3).equals(df.format(now))) { | |
293 | + Integer Count = Integer.valueOf(maxCode.substring(maxCode.length() - 3, maxCode.length())); | |
294 | + code = shipmentType + df.format(now) + String.format("%03d", Count + 1); | |
295 | + } else { | |
296 | + code = shipmentType + df.format(now) + "001"; | |
297 | + } | |
298 | + return AjaxResult.success().setData(code); | |
299 | + } | |
300 | + | |
301 | + @PostMapping("/createShipment") | |
302 | + @ApiOperation("移动端创建出库单") | |
303 | + @Log(title = "移动端创建出库单", action = BusinessType.OTHER) | |
304 | + @Transactional(rollbackFor = Exception.class) | |
305 | + public AjaxResult createShipment(@RequestBody @ApiParam(value = "物料号")List<ShipmentBill> shipmentBills){ | |
306 | + String companyCode = shipmentBills.get(0).getCompanyCode(); | |
307 | + String shipmentCode = shipmentBills.get(0).getShipmentCode(); | |
308 | + String shipmentType = "ELO"; | |
309 | + ShipmentHeader shipmentHeader = new ShipmentHeader(); | |
310 | + shipmentHeader.setId(null); | |
311 | + shipmentHeader.setCode(shipmentCode); | |
312 | + shipmentHeader.setShipmentType(shipmentType); | |
313 | + shipmentHeader.setWarehouseCode(ShiroUtils.getWarehouseCode()); | |
314 | + shipmentHeader.setCreatedBy(ShiroUtils.getLoginName()); | |
315 | + shipmentHeader.setLastUpdatedBy(ShiroUtils.getLoginName()); | |
316 | + shipmentHeader.setFirstStatus(200); | |
317 | + shipmentHeader.setLastStatus(200); | |
318 | + shipmentHeader.setCompanyCode(companyCode); | |
319 | + shipmentHeaderService.save(shipmentHeader); | |
320 | + List<Integer> shipmentdetailIds = insertTodayShipmentDetail(shipmentHeader.getId(), shipmentBills, false, companyCode); | |
321 | + shipmentDetailService.updateShipmentHeader(shipmentHeader); | |
322 | + if(shipmentdetailIds != null && shipmentdetailIds.size() > 0) { | |
323 | + return AjaxResult.success("创建出库单成功"); | |
324 | + } | |
325 | + return AjaxResult.error("创建出库单失败"); | |
326 | + } | |
327 | + | |
328 | + public List<Integer> insertTodayShipmentDetail(int headerId, List<ShipmentBill> shipmentBills, boolean isCompletedQty, String companyCode) { | |
329 | + List<Integer> mShipmentDetailIds = new ArrayList<>(); | |
330 | + ShipmentHeader shipmentHeader = shipmentHeaderService.getById(headerId); | |
331 | + | |
332 | + for (ShipmentBill shipmentBill : shipmentBills) { | |
333 | + ShipmentDetail shipmentDetail = new ShipmentDetail(); | |
334 | + shipmentDetail.setId(null); | |
335 | + shipmentDetail.setWarehouseCode(ShiroUtils.getWarehouseCode()); | |
336 | + shipmentDetail.setCompanyCode(companyCode); | |
337 | + shipmentDetail.setShipmentId(headerId); | |
338 | + shipmentDetail.setShipmentCode(shipmentHeader.getCode()); | |
339 | + shipmentDetail.setMaterialCode(shipmentBill.getMaterialCode()); | |
340 | + LambdaQueryWrapper<Material> lambdaQueryWrapper = Wrappers.lambdaQuery(); | |
341 | + lambdaQueryWrapper.eq(Material::getCode, shipmentBill.getMaterialCode()) | |
342 | + .eq(Material::getWarehouseCode, ShiroUtils.getWarehouseCode()); | |
343 | + Material material = materialService.getOne(lambdaQueryWrapper); | |
344 | + shipmentDetail.setMaterialName(material.getName()); | |
345 | + shipmentDetail.setMaterialUnit(material.getUnit()); | |
346 | + shipmentDetail.setInventorySts("good"); | |
347 | + shipmentDetail.setShipQty(shipmentBill.getQty()); | |
348 | + shipmentDetailService.save(shipmentDetail); | |
349 | + mShipmentDetailIds.add(shipmentDetail.getId()); | |
350 | + } | |
351 | + return mShipmentDetailIds; | |
352 | + } | |
353 | + | |
272 | 354 | } |
... | ... |
src/main/java/com/huaheng/mobile/shipment/ShipmentBill.java
... | ... | @@ -21,6 +21,15 @@ public class ShipmentBill { |
21 | 21 | private String location; |
22 | 22 | /**接收点-工位*/ |
23 | 23 | private int point; |
24 | + private String shipmentCode; | |
25 | + | |
26 | + public String getShipmentCode() { | |
27 | + return shipmentCode; | |
28 | + } | |
29 | + | |
30 | + public void setShipmentCode(String shipmentCode) { | |
31 | + this.shipmentCode = shipmentCode; | |
32 | + } | |
24 | 33 | |
25 | 34 | public String getMaterialCode() { |
26 | 35 | return materialCode; |
... | ... |
src/main/java/com/huaheng/pc/receipt/receiptDetail/service/ReceiptDetailServiceImpl.java
... | ... | @@ -483,6 +483,7 @@ public class ReceiptDetailServiceImpl extends ServiceImpl<ReceiptDetailMapper, R |
483 | 483 | receiptDetail.setReceiptId(receiptHeader.getId()); |
484 | 484 | receiptDetail.setReceiptCode(receiptHeader.getCode()); |
485 | 485 | receiptDetail.setMaterialCode(receiptBill.getMaterialCode()); |
486 | + receiptDetail.setMaterialName(receiptBill.getMaterialName()); | |
486 | 487 | receiptDetail.setInventorySts("good"); |
487 | 488 | receiptDetail.setTotalQty(receiptBill.getQty()); |
488 | 489 | if(isCompletedQty) { |
... | ... |