Commit f3842bb1ffbbd106269d3138455f00edf3cd328a

Authored by 游杰
1 parent 6393111b

PDA新增入库单 出库单

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
... ... @@ -31,4 +31,5 @@ public class ReceiptBill {
31 31 /** 重量 */
32 32 String weight;
33 33 String materialName;
  34 + String receiptCode;
34 35 }
... ...
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&lt;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) {
... ...
src/main/resources/mybatis/receipt/ReceiptHeaderMapper.xml
... ... @@ -68,5 +68,4 @@
68 68 and companyCode = #{companyCode, jdbcType= VARCHAR} order by id desc limit 10
69 69 </select>
70 70  
71   -
72 71 </mapper>
73 72 \ No newline at end of file
... ...