package com.huaheng.pc.receipt.receiving.controller; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.huaheng.common.exception.service.ServiceException; import com.huaheng.common.utils.StringUtils; import com.huaheng.common.utils.security.ShiroUtils; import com.huaheng.framework.aspectj.lang.annotation.Log; import com.huaheng.framework.aspectj.lang.constant.BusinessType; import com.huaheng.framework.web.controller.BaseController; import com.huaheng.framework.web.domain.AjaxResult; import com.huaheng.pc.config.container.domain.Container; import com.huaheng.pc.config.container.service.ContainerService; import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail; import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService; import com.huaheng.pc.receipt.receiptContainerDetail.service.ReceiptContainerDetailService; import com.huaheng.pc.receipt.receiptContainerHeader.service.ReceiptContainerHeaderService; import com.huaheng.pc.receipt.receiptDetail.domain.ReceiptDetail; import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService; import com.huaheng.pc.receipt.receiptHeader.domain.ReceiptHeader; import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService; import com.huaheng.pc.receipt.receiving.service.ReceivingService; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.List; import java.util.Map; /** * @author mahua * @ClassName ReceivingController * @projectName huaheng * @description: 入库组盘 * @date 2019/8/31 15:51 */ @Controller @RequestMapping("/receipt/receiving") public class ReceivingController extends BaseController { private String prefix = "receipt/receiving"; @Resource private ReceivingService receivingService; @Resource private ReceiptContainerDetailService receiptContainerDetailService; @Resource private ReceiptContainerHeaderService receiptContainerHeaderService; @Resource private ReceiptDetailService receiptDetailService; @Resource private ReceiptHeaderService receiptHeaderService; @Resource private ContainerService containerService; @Resource private InventoryDetailService inventoryDetailService; @RequiresPermissions("receipt:receiving:view") @GetMapping() public String receiving() { return prefix + "/receiving"; } /** * 获取订单明细 */ @ResponseBody @PostMapping("/scanBill") @RequiresPermissions("receipt:receiving:receiving") @Log(title = "入库-获取订单明细", operating ="PC端扫描收货单号", action = BusinessType.OTHER) public AjaxResult scanBill(String code) { AjaxResult result = receivingService.scanReceiptCode(code); return result; } /** * 获取收货信息 */ @ResponseBody @PostMapping("/getReceiptInfoByBill") @RequiresPermissions("receipt:receiving:receiving") @Log(title = "入库-获取收货信息", operating ="获取收货信息", action = BusinessType.OTHER) public AjaxResult getReceiptInfoByBill(String code) { AjaxResult result = receiptContainerDetailService.getReceiptInfoByBill(code); return result; } @GetMapping("/add") public String add(Long detailId, String containerCode, ModelMap modelMap) { modelMap.put("containerCode", containerCode); modelMap.put("receiptDetails", receiptDetailService.getById(detailId)); return prefix + "/add"; } /** * 保存收货 */ @ApiOperation(value="保存收货 ", notes="保存收货 ", httpMethod = "POST") @ResponseBody @PostMapping("/save") @RequiresPermissions("receipt:receiving:receiving") @Log(title = "入库-保存收货", operating ="PC端保存收货", action = BusinessType.OTHER) public AjaxResult save( @ApiParam(name="receiptCode",value="入库单编码") String receiptCode, @ApiParam(name="containerCode",value="容器编码")String containerCode, @ApiParam(name="receiptDetailId",value="入库单详情id")Integer receiptDetailId, @ApiParam(name="locationCode",value="库位编码", required = false)String locationCode, @ApiParam(name="qty",value="收货数量") BigDecimal qty, @ApiParam(name="localtionRule",value="定位规则", required = false)String locatingRule){ AjaxResult result = receiptContainerHeaderService.saveContainer(receiptCode, containerCode, receiptDetailId, locationCode, qty, locatingRule); return result; } /** * 获取库存信息 */ @ResponseBody @PostMapping("/getInventoryInfo") @RequiresPermissions("receipt:receiving:add") @Log(title = "入库-入库单", operating ="获取库存信息", action = BusinessType.OTHER) public AjaxResult getInventoryInfo(String code,Integer id) { //找到主单的账套和仓库 LambdaQueryWrapper<ReceiptHeader> lambdaQueryWrapper= Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(ReceiptHeader::getCode,code) .eq(ReceiptHeader::getWarehouseCode, ShiroUtils.getWarehouseCode()); ReceiptHeader receiptHeader=receiptHeaderService.getOne(lambdaQueryWrapper); if(receiptHeader==null){ throw new ServiceException("找不到主单"); } //找到子单物料 LambdaQueryWrapper<ReceiptDetail> lambdaQuery=Wrappers.lambdaQuery(); lambdaQuery.eq(ReceiptDetail::getReceiptCode,code) .eq(ReceiptDetail::getWarehouseCode, ShiroUtils.getWarehouseCode()) .eq(ReceiptDetail::getId,id); ReceiptDetail receiptDetail=receiptDetailService.getOne(lambdaQuery); if(receiptDetail==null){ throw new ServiceException("找不到子单"); } //本物料库存 LambdaQueryWrapper<InventoryDetail> inventoryDetailLambda = Wrappers.lambdaQuery(); inventoryDetailLambda.eq(InventoryDetail::getWarehouseCode,ShiroUtils.getWarehouseCode()) .eq(InventoryDetail::getCompanyCode,receiptHeader.getCompanyCode()) .eq(InventoryDetail::getMaterialCode,receiptDetail.getMaterialCode()) .eq((StringUtils.isNotEmpty(receiptDetail.getProjectNo())),InventoryDetail::getProjectNo, receiptDetail.getProjectNo()); List<InventoryDetail> inventoryList = inventoryDetailService.list(inventoryDetailLambda); //空容器 LambdaQueryWrapper<Container> container=Wrappers.lambdaQuery(); container.eq(Container::getWarehouseCode,ShiroUtils.getWarehouseCode()) .eq(Container::getCompanyCode,receiptHeader.getCompanyCode()) .eq(Container::getStatus,"empty"); List<Container> containerList=containerService.list(container); Map map=new ModelMap(); map.put("inventoryList",inventoryList); map.put("containerList",containerList); return AjaxResult.success(map); } }