package com.ruoyi.pda.controller; import com.ruoyi.api.domain.RequestEnter; import com.ruoyi.api.domain.WcsPort; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.in.stockindetail.domain.InStockinDetail; import com.ruoyi.in.stockindetail.service.IInStockinDetailService; import com.ruoyi.job.mydojobdetail.domain.MydoJobDetail; import com.ruoyi.out.outStockout.domain.OutStockout; import com.ruoyi.out.outStockout.service.impl.OutStockoutServiceImpl; import com.ruoyi.out.outStockoutDetail.domain.OutStockoutDetail; import com.ruoyi.out.outStockoutDetail.service.impl.OutStockoutDetailServiceImpl; import com.ruoyi.pda.domain.TrayCodeMakeSure; import com.ruoyi.pda.domain.TrayCodeMsg; import com.ruoyi.pda.service.PdaService; import com.ruoyi.stock.stock.domain.BasStock; import lombok.extern.slf4j.Slf4j; import org.apache.pdfbox.contentstream.operator.graphics.BeginInlineImage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Async; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import java.util.HashMap; import java.util.List; @Controller @RequestMapping("/pda") @Slf4j public class PdaController extends BaseController { @Autowired private PdaService pdaService; @Autowired private IInStockinDetailService iInStockinDetailService; @Autowired private OutStockoutServiceImpl outStockoutService; @Autowired private OutStockoutDetailServiceImpl outStockoutDetailService; /** * 查询是否有半满托盘 */ @RequestMapping("/selectHasHalfTray") @ResponseBody public AjaxResult selectHasHalfTray(String inStockinDetailId) { List basStocks = pdaService.selectHasHalfTray(inStockinDetailId); return AjaxResult.success(basStocks); } /** * 通过单据码查询物料详情 TODO 修改单据码为barCode 前端需同步修改 */ @RequestMapping("/selectDetailById") @ResponseBody public AjaxResult selectDetailById(String barCode) { List stockinDetails = iInStockinDetailService.selectStockInByDetailByBarCode(barCode); stockinDetails.stream().forEach(inStockinDetail -> { Integer quantity = StringUtils.hasText(inStockinDetail.getQuantity()) ? Integer.valueOf(inStockinDetail.getQuantity()) : 0; Integer scanNum = StringUtils.hasText(inStockinDetail.getScanNum()) ? Integer.valueOf(inStockinDetail.getScanNum()) : 0; inStockinDetail.setQuantity(String.valueOf(quantity - scanNum)); }); return AjaxResult.success(stockinDetails); } /** * 半盘出库 */ @RequestMapping("/halfTrayOut") @ResponseBody public AjaxResult halfTrayOut(@RequestBody TrayCodeMsg trayCodeMsg) { return pdaService.halfTrayOut(trayCodeMsg); } /** * 通过托盘码查询作业或trayMsg */ @RequestMapping("/selectMsgByTray") @ResponseBody public Object selectMsgByTray(@RequestBody TrayCodeMsg trayCodeMsg) { return pdaService.selectMsgByTray(trayCodeMsg); } /** * 绑盘 */ @RequestMapping("/bindTray") @ResponseBody public AjaxResult bindTray(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { return pdaService.bindTray(trayCodeMakeSure); } /** * 空托盘入库 */ @RequestMapping("/tpIn") @ResponseBody public AjaxResult tpIn(@RequestBody TrayCodeMsg trayCodeMsg) { return pdaService.tpIn(trayCodeMsg); } /** * 空托盘出库 */ @RequestMapping("/tpOut") @ResponseBody public AjaxResult tpOut(@RequestBody TrayCodeMsg trayCodeMsg) { return pdaService.tpOut(trayCodeMsg); } /** * 出库确认查询子作业信息 * * @param trayCodeMsg * @return */ @RequestMapping("/selectJobDetailByTray") @ResponseBody public AjaxResult selectJobDetailByTray(@RequestBody TrayCodeMsg trayCodeMsg) { return pdaService.selectJobDetailByTray(trayCodeMsg); } /** * 出库确认 * * @param trayCodeMakeSure 托盘信息 * @return */ @PreAuthorize("@ss.hasPermi('pda:out:outMakeSure')") @PostMapping("/outMakeSure") @Log(title = "手持机出库确认", businessType = BusinessType.INSERT) @ResponseBody public AjaxResult outMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { return pdaService.outMakeSure(trayCodeMakeSure); } /** * 入库扫码生成作业 */ @RequestMapping("/addInJob") @ResponseBody public AjaxResult addInJob(@RequestBody RequestEnter requestEnter) { return pdaService.addInJob(requestEnter); } @RequestMapping("/selectDetailByPDTray") @ResponseBody public AjaxResult selectDetailByPDTray(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { return pdaService.selectDetailByPDTray(trayCodeMakeSure); } /** * 盘点出库确认 * * @param trayCodeMakeSure 托盘信息 * @return */ @PreAuthorize("@ss.hasPermi('pda:check:checkMakeSure')") @PostMapping("/checkMakeSure") @Log(title = "手持机盘点出库确认", businessType = BusinessType.INSERT) @ResponseBody public AjaxResult checkMakeSure(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { return pdaService.checkMakeSure(trayCodeMakeSure); } @RequestMapping("/selectWcsPort") @ResponseBody public AjaxResult selectWcsPort() { return pdaService.selectWcsPort(); } @RequestMapping("/updateWcsPort") @ResponseBody public AjaxResult updateWcsPort(@RequestBody WcsPort wcsPort) { return pdaService.updateWcsPort(wcsPort); } @RequestMapping("/hcoutMakesure") @ResponseBody @Log(title = "手持机缓存出库确认", businessType = BusinessType.OTHER) public AjaxResult hcoutMakesure(String trayCode) { return pdaService.hcoutMakesure(trayCode); } /** * 平库入库 */ @RequestMapping("/inStockPk") @ResponseBody public AjaxResult inStockPk(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { return pdaService.completeInPk(trayCodeMakeSure); } /** * 库存查询(平库扫码查询托盘入库信息) */ @RequestMapping("/searchStock") @ResponseBody public AjaxResult searchStock(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { return AjaxResult.success(pdaService.selectBasStockHc(trayCodeMakeSure.getTrayCode())); } /** * 立库出库信息校验 * * @param trayCodeMakeSure * @return */ @RequestMapping("/verifyMaterial") @ResponseBody public AjaxResult verifyMaterial(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { String trayCode = trayCodeMakeSure.getTrayCode(); List mydoJobDetailList = trayCodeMakeSure.getMydoJobDetailList(); for (MydoJobDetail m : mydoJobDetailList) { Integer count = pdaService.selectByTrayCodeAndProduct(trayCode, m.getProductId()); if (count == 0) { return AjaxResult.error(m.getProductId() + ",物料不是出库物料"); } } return AjaxResult.success(); } /** * 平库出库确认 * * @param trayCodeMakeSure * @return */ @RequestMapping("/completeOutPk") @ResponseBody @Async @Transactional(rollbackFor = Exception.class) public AjaxResult completeOutPk(@RequestBody TrayCodeMakeSure trayCodeMakeSure) { try { String trayCode = trayCodeMakeSure.getTrayCode(); List mydoJobDetailList = trayCodeMakeSure.getMydoJobDetailList(); for (MydoJobDetail m : mydoJobDetailList) { HashMap map = new HashMap<>(); map.put("v_tray_code", trayCode); map.put("v_out_stockout_detail_id", m.getStockinDetailId()); map.put("v_quantity", m.getOutQuantity()); pdaService.completeOutPk(map); if (!map.get("v_result").equals("10")) { return AjaxResult.error(map.get("v_result_msg").toString()); } } return AjaxResult.success(); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } } /** * 查询平库出库主单 建议参数(erpStockOutId U8单据号作为查询条件传到后台) * * @param outStockout * @return */ @RequestMapping("/OutFillPk") @ResponseBody public List OutFillPk(@RequestBody OutStockout outStockout) { return outStockoutService.selectOutStockoutList(outStockout); } /** * 查出平库出库子单 参数: stockoutId 作为参数传递到后台 * * @param outStockout * @return */ @RequestMapping("/OutFillPkDetail") @ResponseBody public List OutFillPkDetail(@RequestBody OutStockout outStockout) { List outStockouts = outStockoutService.selectOutStockoutList(outStockout); return outStockoutDetailService.selectOutStockoutDetailByStockoutGuid(outStockouts.get(0).getStockoutId()); } /** * 查询平库出库子单对应信息 在平库中是否存在 * 参数:trayCode 托盘码 * 参数:stockinDetailId 子单据号 * * @param trayCodeMsg * @return */ @RequestMapping("/queryBasStockHc") @ResponseBody public AjaxResult queryBasStockHc(@RequestBody TrayCodeMsg trayCodeMsg) { String trayCode = trayCodeMsg.getTrayCode(); String stockinDetailId = trayCodeMsg.getStockinDetailId(); OutStockoutDetail outStockoutDetail = outStockoutDetailService.selectOutStockoutDetailByStockoutDetailId(stockinDetailId); String productId = outStockoutDetail.getProductId(); Integer integer = pdaService.selectBasStockHcCount(trayCode, productId); if (integer > 0) { return AjaxResult.success(); } else { return AjaxResult.error("无该物料"); } } }