| | |
| | | * 备用1(PO) |
| | | */ |
| | | @ApiModelProperty(value= "备用1")//PO |
| | | @ExcelProperty("客户PO") |
| | | private String standby1 = "1"; |
| | | |
| | | /** |
| | | * 备用2(UPC) |
| | | */ |
| | | @ApiModelProperty(value= "备用2")//UPC |
| | | @ExcelProperty("条码UPC") |
| | | private String standby2 = "1"; |
| | | |
| | | /** |
| | | * 备用3(SKU) |
| | | */ |
| | | @ApiModelProperty(value= "备用3")//SKU |
| | | @ExcelProperty("客户SKU") |
| | | private String standby3 = "1"; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @ApiModelProperty(value= "备用1") |
| | | @TableField("box_type1") |
| | | @ExcelProperty("货主") |
| | | private String boxType1 = "1"; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @ApiModelProperty(value= "备用3") |
| | | @TableField("box_type3") |
| | | @ExcelProperty("采购单号") |
| | | private String boxType3 = "1"; |
| | | |
| | | /** |
| | |
| | | if (ts == null) { |
| | | throw new CoolException("timestamp 生成失败"); |
| | | } |
| | | |
| | | String barcode = String.valueOf(ts); |
| | | if (barcode.length() > 16) { |
| | | barcode = barcode.substring(0, 16); |
| | | } |
| | | basAgvMast.setBarcode(barcode); |
| | | |
| | | String locNo = null; |
| | | String staNo = null; |
| | | |
| | | basAgvMast.setBarcode(Long.toString(ts)); |
| | | |
| | | basAgvMast.setTaskNo(commonService.getWorkNo(0)); |
| | | basAgvMast.setSourceStaNo(param.getSourceStaNo()); |
| | | basAgvMast.setStaNo(param.getStaNo()); |
| | |
| | | basAgvMastService.insert(basAgvMast); |
| | | |
| | | bindCtnrAndBinParam bindParam = new bindCtnrAndBinParam(); |
| | | bindParam.setBarcode(Long.toString(ts)); |
| | | bindParam.setBarcode(basAgvMast.getBarcode()); |
| | | bindParam.setIndBind("1"); |
| | | bindParam.setFloorNo(basAgvMast.getFloorNo()); |
| | | bindParam.setLocNo(locNo); |
| | |
| | | @Autowired |
| | | private BasAgvMastService basAgvMastService; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | | private BasAgvLocDetlService basAgvLocDetlService; |
| | | @Autowired |
| | | private BasAgvWrkDetlService basAgvWrkDetlService; |
| | |
| | | private OpenService openService; |
| | | |
| | | |
| | | public ReturnT<String> start(BasAgvMast basAgvMast) { |
| | | public ReturnT<String> start(BasAgvMast basAgvMast) { |
| | | try { |
| | | Date now = new Date(); |
| | | switch (basAgvMast.getIoType()){ |
| | | case 0: |
| | | LocMast sourceLoc0 = locMastService.selectById(basAgvMast.getSourceLocNo()); |
| | | locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", sourceLoc0.getLocNo())); |
| | | if(basAgvMast.getFloorNo() == 4){ |
| | | basAgvMast.setBarcode(sourceLoc0.getBarcode()); |
| | | basAgvMastService.updateById(basAgvMast); |
| | | } |
| | | sourceLoc0.setLocSts("O"); |
| | | sourceLoc0.setBarcode(""); |
| | | sourceLoc0.setModiTime(now); |
| | |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("出库 ===>> 修改源库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getSourceLocNo() + "]"); |
| | | } |
| | | |
| | | basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo())); |
| | | basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo())); |
| | | basAgvMast.setStatus(3); |
| | |
| | | } |
| | | // 修改目标库位状态 ==> .locSts |
| | | locMast1.setLocSts("F"); |
| | | locMast1.setBarcode(sourceLoc1.getBarcode()); |
| | | locMast1.setIoTime(now); |
| | | locMast1.setModiTime(now); |
| | | if (!locMastService.updateById(locMast1)) { |
| | |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [TaskNo=" + basAgvMast.getTaskNo() + "],[locNo=" + basAgvMast.getLocNo() + "]"); |
| | | } |
| | | |
| | | |
| | | try{ |
| | | // 转移库存明细数据: 库存号 由工作档源库位变为目标库位 |
| | | locDetlService.updateLocNo(basAgvMast.getLocNo(), basAgvMast.getSourceLocNo()); |
| | | // if (!) { |
| | | // exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | // return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | // } |
| | | } catch (Exception e) { |
| | | |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } |
| | | |
| | | |
| | | if (null != sourceLoc1) { |
| | | sourceLoc1.setBarcode(""); |
| | | sourceLoc1.setLocSts("O"); |
| | |
| | | basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getSourceLocNo())); |
| | | basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo())); |
| | | basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo())); |
| | | basAgvMast.setStatus(3); |
| | | basAgvMast.setStatus(4); |
| | | basAgvMastService.updateById(basAgvMast); |
| | | openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo())); |
| | | // openService.agvBindAndBin(String.valueOf(basAgvMast.getTaskNo())); |
| | | break; |
| | | case 2: |
| | | List<LocDetl> locDetls2 = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", basAgvMast.getLocNo())); |
| | |
| | | basAgvLocDetlService.delete(new EntityWrapper<BasAgvLocDetl>().eq("loc_no", basAgvMast.getLocNo())); |
| | | basAgvWrkDetlService.delete(new EntityWrapper<BasAgvWrkDetl>().eq("wrk_no", basAgvMast.getTaskNo())); |
| | | basAgvMast.setStatus(3); |
| | | if(basAgvMast.getIoType() == 2 && basAgvMast.getFloorNo() == 2){ |
| | | if(basAgvMast.getFloorNo() == 2 || basAgvMast.getFloorNo() == 3){ |
| | | basAgvMast.setStatus(4); |
| | | } |
| | | basAgvMastService.updateById(basAgvMast); |
| | |
| | | @Value("${erp.switch.ReviewOrderSwitch}") |
| | | private boolean ReviewOrderSwitch; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | // @Scheduled(cron = "0/20 * * * * ?") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if(!ReviewOrderSwitch){ |
| | |
| | | @Value("${erp.switch.ReviewOrderSwitch}") |
| | | private boolean ReviewOrderSwitch; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | @Scheduled(cron = "0/20 * * * * ?") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if(!ReviewOrderSwitch){ |
| | |
| | | @Value("${erp.switch.ReviewOrderSwitch}") |
| | | private boolean ReviewOrderSwitch; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | // @Scheduled(cron = "0/20 * * * * ?") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if(!ReviewOrderSwitch){ |
| | |
| | | if (orderDetl.getQty() == 0) { |
| | | continue; |
| | | } |
| | | JSONArray idArr = new JSONArray(); |
| | | idArr.add(0L); // ✅ 注意必须是 Long 类型的 0L |
| | | // JSONArray idArr = new JSONArray(); |
| | | // idArr.add(0L); // ✅ 注意必须是 Long 类型的 0L |
| | | // Double reportNum = orderDetl.getQty() - orderDetl.getWorkQty();//上报数量减去已上报数量 |
| | | // 创建 billentry_lk 对象 |
| | | JSONObject billentryLk = new JSONObject() |
| | | .fluentPut("id", idArr) |
| | | .fluentPut("id", 0L) |
| | | .fluentPut("seq", orderDetl.getLineNumber()) |
| | | .fluentPut("billentry_lk_stableid", 677270092232273922L) |
| | | .fluentPut("billentry_lk_sbillid", Long.parseLong(order.getItemName())) // 主单ID |
| | |
| | | billentryLkArray.add(billentryLk); |
| | | // 创建 billentry 对象,填充缺失的字段 |
| | | JSONObject billentry = new JSONObject() |
| | | .fluentPut("id", idArr) |
| | | .fluentPut("id", 0L) |
| | | .fluentPut("warehouse_number", orderDetl.getManu()) // 仓库编号 |
| | | .fluentPut("invstatus_number", "110") // 库存状态 |
| | | .fluentPut("invtype_number", "110") // 库存类型 |
| | |
| | | .fluentPut("qty", orderDetl.getQty()) // 数量 |
| | | .fluentPut("material_number", orderDetl.getMatnr()) // 物料编号 |
| | | .fluentPut("billentry_lk", billentryLkArray); |
| | | |
| | | billentryArray.add(billentry); |
| | | // orderDetl.setWorkQty(orderDetl.getQty()); |
| | | // orderDetlService.updateById(orderDetl);//将上报数覆盖到历史上 |
| | | } |
| | | Date now = new Date(); |
| | | return new JSONObject() |
| | |
| | | if (billNo != null && billNo.equals(order.getOrderNo())) { |
| | | // 如果一致,设置订单的 number |
| | | order.setNumber(billId); |
| | | orderService.updateById(order); |
| | | log.info("订单号 {} 与返回的单据号匹配,设置订单 ID 为 {}", order.getOrderNo(), billId); |
| | | } |
| | | } |
| | |
| | | ROW_NUMBER() over (order by sum(a.anfme) desc) as row |
| | | , a.matnr |
| | | , sum(a.anfme) as anfme |
| | | , a.order_no as orderNo |
| | | , a.standby1 |
| | | , a.standby2 |
| | | , a.standby3 |
| | | , a.box_type1 as boxType1 |
| | | , a.box_type3 as boxType3 |
| | | from asr_loc_detl a |
| | | where 1=1 |
| | | group by a.matnr |
| | | group by a.matnr,a.order_no,a.box_type3,a.standby1,a.standby2,a.standby3,a.box_type1 |
| | | </select> |
| | | |
| | | <select id="selectPakoutByRule" resultMap="BaseResultMap"> |
| | |
| | | update man_loc_detl set loc_no = #{locNo} |
| | | where node_id = #{nodeId} |
| | | </update> |
| | | <update id="updateLocNo0"> |
| | | update man_loc_detl set loc_no = #{newLocNo} |
| | | where loc_no = #{oldLocNo} |
| | | </update> |
| | | |
| | | <delete id="deleteLocNo0"> |
| | | delete from man_loc_detl |
| | |
| | | ,{field: 'anfme', align: 'center',title: '数量', hide: false} |
| | | ,{field: 'zpallet', align: 'center',title: '托盘条码', hide: false} |
| | | |
| | | // ,{field: 'specs', align: 'center',title: '规格', hide: true} |
| | | ,{field: 'boxType3', align: 'center',title: '采购单号', hide: true} |
| | | // ,{field: 'model', align: 'center',title: '代码', hide: true} |
| | | // ,{field: 'color', align: 'center',title: '颜色', hide: true} |
| | | // ,{field: 'brand', align: 'center',title: '品牌', hide: true} |