1.完善找库位
2.新增erp订单删除后,wms订单跟着删除功能
3.新增订单完成后,上报erp,erp报错后显现在出货单中
4.新增一键查询到异常完成订单
5.对销售单据和其他单据进行区分出库
6.对中间表订单状态进行完善
7.新增锁单功能
8.新增任务查询维护加上订单号
| | |
| | | param.remove("modi_time"); |
| | | } |
| | | } |
| | | if(!Cools.isEmpty(param.get("select"))){ |
| | | param.put("brand", param.get("select")); |
| | | } |
| | | return R.ok(locDetlService.getStockOut(toPage(curr, limit, param, LocDetl.class))); |
| | | } |
| | | |
| | |
| | | return R.ok(); |
| | | } |
| | | @RequestMapping(value = "/locDetl/updateBatch/auth") |
| | | @ManagerAuth(memo = "合同号(批号)修改") |
| | | @ManagerAuth(memo = "批号(批号)修改") |
| | | public R updateBatch(LocDetl locDetl){ |
| | | if (Cools.isEmpty(locDetl) || null==locDetl.getMatnr()){ |
| | | return R.error("参数异常"); |
| | | }else if (locDetl.getBatch().equals(locDetl.getSku())){ |
| | | return R.error("前后合同号一致,无需修改!!!"); |
| | | return R.error("前后批号一致,无需修改!!!"); |
| | | } |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo())); |
| | | if (Cools.isEmpty(locMast) || !locMast.getLocSts().equals("F")){ |
| | |
| | | locDetlEnd = locDetlService.selectOne(new EntityWrapper<LocDetl>() |
| | | .eq("loc_no",locDetl.getLocNo()).eq("matnr",locDetl.getMatnr()).eq("batch",locDetl.getSku())); |
| | | } |
| | | AdjDetl adjDetlSource = new AdjDetl(locDetl.getLocNo(),locDetl.getMatnr(),locDetl.getBatch(),null,locDetlSource.getAnfme(),null,null,locDetlSource.getAnfme()-locDetl.getAnfme(),null,"修改合同号:"+locDetl.getBatch()+"→"+locDetl.getSku(),getUserId(),new Date(),getUserId(),new Date()); |
| | | AdjDetl adjDetlSource = new AdjDetl(locDetl.getLocNo(),locDetl.getMatnr(),locDetl.getBatch(),null,locDetlSource.getAnfme(),null,null,locDetlSource.getAnfme()-locDetl.getAnfme(),null,"修改批号:"+locDetl.getBatch()+"→"+locDetl.getSku(),getUserId(),new Date(),getUserId(),new Date()); |
| | | AdjDetl adjDetlEnd=null; |
| | | if (Cools.isEmpty(locDetlEnd)){ |
| | | adjDetlEnd = new AdjDetl(locDetl.getLocNo(),locDetl.getMatnr(),locDetl.getSku(),null,0.0,null,null,locDetl.getAnfme(),null,"修改合同号:"+locDetl.getBatch()+"→"+locDetl.getSku(),getUserId(),new Date(),getUserId(),new Date()); |
| | | adjDetlEnd = new AdjDetl(locDetl.getLocNo(),locDetl.getMatnr(),locDetl.getSku(),null,0.0,null,null,locDetl.getAnfme(),null,"修改批号:"+locDetl.getBatch()+"→"+locDetl.getSku(),getUserId(),new Date(),getUserId(),new Date()); |
| | | }else { |
| | | adjDetlEnd = new AdjDetl(locDetl.getLocNo(),locDetl.getMatnr(),locDetl.getSku(),null,locDetlEnd.getAnfme(),null,null,locDetlEnd.getAnfme()+locDetl.getAnfme(),null,"修改合同号:"+locDetl.getBatch()+"→"+locDetl.getSku(),getUserId(),new Date(),getUserId(),new Date()); |
| | | adjDetlEnd = new AdjDetl(locDetl.getLocNo(),locDetl.getMatnr(),locDetl.getSku(),null,locDetlEnd.getAnfme(),null,null,locDetlEnd.getAnfme()+locDetl.getAnfme(),null,"修改批号:"+locDetl.getBatch()+"→"+locDetl.getSku(),getUserId(),new Date(),getUserId(),new Date()); |
| | | } |
| | | if (locDetlSource.getAnfme()-locDetl.getAnfme()==0){ |
| | | if (Cools.isEmpty(locDetlEnd)){ |
| | |
| | | }catch (Exception e){ |
| | | return R.error("异常!!!请规范操作!!!"); |
| | | } |
| | | return new R(201,"合同号修改成功,请刷新页面!!!"); |
| | | return new R(201,"批号修改成功,请刷新页面!!!"); |
| | | } |
| | | |
| | | @RequestMapping(value = "/locDetl/delete/auth") |
| | |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setAnfme(0.0D); |
| | | orderDetl.setQty(0.0D); |
| | | orderDetl.setWorkQty(0.0D); |
| | | return R.ok().add(orderDetl); |
| | | } |
| | | |
| | |
| | | if (docType.getPakin() == null || docType.getPakin() != 1) { |
| | | return R.ok(); |
| | | } |
| | | if (order.getSettle() > 2) { |
| | | return R.ok(); |
| | | } |
| | | |
| | | List<OrderDetl> orderDetls = orderService.selectWorkingDetls(order.getId()); |
| | | if (Cools.isEmpty(orderDetls)) { |
| | | return R.ok(); |
| | | } |
| | | return R.ok().add(orderDetls); |
| | | List<OrderDetl> orderDetls1= new ArrayList<>(); |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | if(orderDetl.getAnfme()-orderDetl.getWorkQty()>0){ |
| | | orderDetls1.add(orderDetl); |
| | | } |
| | | |
| | | } |
| | | return R.ok().add(orderDetls1); |
| | | } |
| | | |
| | | @RequestMapping("/comb/auth") |
| | |
| | | } |
| | | //空托盘缓冲区 小:E8 大:E9 |
| | | String rStaNo = "E8"; |
| | | |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoE").eq("status", "1")); |
| | | String type = "ZONE"; //区域 |
| | | if (barcode.substring(0, 1).equals("9")) { |
| | | rStaNo = "E9"; |
| | | } |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoE").eq("status", "1")); |
| | | if (config != null) { |
| | | type = "STACK"; //巷道 |
| | | if (Cools.isEmpty(config.getValue())) { |
| | | rStaNo = rStaNo + "01"; |
| | | config.setValue("2"); |
| | | } else if (config.getValue().equals("1")) { |
| | | rStaNo = rStaNo + "01"; |
| | | config.setValue("2"); |
| | | } else if (config.getValue().equals("2")) { |
| | | rStaNo = rStaNo + "02"; |
| | | config.setValue("3"); |
| | | } else if (config.getValue().equals("3")) { |
| | | rStaNo = rStaNo + "03"; |
| | | config.setValue("1"); |
| | | } |
| | | configService.updateById(config); |
| | | } else { |
| | | config = configService.selectOne(new EntityWrapper<Config>().eq("code", "autoE").eq("status", "1")); |
| | | |
| | | if (config != null) { |
| | | type = "STACK"; //巷道 |
| | | if (Cools.isEmpty(config.getValue())) { |
| | |
| | | if (wrkMast == null) { |
| | | r = FillEmptyPalletsStack(sourceStaNo, staNo); |
| | | } else { |
| | | if (wrkMast.getWrkSts() > 30) { |
| | | if (wrkMast.getWrkSts() > 30&& 34< wrkMast.getWrkSts()) { |
| | | return R.error("该托盘="+wrkMast.getBarcode()+",没有下架,请下架后再回库!!!"); |
| | | } |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().eq("sta_no", wrkMast.getStaNo()).in("io_type", 101, 103, 105, 107).lt("wrk_sts", 33)); |
| | |
| | | } |
| | | mat.setAnfme(barcode1.getQty()); |
| | | mat.setBc(barcode); |
| | | mat.setBatch(barcode1.getBatchno()); |
| | | mat.setBatch(barcode); |
| | | matService.updateById(mat); |
| | | |
| | | return R.ok(mat); |
| | |
| | | |
| | | //拣料回库,agv搬运货物到输送线入库口--》修改inv_wh状态等待输送线入库--》wcs下发入库指令 |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>() |
| | | .in("wrk_sts", 16L)//16.下架完成等待回库 |
| | | .in("wrk_sts", 34L)//34.下架完成等待回库 |
| | | .eq("inv_wh","0") |
| | | .eq("pdc_type", robotTaskMessage.getRobotTaskCode()));//AGV出库搬运任务号 |
| | | if(!Cools.isEmpty(wrkMast)){ |
| | |
| | | } |
| | | return R.ok().add(orders); |
| | | } |
| | | @RequestMapping(value = "/order/nav/list/auth/xs") |
| | | @ManagerAuth |
| | | public R navListxs(@RequestParam(required = false) String orderNo){ |
| | | EntityWrapper<Order> wrapper = new EntityWrapper<>(); |
| | | if (!Cools.isEmpty(orderNo)) { |
| | | wrapper.like("order_no", orderNo); |
| | | } |
| | | wrapper.le("settle", 2).eq("status", 1); |
| | | wrapper.orderBy("create_time", false); |
| | | wrapper.eq("doc_type", 81); |
| | | List<Order> orders = orderService.selectList(wrapper); |
| | | // 保留出库单 |
| | | if (!Cools.isEmpty(orders)) { |
| | | Iterator<Order> iterator = orders.iterator(); |
| | | while (iterator.hasNext()) { |
| | | Order order = iterator.next(); |
| | | if (order.getDocType() != null) { |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (docType != null) { |
| | | if (docType.getPakout() == 0) { |
| | | iterator.remove(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return R.ok().add(orders); |
| | | } |
| | | |
| | | @RequestMapping(value = "/order/nav/list/auth/notxs") |
| | | @ManagerAuth |
| | | public R navListnotxs(@RequestParam(required = false) String orderNo){ |
| | | EntityWrapper<Order> wrapper = new EntityWrapper<>(); |
| | | if (!Cools.isEmpty(orderNo)) { |
| | | wrapper.like("order_no", orderNo); |
| | | } |
| | | wrapper.le("settle", 2).eq("status", 1); |
| | | wrapper.orderBy("create_time", false); |
| | | List<Order> orders = orderService.selectList(wrapper); |
| | | // 保留出库单 |
| | | if (!Cools.isEmpty(orders)) { |
| | | Iterator<Order> iterator = orders.iterator(); |
| | | while (iterator.hasNext()) { |
| | | Order order = iterator.next(); |
| | | if (order.getDocType() != null) { |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (docType != null) { |
| | | if (docType.getPakout() == 0 || order.getDocType() == 81) { |
| | | iterator.remove(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return R.ok().add(orders); |
| | | } |
| | | |
| | | @RequestMapping(value = "/order/head/page/auth") |
| | | @ManagerAuth |
| | |
| | | wrapper.orderBy("settle").orderBy("create_time", false); |
| | | } |
| | | wrapper.eq("status", 1); |
| | | if(param.get("doc_type") != null){ |
| | | wrapper.eq("doc_type", param.get("doc_type")); |
| | | } |
| | | return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | |
| | | |
| | | EntityWrapper<OrderDetl1> wrapper = new EntityWrapper<>(); |
| | | if(!Cools.isEmpty(param.get("abnormal"))&¶m.get("abnormal").equals("1")){ |
| | | wrapper.addFilter("anfme < qty"); |
| | | wrapper.isNotNull("memo"); |
| | | }else{ |
| | | param.remove("abnormal"); |
| | | excludeTrash(param); |
| | |
| | | return R.ok(orderDetlService.getPakoutPage(toPage(curr, limit, param, OrderDetl.class))); |
| | | } |
| | | |
| | | //只有销售单 |
| | | @RequestMapping(value = "/orderDetl/pakout/list/auth/xs") |
| | | @ManagerAuth |
| | | public R pakoutListxs(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam Map<String, Object> param){ |
| | | return R.ok(orderDetlService.getPakoutPagexs(toPage(curr, limit, param, OrderDetl.class))); |
| | | } |
| | | |
| | | //没有销售单 |
| | | @RequestMapping(value = "/orderDetl/pakout/list/auth/notxs") |
| | | @ManagerAuth |
| | | public R pakoutListnotxs(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam Map<String, Object> param){ |
| | | return R.ok(orderDetlService.getPakoutPagenotxs(toPage(curr, limit, param, OrderDetl.class))); |
| | | } |
| | | |
| | | private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ |
| | | for (Map.Entry<String, Object> entry : map.entrySet()){ |
| | | String val = String.valueOf(entry.getValue()); |
| | |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.asrs.entity.LocDetl; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.OutlocDetlParam; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.model.LocDto; |
| | | import com.zy.common.model.TaskDto; |
| | | import com.zy.common.web.BaseController; |
| | | import com.zy.third.entity.ExdOutstockSource; |
| | | import com.zy.third.service.ExdOutstockSourceService; |
| | | import lombok.Synchronized; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | |
| | | private WorkService workService; |
| | | @Autowired |
| | | private BasDevpService basDevpService; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | @Autowired |
| | | private ExdOutstockSourceService exdOutstockSourceService; |
| | | |
| | | |
| | | @PostMapping("/out/pakout/orderDetlIds/auth") |
| | |
| | | for (TaskDto taskDto : taskDtos) { |
| | | workService.stockOut(null, taskDto, getUser(), taskDto.getStaNo()); |
| | | } |
| | | //对出库订单流水号进行更新 |
| | | Order order = orderService.selectByNo(locDtos.get(0).getOrderNo()); |
| | | if(order.getDocType()==81){ |
| | | order.setAccountDay(Cools.isEmpty(order.getAccountDay()) ? 1 : order.getAccountDay()+1); |
| | | order.setUpdateTime(new Date()); |
| | | orderService.updateById(order); |
| | | } |
| | | |
| | | //对出库单进行锁定 |
| | | List<ExdOutstockSource> fBillNo = exdOutstockSourceService.selectList(new EntityWrapper<ExdOutstockSource>().eq("FBillNo", order.getOrderNo())); |
| | | if(fBillNo != null){ |
| | | for(ExdOutstockSource exdOutstockSource : fBillNo){ |
| | | exdOutstockSource.setStatus(10); |
| | | exdOutstockSourceService.updateById(exdOutstockSource); |
| | | } |
| | | |
| | | } |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | @PostMapping("/out/pakout2/preview/auth") |
| | | @ManagerAuth |
| | | public R pakoutPreview2(@RequestBody List<Long> ids) { |
| | | if (Cools.isEmpty(ids)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids); |
| | | List<LocDto> locDtos = new ArrayList<>(); |
| | | |
| | | Set<String> exist = new HashSet<>(); |
| | | |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | |
| | | List<LocDetl> locDetls = locDetlService.queryStockAll(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); |
| | | for (LocDetl locDetl : locDetls) { |
| | | LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), locDetl.getAnfme()); |
| | | List<String> staNos = new ArrayList<>(); |
| | | staNos.add("C1"); |
| | | staNos.add("C2"); |
| | | staNos.add("C3"); |
| | | locDto.setStaNos(staNos); |
| | | locDtos.add(locDto); |
| | | exist.add(locDetl.getLocNo()); |
| | | } |
| | | orderDetl.setUpdateBy(getUserId()); |
| | | } |
| | | return R.ok().add(locDtos); |
| | | } |
| | | |
| | | @Synchronized |
| | |
| | | orderService.updateById(order); |
| | | } |
| | | |
| | | //对出库单进行锁定 |
| | | List<ExdOutstockSource> fBillNo = exdOutstockSourceService.selectList(new EntityWrapper<ExdOutstockSource>().eq("FBillNo", order.getOrderNo())); |
| | | if(fBillNo != null){ |
| | | for(ExdOutstockSource exdOutstockSource : fBillNo){ |
| | | exdOutstockSource.setStatus(10); |
| | | exdOutstockSourceService.updateById(exdOutstockSource); |
| | | } |
| | | |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PostMapping("/out/pakout2/preview/auth") |
| | | @ManagerAuth |
| | | public R pakoutPreview2(@RequestBody List<Long> ids) { |
| | | if (Cools.isEmpty(ids)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | List<OrderDetl> orderDetls = orderDetlService.selectBatchIds(ids); |
| | | List<LocDto> locDtos = new ArrayList<>(); |
| | | |
| | | Set<String> exist = new HashSet<>(); |
| | | |
| | | for (OrderDetl orderDetl : orderDetls) { |
| | | |
| | | List<LocDetl> locDetls = locDetlService.queryStockAll(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); |
| | | for (LocDetl locDetl : locDetls) { |
| | | LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), locDetl.getAnfme()); |
| | | List<String> staNos = new ArrayList<>(); |
| | | staNos.add("C1"); |
| | | staNos.add("C2"); |
| | | staNos.add("C3"); |
| | | locDto.setStaNos(staNos); |
| | | locDtos.add(locDto); |
| | | exist.add(locDetl.getLocNo()); |
| | | } |
| | | orderDetl.setUpdateBy(getUserId()); |
| | | } |
| | | return R.ok().add(locDtos); |
| | | } |
| | | |
| | | @PostMapping("/out/pakout/preview/auth1") |
| | |
| | | issued = issued - locDetl.getAnfme(); |
| | | } |
| | | if (issued > 0) { |
| | | LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued); |
| | | LocDto locDto = new LocDto("库存不足", orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued); |
| | | locDto.setLack(Boolean.TRUE); |
| | | locDtos.add(locDto); |
| | | } |
| | |
| | | return R.ok("任务号:" + startupDto.getWorkNo() + ";目标库位:" + startupDto.getLocNo()); |
| | | } |
| | | |
| | | @RequestMapping("/deal/preHave/start") |
| | | @ManagerAuth(memo = "先入品处理") |
| | | public R dealPreHave(@RequestParam Integer wrkNo) { |
| | | String locNo = workService.dealPreHaveStart(wrkNo, getUserId()); |
| | | return R.ok("任务重新入库,目标库位:" + locNo); |
| | | } |
| | | // @RequestMapping("/deal/preHave/start") |
| | | // @ManagerAuth(memo = "先入品处理") |
| | | // public R dealPreHave(@RequestParam Integer wrkNo) { |
| | | // String locNo = workService.dealPreHaveStart(wrkNo, getUserId()); |
| | | // return R.ok("任务重新入库,目标库位:" + locNo); |
| | | // } |
| | | |
| | | } |
| | |
| | | @ApiModelProperty(value= "颜色") |
| | | private String color; |
| | | |
| | | @ApiModelProperty(value= "品牌") |
| | | @ApiModelProperty(value= "仓库") |
| | | private String brand; |
| | | |
| | | @ApiModelProperty(value= "单位") |
| | |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); |
| | | } |
| | | |
| | | public String getBrand$(){ |
| | | if (Cools.isEmpty(this.brand)){ |
| | | return ""; |
| | | } |
| | | |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); |
| | | } |
| | | |
| | | public void sync(Object source) { |
| | | Synchro.Copy(source, this); |
| | | } |
| | |
| | | private String manuDate; |
| | | |
| | | /** |
| | | * 品项数 |
| | | * 仓库 |
| | | */ |
| | | @ApiModelProperty(value= "品项数") |
| | | @ApiModelProperty(value= "仓库") |
| | | @TableField("item_num") |
| | | private String itemNum; |
| | | |
| | |
| | | public String getDanger$(){ |
| | | DocTypeService service = SpringUtils.getBean(DocTypeService.class); |
| | | OrderService orderServicer=SpringUtils.getBean(OrderService.class); |
| | | if(Cools.isEmpty(this.orderNo)){ |
| | | return null; |
| | | } |
| | | Order order = orderServicer.selectByNo(this.orderNo); |
| | | DocType docType = service.selectById(order.getDocType()); |
| | | if (!Cools.isEmpty(docType)){ |
| | |
| | | @ApiModelProperty(value= "目标站") |
| | | private String sku; |
| | | |
| | | /** |
| | | * 生产入库对一坨物料进行绑定。唯一值 |
| | | */ |
| | | @ApiModelProperty(value= "生产入库对一坨物料进行绑定。唯一值") |
| | | private String origin; |
| | | |
| | | |
| | | |
| | | @ApiModelProperty(value= "发给AGV的任务号") |
| | |
| | | |
| | | @ApiModelProperty(value= "条码") |
| | | private String barcode; |
| | | |
| | | @ApiModelProperty(value= "产地") |
| | | private String origin; |
| | | |
| | | @ApiModelProperty(value= "厂家") |
| | | private String manu; |
| | |
| | | @TableField("loc_sts") |
| | | private String locSts; |
| | | |
| | | @ApiModelProperty(value= "订单号") |
| | | @TableField("pause_mk") |
| | | private String pauseMk; |
| | | |
| | | /** |
| | | * 拣料 |
| | | */ |
| | |
| | | @TableField("appe_time") |
| | | private Date appeTime; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @TableField("pause_mk") |
| | | private String pauseMk; |
| | | |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @TableField("error_time") |
| | |
| | | int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty); |
| | | |
| | | |
| | | int increaseWorkQty2(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty, @Param("color")String color); |
| | | int increaseWorkQty2(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty, @Param("color")Long color); |
| | | |
| | | |
| | | int increaseWorkQtytest(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("anfme")Double anfme); |
| | |
| | | |
| | | List<OrderDetl> getPakoutPage(Map<String, Object> map); |
| | | |
| | | List<OrderDetl> getPakoutPagexs(Map<String, Object> map); |
| | | |
| | | List<OrderDetl> getPakoutPagenotxs(Map<String, Object> map); |
| | | |
| | | Integer getPakoutPageCount(Map<String, Object> map); |
| | | |
| | | int increase(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("qty")Double qty); |
| | |
| | | int increaseWorkQty(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty); |
| | | |
| | | |
| | | int increaseWorkQty2(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty, @Param("color")String color); |
| | | int increaseWorkQty2(@Param("orderId")Long orderId, @Param("matnr")String matnr, @Param("batch")String batch, @Param("workQty")Double workQty, @Param("color")Long color); |
| | | |
| | | |
| | | int increaseWorkQtytest(@Param("orderNo")String orderNo, @Param("matnr")String matnr, @Param("batch")String batch, @Param("anfme")Double anfme); |
| | |
| | | boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty); |
| | | |
| | | |
| | | boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, String color); |
| | | boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, Long color); |
| | | |
| | | |
| | | boolean increaseWorkQtytest(String orderNo, String matnr, String batch, Double anfme); |
| | |
| | | |
| | | Page<OrderDetl> getPakoutPage(Page<OrderDetl> page); |
| | | |
| | | Page<OrderDetl> getPakoutPagexs(Page<OrderDetl> page); |
| | | |
| | | Page<OrderDetl> getPakoutPagenotxs(Page<OrderDetl> page); |
| | | |
| | | OrderDetl selectItem(Long orderId, String matnr, String batch); |
| | | |
| | | OrderDetl selectItem(String orderNo, String matnr, String batch); |
| | |
| | | boolean increaseWorkQty(Long orderId, String matnr, String batch, Double workQty); |
| | | |
| | | |
| | | boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, String color); |
| | | boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, Long color); |
| | | |
| | | |
| | | boolean increaseWorkQtytest(String orderNo, String matnr, String batch, Double anfme); |
| | |
| | | if (locMast == null) { |
| | | return false; |
| | | } |
| | | return this.baseMapper.selectEmptyLocCount(locMast.getLocType1(), locMast.getCrnNo()) > 5; |
| | | return this.baseMapper.selectEmptyLocCount(locMast.getLocType1(), locMast.getCrnNo()) > 3; |
| | | } |
| | | |
| | | @Override |
| | |
| | | import com.zy.common.model.MesCombParam; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.third.entity.ExdInstockSource; |
| | | import com.zy.third.entity.ExdStock; |
| | | import com.zy.third.entity.ExdvYanbu; |
| | | import com.zy.third.mapper.ExdMaterialMapper; |
| | | import com.zy.third.mapper.ExdStockMapper; |
| | | import com.zy.third.service.ExdInstockSourceService; |
| | | import com.zy.third.service.ExdMaterialService; |
| | | import com.zy.third.service.ExdStockService; |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private OrderDetl1Service orderDetl1Service; |
| | | @Autowired |
| | | private BasDevpService basDevpService; |
| | | @Autowired |
| | |
| | | private ManLocDetlService manLocDetlService; |
| | | @Autowired |
| | | private ManLocDetlMapper manLocDetlMapper; |
| | | @Autowired |
| | | private ExdMaterialMapper exdMaterialMapper; |
| | | @Autowired |
| | | private ExdStockMapper exdStockMapper; |
| | | @Autowired |
| | | private ExdStockService exdStockService; |
| | | @Autowired |
| | | private ExdInstockSourceService exdInstockSourceService; |
| | | |
| | | |
| | | @Override |
| | |
| | | //进行批号筛选,批号只能唯一 |
| | | Set<String> batchs = new HashSet<>(); |
| | | List<String> strings = new ArrayList<>(); |
| | | |
| | | |
| | | long time = new Date().getTime(); |
| | | //生产入库对一坨物料进行绑定。唯一值 |
| | | String fbillno = param.getBarcode()+"--"+time; |
| | | for (CombParam.CombMat mat : param.getCombMats()) { |
| | | if (Cools.isEmpty(mat.getBatch())) { |
| | | continue; |
| | |
| | | waitPakin.setModiUser(userId); |
| | | waitPakin.setColor(userId+""); |
| | | waitPakin.setModiTime(now); |
| | | waitPakin.setBrand(param.getCk());//仓库 |
| | | //生产入库对一坨物料进行绑定。唯一值 |
| | | waitPakin.setOrigin(fbillno); |
| | | ExdvYanbu barcode1 = exdMaterialMapper.getBacode(detlDto.getBc()); |
| | | String pid="03.98"; |
| | | if(!Cools.isEmpty(barcode1)&&!Cools.isEmpty(barcode1.getProdinkind())){ |
| | | pid=barcode1.getProdinkind(); |
| | | } |
| | | ExdStock id = exdStockService.selectOne(new EntityWrapper<ExdStock>().eq("Fnumber", pid)); |
| | | waitPakin.setBrand(id.getFname());//仓库 |
| | | waitPakin.setInspect(param.isType() ? 1 : 0); |
| | | if (i == 1) { |
| | | // 0:不需要补空托盘 |
| | |
| | | * 3:AGV任务完成 |
| | | * 4:给输送线下发入库指令 |
| | | */ |
| | | waitPakin.setBeBatch(param.getBeBatch()); |
| | | waitPakin.setBeBatch(Cools.isEmpty(param.getRsta())?0:1); |
| | | waitPakin.setSuppCode(param.getBarcode()); |
| | | } |
| | | i++; |
| | |
| | | throw new CoolException(orderDetl.getMatnr() + "入库数量不合法"); |
| | | } |
| | | // 修改订单作业数量 |
| | | if (!orderDetlService.increaseWorkQty2(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme(), fxId)) { |
| | | if (!orderDetlService.increaseWorkQty2(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme(), userId)) { |
| | | throw new CoolException("修改单据作业数量失败"); |
| | | } |
| | | // 修改子单订单作业数量 |
| | | if (!orderDetl1Service.increaseWorkQty2(order.getId(), elem.getMatnr(), elem.getBatch(), elem.getAnfme(), userId)) { |
| | | throw new CoolException("修改单据作业数量失败"); |
| | | } |
| | | |
| | |
| | | waitPakin.setModiUser(userId); |
| | | waitPakin.setModiTime(now); |
| | | waitPakin.setColor(userId+""); |
| | | waitPakin.setBrand(param.getCk());//仓库 |
| | | |
| | | OrderDetl orderDetl = orderDetlService.selectOne(new EntityWrapper<OrderDetl>() |
| | | .eq("matnr", detlDto.getMatnr()).eq("order_no", order.getOrderNo()) |
| | | .eq("batch", detlDto.getBatch())); |
| | | waitPakin.setBrand(orderDetl.getBrand());//仓库 |
| | | waitPakin.setInspect(param.isType() ? 1 : 0); |
| | | if (i == 1) { |
| | | // 0:不需要补空托盘 |
| | |
| | | } |
| | | } |
| | | orderService.updateSettle(order.getId(), 2L, userId); |
| | | List<ExdInstockSource> fBillNo = exdInstockSourceService.selectList(new EntityWrapper<ExdInstockSource>().eq("FBillNo", order.getOrderNo())); |
| | | if(fBillNo != null){ |
| | | for(ExdInstockSource exdInstockSource : fBillNo){ |
| | | exdInstockSource.setStatus(10); |
| | | exdInstockSourceService.updateById(exdInstockSource); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.controller.BasCrnStatusController; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.OpenOrderPakinParam; |
| | | import com.zy.asrs.entity.param.OpenOrderPakoutParam; |
| | | import com.zy.asrs.mapper.Order1Mapper; |
| | | import com.zy.asrs.mapper.OrderDetl1Mapper; |
| | | import com.zy.asrs.mapper.OrderDetlMapper; |
| | | import com.zy.asrs.mapper.OrderMapper; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.model.DetlDto; |
| | |
| | | public class Order1ServiceImpl extends ServiceImpl<Order1Mapper, Order1> implements Order1Service { |
| | | |
| | | @Autowired |
| | | private OrderDetl1Mapper orderDetlMapper; |
| | | private OrderDetl1Mapper orderDetl1Mapper; |
| | | @Autowired |
| | | private OpenService openService; |
| | | @Autowired |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | @Autowired |
| | | private OrderDetl1Service orderDetlService; |
| | | private OrderDetl1Service orderDetl1Service; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | @Autowired |
| | |
| | | |
| | | @Override |
| | | public List<OrderDetl1> selectWorkingDetls(Long orderId) { |
| | | return orderDetlMapper.selectWorkingDetls(orderId); |
| | | return orderDetl1Mapper.selectWorkingDetls(orderId); |
| | | } |
| | | |
| | | @Override |
| | |
| | | if (Cools.isEmpty(order) || order.getSettle() >= 4L) { |
| | | return; |
| | | } |
| | | List<OrderDetl1> orderDetls = orderDetlMapper.selectList(new EntityWrapper<OrderDetl1>().eq("order_id", order.getId())); |
| | | List<OrderDetl1> orderDetls = orderDetl1Mapper.selectList(new EntityWrapper<OrderDetl1>().eq("order_id", order.getId())); |
| | | boolean complete = true; |
| | | for (OrderDetl1 orderDetl : orderDetls) { |
| | | if (orderDetl.getAnfme() > orderDetl.getQty()) { |
| | |
| | | // 出库订单重新整理明细 |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (null != docType && docType.getPakout() == 1) { |
| | | if (!orderDetlService.delete(new EntityWrapper<OrderDetl1>().eq("order_id", order.getId()))) { |
| | | if (!orderDetl1Service.delete(new EntityWrapper<OrderDetl1>().eq("order_id", order.getId()))) { |
| | | throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败"); |
| | | } |
| | | List<WrkDetl> wrkDetls = wrkDetlService.selectAndLogByOrderNo(orderNo); |
| | |
| | | orderDetl.setCreateBy(order.getCreateBy()); |
| | | orderDetl.setUpdateTime(order.getUpdateTime()); |
| | | orderDetl.setUpdateBy(order.getUpdateBy()); |
| | | if (!orderDetlService.insert(orderDetl)) { |
| | | if (!orderDetl1Service.insert(orderDetl)) { |
| | | throw new CoolException("重整出库订单【orderNo = " + order.getOrderNo() + "】明细失败"); |
| | | } |
| | | } |
| | |
| | | } |
| | | for (DetlDto detlDto : detlDtos) { |
| | | // 修改订单明细数量 |
| | | if (!orderDetlService.increase(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) { |
| | | if (!orderDetl1Service.increase(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) { |
| | | throw new CoolException("修改单据明细数量失败"); |
| | | } |
| | | // 修改订单作业数量 |
| | | if (!orderDetlService.increaseWorkQty(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) { |
| | | if (!orderDetl1Service.increaseWorkQty(order.getId(), detlDto.getMatnr(), detlDto.getBatch(), detlDto.getAnfme())) { |
| | | throw new CoolException("修改单据作业数量失败"); |
| | | } |
| | | } |
| | |
| | | if (!this.deleteById(orderId)) { |
| | | throw new CoolException("删除单据失败"); |
| | | } |
| | | orderDetlService.delete(new EntityWrapper<OrderDetl1>().eq("order_id", orderId)); |
| | | |
| | | orderDetl1Service.delete(new EntityWrapper<OrderDetl1>().eq("order_id", orderId)); |
| | | } |
| | | |
| | | @Override |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, String color) { |
| | | public boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, Long color) { |
| | | return this.baseMapper.increaseWorkQty2(orderId, matnr, batch, workQty, color) > 0; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Page<OrderDetl> getPakoutPagexs(Page<OrderDetl> page) { |
| | | page.setRecords(baseMapper.getPakoutPagexs(page.getCondition())); |
| | | page.setTotal(baseMapper.getPakoutPageCount(page.getCondition())); |
| | | return page; |
| | | } |
| | | |
| | | @Override |
| | | public Page<OrderDetl> getPakoutPagenotxs(Page<OrderDetl> page) { |
| | | page.setRecords(baseMapper.getPakoutPagenotxs(page.getCondition())); |
| | | page.setTotal(baseMapper.getPakoutPageCount(page.getCondition())); |
| | | return page; |
| | | } |
| | | |
| | | @Override |
| | | public OrderDetl selectItem(Long orderId, String matnr, String batch) { |
| | | return this.baseMapper.selectItem(orderId, matnr, batch); |
| | | } |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, String color) { |
| | | public boolean increaseWorkQty2(Long orderId, String matnr, String batch, Double workQty, Long color) { |
| | | return this.baseMapper.increaseWorkQty2(orderId, matnr, batch, workQty, color) > 0; |
| | | } |
| | | |
| | |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.OpenOrderPakinParam; |
| | | import com.zy.asrs.entity.param.OpenOrderPakoutParam; |
| | | import com.zy.asrs.mapper.OrderDetl1Mapper; |
| | | import com.zy.asrs.mapper.OrderDetlMapper; |
| | | import com.zy.asrs.mapper.OrderMapper; |
| | | import com.zy.asrs.service.*; |
| | |
| | | private WrkDetlService wrkDetlService; |
| | | @Autowired |
| | | private Order1ServiceImpl order1Service; |
| | | @Autowired |
| | | private OrderDetl1Mapper orderDetl1Mapper; |
| | | |
| | | @Override |
| | | public Order selectByNo(String orderNo) { |
| | |
| | | Order order1 = this.selectByNo(orderNo1); |
| | | |
| | | //子表更新状态 |
| | | DocType docType = docTypeService.selectById(order1.getDocType()); |
| | | if (!Cools.isEmpty(docType)&&docType.getPakout()==1) { |
| | | Order1 order11 = order1Service.selectByNo(orderNo); |
| | | if (Cools.isEmpty(order11)||order11.getSettle()>4) { |
| | | return; |
| | | } |
| | | |
| | | List<OrderDetl> orderDetls1 = orderDetlMapper.selectList(new EntityWrapper<OrderDetl>().eq("order_id", order1.getId())); |
| | | List<OrderDetl1> orderDetls1 = orderDetl1Mapper.selectList(new EntityWrapper<OrderDetl1>().eq("order_id", order1.getId())); |
| | | boolean complete1 = true; |
| | | for (OrderDetl orderDetl : orderDetls1) { |
| | | for (OrderDetl1 orderDetl : orderDetls1) { |
| | | if (orderDetl.getAnfme() > orderDetl.getQty()) { |
| | | complete1 = false; |
| | | break; |
| | |
| | | throw new CoolException("修改订单【orderNo = " + order1.getOrderNo() + "】状态为已完成失败"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | //主表更新状态 |
| | | if (Cools.isEmpty(order1) || order1.getSettle() >= 4L) { |
| | |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID |
| | | wrkMast.setIoType(ioType); // 入出库状态 |
| | | wrkMast.setIoPri(13D); // 优先级:13 |
| | | wrkMast.setIoPri(ioType==101?20D:13D); // 优先级:13 |
| | | wrkMast.setCrnNo(locMast.getCrnNo()); |
| | | wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 |
| | | wrkMast.setStaNo(staDesc.getStnNo()); // 目标站 |
| | |
| | | wrkMast.setModiUser(user.getId()); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo); |
| | | if(!Cools.isEmpty(taskDto.getLocDtos().get(0).getOrderNo())){ |
| | | wrkMast.setPacked(taskDto.getLocDtos().get(0).getOrderNo()); |
| | | } |
| | | if (!wrkMastService.insert(wrkMast)) { |
| | | throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo()); |
| | | } |
| | | String orderNo = taskDto.getLocDtos().get(0).getOrderNo(); |
| | | Order order = orderService.selectByNo(orderNo); |
| | | if (Cools.isEmpty(order.getAccountDay())) { |
| | | order.setAccountDay(1); |
| | | } else { |
| | | order.setAccountDay(order.getAccountDay() + 1); |
| | | } |
| | | orderNo = order.getOrderNo() + "-" + order.getAccountDay(); |
| | | Order1 order2 = order1Service.selectByNo(orderNo); |
| | | if (Cools.isEmpty(order2)) { |
| | | //创建子表表头 |
| | | Order1 order1 = new Order1(); |
| | | order1.sync(order); |
| | | order1.setOrderNo(orderNo); |
| | | order1.setCreateBy(user.getId()); |
| | | order1.setCreateTime(now); |
| | | order1.setUpdateTime(new Date()); |
| | | order1.setSettle(2L); |
| | | order1Service.insert(order1); |
| | | order2=order1; |
| | | } |
| | | |
| | | // 生成工作档明细 |
| | | for (LocDto locDto : taskDto.getLocDtos()) { |
| | | if (locDto.getAnfme() == null || locDto.getAnfme() <= 0.0D) { |
| | |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setWrkNo(workNo); |
| | | wrkDetl.setBatch(locDto.getBatch()); |
| | | wrkDetl.setOrderNo(locDto.getOrderNo()); |
| | | wrkDetl.setOrderNo(orderNo); |
| | | wrkDetl.setModel(mat.getModel()); |
| | | wrkDetl.setAnfme(locDto.getAnfme()); // 数量 |
| | | wrkDetl.setAppeTime(now); |
| | |
| | | throw new CoolException("保存工作档明细失败"); |
| | | } |
| | | // 修改订单明细 |
| | | if (!orderDetlService.increaseWorkQty2(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(), user.getEmail())) { |
| | | if (!orderDetlService.increaseWorkQty2(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme(), user.getId())) { |
| | | throw new CoolException("修改订单明细数量失败"); |
| | | } |
| | | |
| | | //生成出货单 |
| | | OrderDetl1 orderDetl1 = new OrderDetl1(); |
| | | orderDetl1.sync(wrkDetl); |
| | | orderDetl1.setOrderId(order2.getId()); |
| | | orderDetl1.setWorkQty(wrkDetl.getAnfme()); |
| | | orderDetl1.setStatus(1); |
| | | orderDetl1.setCreateBy(user.getId()); |
| | | orderDetl1.setUpdateBy(user.getId()); |
| | | orderDetl1.setCreateTime(new Date()); |
| | | orderDetl1.setUpdateTime(new Date()); |
| | | orderDetl1Service.insert(orderDetl1); |
| | | |
| | | orderService.updateSettle(orderDetl.getOrderId(), 2L, user.getId()); |
| | | } |
| | | // 修改库位状态: F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 |
| | |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID |
| | | wrkMast.setIoType(ioType); // 入出库状态 |
| | | wrkMast.setIoPri(13D); // 优先级:13 |
| | | wrkMast.setIoPri(ioType==101?20D:13D); // 优先级:13 |
| | | wrkMast.setCrnNo(locMast.getCrnNo()); |
| | | wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 |
| | | wrkMast.setStaNo(staDesc.getStnNo()); // 目标站 |
| | |
| | | wrkMast.setModiUser(user.getId()); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setMemo(Cools.isEmpty(agvStaNo) ? "" : agvStaNo); |
| | | if(!Cools.isEmpty(taskDto.getLocDtos().get(0).getOrderNo())){ |
| | | wrkMast.setPacked(taskDto.getLocDtos().get(0).getOrderNo()); |
| | | } |
| | | if (!wrkMastService.insert(wrkMast)) { |
| | | throw new CoolException("保存工作档失败,出库库位号:" + taskDto.getLocNo()); |
| | | } |
| | | //新增子单 |
| | | Order order = orderService.selectByNo(orderNo); |
| | | if (Cools.isEmpty(order.getAccountDay())) { |
| | | order.setAccountDay(1); |
| | |
| | | throw new CoolException("保存工作档明细失败"); |
| | | } |
| | | // 修改订单明细 |
| | | if (!orderDetlService.increaseWorkQty2(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), wrkDetl.getAnfme(), user.getEmail())) { |
| | | if (!orderDetlService.increaseWorkQty2(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), wrkDetl.getAnfme(), user.getId())) { |
| | | throw new CoolException("修改订单明细数量失败"); |
| | | } |
| | | |
| | |
| | | import com.core.common.R; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.controller.MobileController; |
| | | import com.zy.asrs.entity.BasDevp; |
| | | import com.zy.asrs.entity.RowLastno; |
| | | import com.zy.asrs.entity.WaitPakin; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.service.impl.LocMastServiceImpl; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.service.CommonService; |
| | | import org.slf4j.Logger; |
| | |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | | private BasDevpService basDevpService; |
| | | @Autowired |
| | | private LocMastServiceImpl locMastService; |
| | | |
| | | /** |
| | | * 自动派发入库任务给AGV |
| | |
| | | if (!Cools.isEmpty(waitPakin1)) { |
| | | continue; |
| | | } |
| | | //查看该巷道库位空库位数量>3 |
| | | Integer crnNo=1; |
| | | if(staNo.equals("103")){ |
| | | crnNo=2; |
| | | }else if(staNo.equals("101")){ |
| | | crnNo=3; |
| | | } |
| | | int i1 = locMastService.selectCount(new EntityWrapper<LocMast>().eq("crn_no", crnNo).eq("loc_sts", "O")); |
| | | if(i1<=3){ |
| | | log.info("巷道={},空库位数量小于3,跳过agv入库搬运",crnNo); |
| | | continue; |
| | | } |
| | | R bind = mobileController.siteBindAndUnbind(waitPakin.getMemo(),waitPakin.getZpallet(), "BIND"); |
| | | // if (bind.get("code").equals(200)) { |
| | | // }else { |
| | |
| | | if (orderDetls.isEmpty()) { |
| | | return SUCCESS; |
| | | } |
| | | boolean boo=false; |
| | | // 入库完成上报 |
| | | if (docType.getPakin() == 1) { |
| | | ExdInstockTarget exdInstockTarge = null; |
| | |
| | | exdInstockTarge = new ExdInstockTarget(); |
| | | exdInstockTarge.setFinterid(orderDetl.getDeadWarn()); |
| | | exdInstockTarge.setFbillno(orderDetl.getOrderNo()); |
| | | exdInstockTarge.setFtrantype(order.getDocType().intValue()); |
| | | Integer decType = order.getDocType().intValue(); |
| | | if(order.getDocType().intValue()==42){ |
| | | decType = 41; |
| | | }else if(order.getDocType().intValue()==25){ |
| | | decType = 24; |
| | | }else if(order.getDocType().intValue()==3){ |
| | | decType = 1; |
| | | } |
| | | exdInstockTarge.setFtrantype(decType); |
| | | exdInstockTarge.setFdate(DateUtils.convert(order.getOrderTime())); |
| | | exdInstockTarge.setFrob(orderDetl.getInspect()); |
| | | exdInstockTarge.setFuserid(Integer.getInteger(orderDetl.getColor())); |
| | | Integer frob = 1; |
| | | if(order.getDocType().intValue()==21||order.getDocType().intValue()==24||order.getDocType().intValue()==2||order.getDocType().intValue()==3){ |
| | | frob = -1; |
| | | } |
| | | exdInstockTarge.setFrob(frob); |
| | | //操作用户 |
| | | User id = userService.selectOne(new EntityWrapper<User>().eq("id", orderDetl.getUpdateBy())); |
| | | exdInstockTarge.setFuserid(Integer.valueOf(id.getEmail())); |
| | | exdInstockTarge.setWritetime(new Date()); |
| | | exdInstockTarge.setWritor("WMS"); |
| | | exdInstockTarge.setStatus(0); |
| | | exdInstockTarge.setProdinkind(orderDetl.getItemNum()); |
| | | exdInstockTargetService.insert(exdInstockTarge); |
| | | } |
| | | if (!orderService.updateSettle(order.getId(), 6L, null)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | }else { |
| | | // boo = true; |
| | | } |
| | | } else if (docType.getPakout() == 1) { |
| | | // 出库完成上报 |
| | |
| | | exdOutstockTarget.setFtrantype(order.getDocType().intValue()); |
| | | } |
| | | exdOutstockTarget.setFdate(DateUtils.convert(order.getOrderTime())); |
| | | exdOutstockTarget.setFrob(orderDetl.getInspect()); |
| | | exdOutstockTarget.setFuserid(Integer.getInteger(orderDetl.getColor())); |
| | | exdOutstockTarget.setFrob(order.getDocType().intValue()==2? -1:1); |
| | | //操作用户 |
| | | User id = userService.selectOne(new EntityWrapper<User>().eq("id", orderDetl.getUpdateBy())); |
| | | exdOutstockTarget.setFuserid(Integer.valueOf(id.getEmail())); |
| | | exdOutstockTarget.setWritetime(new Date()); |
| | | exdOutstockTarget.setWritor("WMS"); |
| | | exdOutstockTarget.setStatus(0); |
| | | exdOutstockTarget.setProdinkind(orderDetl.getItemNum()); |
| | | exdOutstockTargetService.insert(exdOutstockTarget); |
| | | |
| | | } |
| | | if (!orderService.updateSettle(order.getId(), 6L, null)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | }else { |
| | | boo = true; |
| | | } |
| | | } |
| | | //普通入出订单子单完成 |
| | | if (boo){ |
| | | Order1 orderNo = order1Service.selectOne(new EntityWrapper<Order1>().like("order_no", order.getOrderNo())); |
| | | orderNo.setSettle(6L); |
| | | order1Service.update(orderNo,new EntityWrapper<Order1>().eq("order_no",order.getOrderNo())); |
| | | } |
| | | return SUCCESS; |
| | | } |
| | |
| | | return FAIL; |
| | | } |
| | | |
| | | |
| | | int i = 1; |
| | | for (OrderDetl1 orderDetl : orderDetls) { |
| | | |
| | | ExdvYanbu bacode = exdMaterialMapper.getBacode(orderDetl.getBatch()); |
| | |
| | | exdOutstockTarget.setFbillerid(Integer.valueOf(id.getEmail())); |
| | | //细表ID |
| | | Integer c = Integer.valueOf(order.getOrderNo().split("-")[1]); |
| | | exdOutstockTarget.setFentryid(c); |
| | | exdOutstockTarget.setFentryid(i++); |
| | | //物料ID |
| | | Mat mat = matService.selectByMatnr(orderDetl.getMatnr()); |
| | | exdOutstockTarget.setFitemid(Integer.valueOf(mat.getUuid())); |
| | | //源单数量 |
| | | exdOutstockTarget.setFqtymust(count); |
| | | //出库数量 |
| | | exdOutstockTarget.setFqty(orderDetl.getQty()); |
| | | exdOutstockTarget.setFqty(bacode.getQty()); |
| | | //单价 |
| | | exdOutstockTarget.setFprice(0.0); |
| | | //批号 暂定 |
| | |
| | | //仓库ID |
| | | Integer Fdcstockid = 19382; |
| | | if(!Cools.isEmpty(bacode.getProdinkind())){ |
| | | ExdStock fname = exdStockService.selectOne(new EntityWrapper<ExdStock>().eq("Fname", bacode.getProdinkind())); |
| | | ExdStock fname = exdStockService.selectOne(new EntityWrapper<ExdStock>().eq("Fname", orderDetl.getBrand())); |
| | | Fdcstockid = Integer.valueOf(fname.getId()); |
| | | } |
| | | exdOutstockTarget.setFdcstockid(Fdcstockid); |
| | |
| | | } |
| | | } |
| | | // 手动入库生成单据 【 上报三方平台 】 |
| | | if (!Cools.isEmpty(wrkDetls)) { |
| | | if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) { |
| | | exceptionHandle("生成手动入库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | // if (!Cools.isEmpty(wrkDetls)) { |
| | | // if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) { |
| | | // exceptionHandle("生成手动入库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | // } |
| | | // } |
| | | // 拣料再入库 |
| | | } else if (wrkMast.getIoType() == 53) { |
| | | if (!Cools.isEmpty(wrkDetls)) { |
| | | if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { |
| | | exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | // else if (wrkMast.getIoType() == 53) { |
| | | // if (!Cools.isEmpty(wrkDetls)) { |
| | | // if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { |
| | | // exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | // 出库 -------------------------------------------------------------------------------- |
| | | } else if (wrkMast.getWrkSts() == 15) { |
| | | if (!Cools.isEmpty(wrkDetls)) { |
| | | if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { |
| | | exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | // else if (wrkMast.getWrkSts() == 15) { |
| | | // if (!Cools.isEmpty(wrkDetls)) { |
| | | // if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { |
| | | // exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | // 保存工作主档历史档 |
| | | if (!wrkMastLogService.save(wrkMast.getWrkNo())) { |
| | |
| | | } catch (Exception ignore) { |
| | | } |
| | | |
| | | // 更新子订单完成数量 |
| | | OrderDetl1 orderDetl1 = orderDetl1Service.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | if (orderDetl1 == null) { |
| | | orderDetl1 = orderDetl1Service.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), null); |
| | | } |
| | | try { |
| | | if (!Cools.isEmpty(orderDetl)) { |
| | | if (!orderDetl1Service.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | orderDetl.getBatch(), wrkDetl.getAnfme())) { |
| | | // exceptionHandle("全板入库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", |
| | | // wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | } catch (Exception ignore) { |
| | | } |
| | | |
| | | } |
| | | // 写入中间表数据 |
| | | write(wrkMast, wrkDetls); |
| | |
| | | try { |
| | | if (!Cools.isEmpty(orderDetl1)) { |
| | | if (!orderDetl1Service.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | orderDetl.getBatch(), wrkDetl.getAnfme())) { |
| | | batch, wrkDetl.getAnfme())) { |
| | | // exceptionHandle("全板出库 ===>> 更新订单完成数量失败;[workNo={0}],[locNo={1}]", |
| | | // wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | //源单号 |
| | | exdInstockTarge.setFsourcebillno(bacode.getIcmono()); |
| | | //源单细表ID |
| | | exdInstockTarge.setFsourceentryid(i); |
| | | exdInstockTarge.setFsourceentryid(1); |
| | | //源单单据类型 |
| | | exdInstockTarge.setFsourcetrantype(85); |
| | | //库位ID |
| | | exdInstockTarge.setFdcspid(0); |
| | | //仓库ID |
| | | Integer Fdcstockid = 19382; |
| | | if(!Cools.isEmpty(bacode.getProdinkind())){ |
| | | ExdStock fname = exdStockService.selectOne(new EntityWrapper<ExdStock>().eq("Fname", bacode.getProdinkind())); |
| | | if(!Cools.isEmpty(wrkDetl.getBrand())){ |
| | | ExdStock fname = exdStockService.selectOne(new EntityWrapper<ExdStock>().eq("Fname", wrkDetl.getBrand())); |
| | | Fdcstockid = Integer.valueOf(fname.getId()); |
| | | } |
| | | |
| | |
| | | exdInstockTarge.setStatus(0); |
| | | //仓库 |
| | | exdInstockTarge.setProdinkind(bacode.getProdinkind()); |
| | | //生产入库对一坨物料进行绑定。唯一值 |
| | | exdInstockTarge.setFbillno(wrkDetl.getOrigin()); |
| | | //exdInstockTarge.setProdInKind("特采库"); |
| | | if(!exdInstockTargetService.insert(exdInstockTarge)){ |
| | | throw new CoolException("验布入库完成插入入库表失败"); |
| | |
| | | int row = getRow(shallowLoc); |
| | | int remainder = (int) Arith.remainder(row, slaveProperties.getGroupCount()); |
| | | int targetRow; |
| | | remainder = remainder + 2; |
| | | if (remainder == 2) { |
| | | targetRow = row - 1; |
| | | } else if (remainder == 3) { |
| | |
| | | |
| | | private String bc; |
| | | |
| | | private String ProdInKind; |
| | | |
| | | |
| | | public DetlDto() { |
| | | } |
| | |
| | | curRow=10; |
| | | }else if(curRow==10){ |
| | | curRow=7; |
| | | }else if(curRow==4){ |
| | | curRow=5; |
| | | }else if(curRow==5){ |
| | | curRow=4; |
| | | }else if(curRow==8){ |
| | | curRow=9; |
| | | }else if(curRow==9){ |
| | | curRow=8; |
| | | } |
| | | // 更新库位排号 |
| | | rowLastno.setCurrentRow(curRow); |
| | |
| | | wrkMast.setExitMk("N"); // 退出 |
| | | wrkMast.setEmptyMk("N"); // 空板 |
| | | wrkMast.setLinkMis("Y"); |
| | | if(!Cools.isEmpty(waitPakins.get(0).getOrderNo())){ |
| | | wrkMast.setPacked(waitPakins.get(0).getOrderNo()); |
| | | } |
| | | wrkMast.setCtnType(sourceStaNo.getCtnType()); // 容器类型 |
| | | // 操作人员数据 |
| | | wrkMast.setAppeTime(now); |
| | |
| | | */ |
| | | private String readormsg; |
| | | |
| | | private String ProdInKind; |
| | | |
| | | @TableField(exist = false) |
| | | private static final long serialVersionUID = 1L; |
| | | } |
| | |
| | | |
| | | List<String> listOrderNo(); |
| | | |
| | | List<String> deletelistOrderNo(); |
| | | |
| | | List<ExdInstockSource> listAll(@Param("orderNo") String orderNo); |
| | | } |
| | |
| | | |
| | | List<String> listOrderNo(); |
| | | |
| | | List<String> deletelistOrderNo(); |
| | | |
| | | List<ExdOutstockSource> listAll(@Param("orderNo") String orderNo); |
| | | } |
| | |
| | | package com.zy.third.task; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.OrderDetl1; |
| | | import com.zy.asrs.service.impl.OrderDetl1ServiceImpl; |
| | | import com.zy.third.entity.ExdInstockSource; |
| | | import com.zy.third.entity.ExdInstockTarget; |
| | | import com.zy.third.entity.ExdOutstockSource; |
| | | import com.zy.third.entity.ExdOutstockTarget; |
| | | import com.zy.third.mapper.ExdInstockSourceMapper; |
| | | import com.zy.third.mapper.ExdOutstockSourceMapper; |
| | | import com.zy.third.service.ExdInstockTargetService; |
| | | import com.zy.third.service.ExdOutstockTargetService; |
| | | import com.zy.third.task.handler.OrderHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | |
| | | @Autowired |
| | | private ExdOutstockSourceMapper exdOutstockSourceMapper; |
| | | |
| | | @Autowired |
| | | private ExdInstockTargetService exdInstockTargetService; |
| | | |
| | | @Autowired |
| | | private ExdOutstockTargetService exdOutstockTargetService; |
| | | @Autowired |
| | | private OrderDetl1ServiceImpl orderDetl1ServiceImpl; |
| | | @Autowired |
| | | private OrderDetl1ServiceImpl orderDetl1Service; |
| | | |
| | | |
| | | /** |
| | |
| | | for (ExdInstockSource exdInstockSource : exdInstockSources) { |
| | | exdInstockSource.setReadormsg(e.getMessage()); |
| | | exdInstockSource.setStatus(2); |
| | | exdInstockSourceMapper.updateById(exdInstockSource); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 读取入库单据,对erp标记为删除的订单进行删除 |
| | | * status 5 --》 8 删除成功 |
| | | * status 5 --》 7 删除失败 |
| | | */ |
| | | @Scheduled(cron = "0/10 * * * * ? ") |
| | | public void deleteInOrder() { |
| | | //log.info("读取入库单据"); |
| | | List<String> orderNos = exdInstockSourceMapper.deletelistOrderNo(); |
| | | for (String orderNo : orderNos) { |
| | | List<ExdInstockSource> exdInstockSources = exdInstockSourceMapper.listAll(orderNo); |
| | | try { |
| | | boolean success = orderHandler.deletereadInOrder(exdInstockSources).isSuccess(); |
| | | for (ExdInstockSource exdInstockSource : exdInstockSources) { |
| | | if (success) { |
| | | exdInstockSource.setReadtime(new Date()); |
| | | exdInstockSource.setStatus(8); |
| | | exdInstockSourceMapper.updateById(exdInstockSource); |
| | | } else { |
| | | exdInstockSource.setReadtime(new Date()); |
| | | exdInstockSource.setStatus(7); |
| | | exdInstockSourceMapper.updateById(exdInstockSource); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | // log.error("读取入库单据信息失败:{},{}", exdInstockSources, e.getMessage()); |
| | | e.printStackTrace(); |
| | | for (ExdInstockSource exdInstockSource : exdInstockSources) { |
| | | exdInstockSource.setReadormsg(e.getMessage()); |
| | | exdInstockSource.setStatus(7); |
| | | exdInstockSourceMapper.updateById(exdInstockSource); |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 读取删除出库单据 |
| | | */ |
| | | @Scheduled(cron = "0/10 * * * * ? ") |
| | | public void deletereadOutOrder() { |
| | | //log.info("读取出库单据"); |
| | | List<String> orderNos = exdOutstockSourceMapper.deletelistOrderNo(); |
| | | for (String orderNo : orderNos) { |
| | | List<ExdOutstockSource> exdOutstockSources = exdOutstockSourceMapper.listAll(orderNo); |
| | | try { |
| | | boolean success = orderHandler.deletereadOutOrder(exdOutstockSources).isSuccess(); |
| | | for (ExdOutstockSource exdOutstockSource : exdOutstockSources) { |
| | | if (success) { |
| | | exdOutstockSource.setReadtime(new Date()); |
| | | exdOutstockSource.setStatus(8); |
| | | exdOutstockSourceMapper.updateById(exdOutstockSource); |
| | | } else { |
| | | exdOutstockSource.setReadtime(new Date()); |
| | | exdOutstockSource.setStatus(7); |
| | | exdOutstockSourceMapper.updateById(exdOutstockSource); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | // log.error("读取出库单据信息失败:{},{}", exdOutstockSources, e.getMessage()); |
| | | e.printStackTrace(); |
| | | for (ExdOutstockSource exdOutstockSource : exdOutstockSources) { |
| | | exdOutstockSource.setStatus(7); |
| | | exdOutstockSource.setReadormsg(e.getMessage()); |
| | | exdOutstockSourceMapper.updateById(exdOutstockSource); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 读取错误出库完成单据 |
| | | */ |
| | | // @Scheduled(cron = "* 0/10 * * * ? ") |
| | | @Scheduled(cron = "0/10 * * * * ? ") |
| | | public void readOutOrdererror() { |
| | | List<ExdOutstockTarget> status = exdOutstockTargetService.selectList(new EntityWrapper<ExdOutstockTarget>().isNotNull("ReadorMsg")); |
| | | if (status.size() > 0) { |
| | | for (ExdOutstockTarget exdOutstockTarget : status) { |
| | | List<OrderDetl1> orderNo = orderDetl1Service.selectList(new EntityWrapper<OrderDetl1>().eq("order_no", exdOutstockTarget.getFbillno())); |
| | | if (!Cools.isEmpty(orderNo)) { |
| | | for (OrderDetl1 orderDetl1 : orderNo) { |
| | | if (!Cools.isEmpty(orderDetl1.getMemo())&&orderDetl1.getMemo().equals(exdOutstockTarget.getReadormsg())) { |
| | | break; |
| | | } |
| | | orderDetl1.setMemo(exdOutstockTarget.getReadormsg()); |
| | | orderDetl1Service.updateById(orderDetl1); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 读取错误入库完成单据 |
| | | */ |
| | | @Scheduled(cron = "* 0/10 * * * ? ") |
| | | // @Scheduled(cron = "0/10 * * * * ? ") |
| | | public void readInOrdererror() { |
| | | List<ExdInstockTarget> status = exdInstockTargetService.selectList(new EntityWrapper<ExdInstockTarget>().isNotNull("ReadorMsg")); |
| | | if (status.size() > 0) { |
| | | for (ExdInstockTarget exdInstockTarget : status) { |
| | | List<OrderDetl1> orderNo = orderDetl1Service.selectList(new EntityWrapper<OrderDetl1>().eq("order_no", exdInstockTarget.getFbillno())); |
| | | if (!Cools.isEmpty(orderNo)) { |
| | | for (OrderDetl1 orderDetl1 : orderNo) { |
| | | if (orderDetl1.getMemo().equals(exdInstockTarget.getReadormsg())) { |
| | | break; |
| | | } |
| | | orderDetl1.setMemo(exdInstockTarget.getReadormsg()); |
| | | orderDetl1Service.updateById(orderDetl1); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } |
| | |
| | | package com.zy.third.task.handler; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.DocType; |
| | | import com.zy.asrs.entity.Mat; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.service.DocTypeService; |
| | | import com.zy.asrs.service.MatService; |
| | | import com.zy.asrs.service.OrderDetlService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.third.entity.ExdInstockSource; |
| | | import com.zy.third.entity.ExdOutstockSource; |
| | | import com.zy.third.entity.ExdStock; |
| | | import com.zy.third.service.ExdStockService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | @Autowired |
| | | private MatService matService; |
| | | |
| | | @Autowired |
| | | private ExdStockService exdStockService; |
| | | @Autowired |
| | | private Order1Service order1Service; |
| | | @Autowired |
| | | private OrderDetl1Service orderDetl1Service; |
| | | |
| | | |
| | | @Transactional |
| | | public ReturnT<String> readInOrder(List<ExdInstockSource> exdInstockSource) { |
| | |
| | | Integer ftrantype = exdInstockSource.get(0).getFtrantype(); |
| | | Order order = orderService.selectByNo(fbillno); |
| | | if (!Cools.isEmpty(order)) { |
| | | throw new CoolException(fbillno + "单据已存在,请勿重复提交"); |
| | | if (order.getSettle() > 1L) { |
| | | throw new CoolException(fbillno + "单据作业中,请勿重复提交"); |
| | | } |
| | | orderService.remove(order.getId()); |
| | | //删除入库子单 |
| | | Order1 order1 = order1Service.selectByNo(fbillno); |
| | | if (!Cools.isEmpty(order1)) { |
| | | order1Service.remove(order1.getId()); |
| | | } |
| | | } |
| | | DocType docType = docTypeService.selectById(ftrantype); |
| | | if (docType == null) { |
| | |
| | | if (!orderService.insert(order)) { |
| | | throw new CoolException("生成单据主档失败,请联系管理员"); |
| | | } |
| | | |
| | | //生成子单主表 |
| | | Order1 order1 = new Order1( |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | fbillno, // 订单编号 |
| | | DateUtils.convert(exdInstockSource.get(0).getFdate()), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | null, // |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 客户编号 |
| | | null, // 客户 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null // 备注 |
| | | ); |
| | | if (!order1Service.insert(order1)) { |
| | | throw new CoolException("生成子单据主档失败,请联系管理员"); |
| | | } |
| | | |
| | | // 单据明细档 |
| | | List<DetlDto> list = new ArrayList<>(); |
| | | for (ExdInstockSource detail : exdInstockSource) { |
| | | DetlDto dto = new DetlDto(detail.getFitemid() + "", detail.getFbatchno(), detail.getFqty()); |
| | | dto.setFrob(detail.getFrob()); |
| | | dto.setFInterID(detail.getFinterid()); |
| | | dto.setProdInKind(detail.getFdcstockid()+""); |
| | | if (DetlDto.has(list, dto)) { |
| | | DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch()); |
| | | assert detlDto != null; |
| | |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setBatch(detlDto.getBatch()); |
| | | if(detlDto.getAnfme() <0) { |
| | | detlDto.setAnfme(-detlDto.getAnfme()); |
| | | } |
| | | orderDetl.setAnfme(detlDto.getAnfme()); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | |
| | | orderDetl.setQty(0.0D); |
| | | orderDetl.setDeadWarn(detlDto.getFInterID()); |
| | | orderDetl.setBeBatch(detlDto.getFrob()); |
| | | ExdStock id = exdStockService.selectOne(new EntityWrapper<ExdStock>().eq("ID", detlDto.getProdInKind())); |
| | | orderDetl.setBrand(id.getFname());//仓库 |
| | | if (!orderDetlService.insert(orderDetl)) { |
| | | throw new CoolException("生成单据明细失败,请联系管理员"); |
| | | } |
| | | |
| | | //生成子单明细 |
| | | OrderDetl1 orderDetl1 = new OrderDetl1(); |
| | | orderDetl1.sync(orderDetl); |
| | | orderDetl1.setOrderId(order1.getId()); |
| | | if (!orderDetl1Service.insert(orderDetl1)) { |
| | | throw new CoolException("生成单据明细失败,请联系管理员"); |
| | | } |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | |
| | | @Transactional |
| | | public ReturnT<String> deletereadInOrder(List<ExdInstockSource> exdInstockSource) { |
| | | String fbillno = exdInstockSource.get(0).getFbillno(); |
| | | Order order = orderService.selectByNo(fbillno); |
| | | if (!Cools.isEmpty(order)&&order.getStatus()>1) { |
| | | if (order.getSettle() > 1L) { |
| | | throw new CoolException(fbillno + "单据正在作业中,无法删除"); |
| | | } |
| | | orderService.remove(order.getId()); |
| | | } |
| | | return SUCCESS; |
| | | } |
| | |
| | | // 如果单据不存在则添加;如果单据存在,作业中无法修改,反之则修改单据 |
| | | if (!Cools.isEmpty(order)) { |
| | | if (order.getSettle() > 1L) { |
| | | throw new CoolException(fbillno + "正在出库,无法修改单据"); |
| | | throw new CoolException(fbillno + "单据正在作业中,请勿重复提交"); |
| | | } |
| | | orderService.remove(order.getId()); |
| | | } |
| | | if(ftrantype == 41){ |
| | | ftrantype = 42; |
| | | }else if(ftrantype == 24){ |
| | | ftrantype = 25; |
| | | }else if(ftrantype == 1){ |
| | | ftrantype = 3; |
| | | } |
| | | DocType docType = docTypeService.selectById(ftrantype); |
| | | Date now = new Date(); |
| | |
| | | List<DetlDto> list = new ArrayList<>(); |
| | | for (ExdOutstockSource detail : exdOutstockSource) { |
| | | DetlDto dto = new DetlDto(detail.getFitemid()+"", detail.getFbatchno(), detail.getFqty()); |
| | | dto.setFInterID(detail.getFinterid()); |
| | | if (DetlDto.has(list, dto)) { |
| | | DetlDto detlDto = DetlDto.find(list, dto.getMatnr(), dto.getBatch()); |
| | | assert detlDto != null; |
| | | detlDto.setAnfme(detlDto.getAnfme() + detail.getFqty()); |
| | | |
| | | } else { |
| | | list.add(dto); |
| | | } |
| | |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setBatch(detlDto.getBatch()); |
| | | if(detlDto.getAnfme() <0) { |
| | | detlDto.setAnfme(-detlDto.getAnfme()); |
| | | } |
| | | orderDetl.setAnfme(detlDto.getAnfme()); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | |
| | | orderDetl.setCreateTime(now); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(now); |
| | | orderDetl.setDeadWarn(detlDto.getFInterID());//订单内码 |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | if (!orderDetlService.insert(orderDetl)) { |
| | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | @Transactional |
| | | public ReturnT<String> deletereadOutOrder(List<ExdOutstockSource> exdInstockSource) { |
| | | String fbillno = exdInstockSource.get(0).getFbillno(); |
| | | Order order = orderService.selectByNo(fbillno); |
| | | if (!Cools.isEmpty(order)&&order.getStatus()>1) { |
| | | if (order.getSettle() > 1L) { |
| | | throw new CoolException(fbillno + "单据正在作业中,无法删除"); |
| | | } |
| | | orderService.remove(order.getId()); |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | |
| | | } |
| | |
| | | <if test="batch!=null and batch!='' "> |
| | | and a.batch like '%' + #{batch} + '%' |
| | | </if> |
| | | <if test="brand!=null and brand!=''"> |
| | | and a.brand in |
| | | <foreach collection="brand.split(',')" item="item" open="(" close=")" separator=","> |
| | | #{item} |
| | | </foreach> |
| | | </if> |
| | | <if test="startTime!=null and endTime!=null"> |
| | | and a.modi_time between #{startTime} and #{endTime} |
| | | </if> |
| | |
| | | update man_order_detl1 |
| | | set work_qty = work_qty + #{workQty} |
| | | <if test="color!=null and color!='' "> |
| | | , color = #{color} |
| | | , update_by = #{color} |
| | | </if> |
| | | where 1=1 |
| | | and order_id = #{orderId} |
| | |
| | | ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) |
| | | </select> |
| | | |
| | | <select id="getPakoutPagexs" resultMap="BaseResultMap"> |
| | | select * from |
| | | ( |
| | | select |
| | | ROW_NUMBER() over (order by mo.create_time desc) as row, |
| | | mod.* |
| | | from man_order_detl mod |
| | | inner join man_order mo on mod.order_id = mo.id |
| | | inner join man_doc_type mdt on mo.doc_type = mdt.doc_id |
| | | where 1=1 |
| | | and mo.settle <= 2 |
| | | and mo.status = 1 |
| | | and mdt.pakout = 1 |
| | | <include refid="pakOutPageCondition"></include> |
| | | ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) |
| | | </select> |
| | | |
| | | <select id="getPakoutPagenotxs" resultMap="BaseResultMap"> |
| | | select * from |
| | | ( |
| | | select |
| | | ROW_NUMBER() over (order by mo.create_time desc) as row, |
| | | mod.* |
| | | from man_order_detl mod |
| | | inner join man_order mo on mod.order_id = mo.id |
| | | inner join man_doc_type mdt on mo.doc_type = mdt.doc_id |
| | | where 1=1 |
| | | and mo.settle <= 2 |
| | | and mo.status = 1 |
| | | and mdt.pakout = 1 |
| | | <include refid="pakOutPageCondition"></include> |
| | | ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) |
| | | </select> |
| | | |
| | | <select id="reportERPOrderDetl" resultMap="BaseResultMap"> |
| | | select d.* from man_order_detl d |
| | | LEFT JOIN man_order o on o.order_no = d.order_no |
| | |
| | | update man_order_detl |
| | | set work_qty = work_qty + #{workQty} |
| | | <if test="color!=null and color!='' "> |
| | | , color = #{color} |
| | | , update_by = #{color} |
| | | </if> |
| | | where 1=1 |
| | | and order_id = #{orderId} |
| | |
| | | <select id="listOrderNo" resultType="java.lang.String"> |
| | | select distinct fbillno |
| | | from Exd_Instock_Source |
| | | where status = 0 |
| | | where status in(0,4) |
| | | </select> |
| | | |
| | | <select id="deletelistOrderNo" resultType="java.lang.String"> |
| | | select distinct fbillno |
| | | from Exd_Instock_Source |
| | | where status = 5 |
| | | </select> |
| | | |
| | | |
| | |
| | | <select id="listOrderNo" resultType="java.lang.String"> |
| | | select distinct fbillno |
| | | from Exd_Outstock_Source |
| | | where status = 0 |
| | | where status in (0,4) |
| | | </select> |
| | | |
| | | <select id="deletelistOrderNo" resultType="java.lang.String"> |
| | | select distinct fbillno |
| | | from Exd_Outstock_Source |
| | | where status = 5 |
| | | </select> |
| | | |
| | | |
| | |
| | | {field: 'matnr', align: 'center',title: '商品编号', sort:true} |
| | | ,{field: 'maktx', align: 'center',title: '商品名称', sort:true} |
| | | ,{field: 'orderNo', align: 'center',title: '单据编号', hide: true} |
| | | ,{field: 'batch', align: 'center',title: '合同号', sort:true} |
| | | ,{field: 'batch', align: 'center',title: '批号', sort:true} |
| | | ,{field: 'anfme', align: 'center',title: '数量'} |
| | | ,{field: 'zpallet', align: 'center',title: '托盘条码'} |
| | | |
| | | ,{field: 'specs', align: 'center',title: '规格'} |
| | | ,{field: 'model', align: 'center',title: '图号', hide: false} |
| | | ,{field: 'model', align: 'center',title: '图号', hide: true} |
| | | ,{field: 'color', align: 'center',title: '颜色', hide: true} |
| | | ,{field: 'brand', align: 'center',title: '品牌', hide: true} |
| | | ,{field: 'brand', align: 'center',title: '仓库', hide: false} |
| | | ,{field: 'unit', align: 'center',title: '单位', hide: true} |
| | | ,{field: 'price', align: 'center',title: '单价', hide: true} |
| | | ,{field: 'sku', align: 'center',title: 'sku', hide: true} |
| | |
| | | {field: 'matnr', align: 'center',title: '商品编号', sort:true} |
| | | ,{field: 'maktx', align: 'center',title: '商品名称', sort:true} |
| | | ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false} |
| | | ,{field: 'batch', align: 'center',title: '合同号', width: 300, sort:true} |
| | | ,{field: 'batch', align: 'center',title: '批号', width: 300, sort:true} |
| | | ,{field: 'anfme', align: 'center',title: '数量'} |
| | | ,{field: 'zpallet', align: 'center',title: '托盘条码'} |
| | | ,{field: 'specs', align: 'center',title: '配置'} |
| | | ,{field: 'model', align: 'center',title: '图号', hide: false} |
| | | ,{field: 'specs', 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} |
| | | ,{field: 'brand', align: 'center',title: '仓库', hide: false} |
| | | ,{field: 'unit', align: 'center',title: '单位', hide: true} |
| | | ,{field: 'price', align: 'center',title: '单价', hide: true} |
| | | ,{field: 'sku', align: 'center',title: 'sku', hide: true} |
| | |
| | | form.on('submit(edit)', function () { |
| | | method("/locMast/update/auth") |
| | | }); |
| | | // 修改合同号动作 |
| | | // 修改批号动作 |
| | | form.on('submit(pakoutPreview)', function () { |
| | | method("/locDetl/updateBatch/auth") |
| | | }); |
| | |
| | | insTb2 = table.render({ |
| | | elem: '#orderDetlTable', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | url: baseUrl+'/orderDetl/pakout/list/auth', |
| | | url: baseUrl+'/orderDetl/pakout/list/auth/notxs', |
| | | page: true, |
| | | limit: 15, |
| | | limits: [15, 30, 50, 100, 200, 500], |
| | |
| | | // ,{field: 'createBy$', align: 'center',title: '添加人员'} |
| | | {field: 'createTime$', align: 'center',title: '添加时间'} |
| | | |
| | | ,{field: 'inspect', align: 'center',title: '上报次数', width: 100} |
| | | // ,{field: 'inspect', align: 'center',title: '上报次数', width: 100} |
| | | // ,{field: 'updateBy$', align: 'center',title: '修改人员'} |
| | | // ,{field: 'updateTime$', align: 'center',title: '修改时间'} |
| | | // ,{field: 'memo', align: 'center',title: '备注'} |
| | | ,{field: 'memo', align: 'center',title: 'erp上报错误'} |
| | | // ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:120} |
| | | ]], |
| | | request: { |
| New file |
| | |
| | | var insTb; |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" // 配置模块所在的目录 |
| | | }).use(['table','laydate', 'form', 'admin', 'tableX'], function() { |
| | | var table = layui.table; |
| | | var $ = layui.jquery; |
| | | var layer = layui.layer; |
| | | var layDate = layui.laydate; |
| | | var form = layui.form; |
| | | var admin = layui.admin; |
| | | var tableX = layui.tableX; |
| | | |
| | | /****************************************** 左边表 *************************************************/ |
| | | |
| | | insTb = table.render({ |
| | | elem: '#originTablenotxs', |
| | | url: baseUrl + '/order/nav/list/auth/notxs', |
| | | height: 'full-120', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | request: { |
| | | pageName: 'curr', |
| | | pageSize: 'limit' |
| | | }, |
| | | page: false, |
| | | parseData: function (res) { |
| | | return { |
| | | 'code': res.code, |
| | | 'msg': res.msg, |
| | | 'data': res.data |
| | | } |
| | | }, |
| | | response: { |
| | | statusCode: 200 |
| | | }, |
| | | // toolbar: ['<p>', |
| | | // '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn"><i class="layui-icon"></i>添加</button> ', |
| | | // '<button lay-event="edit" class="layui-btn layui-btn-sm layui-btn-warm icon-btn"><i class="layui-icon"></i>修改</button> ', |
| | | // '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn"><i class="layui-icon"></i>删除</button>', |
| | | // '</p>'].join(''), |
| | | defaultToolbar: [], |
| | | cols: [[ |
| | | // {type: 'numbers', title: '#'}, |
| | | {field: 'orderTime', title: '日期'}, |
| | | {field: 'orderNo', title: '单据编号', align: 'center'} |
| | | ]], |
| | | done: function (res, curr, count) { |
| | | $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click'); |
| | | |
| | | // 绑定鼠标右键 |
| | | tableX.bindCtxMenu('originTablenotxs', function (d) { |
| | | return [ |
| | | { |
| | | icon: 'layui-icon layui-icon-ok', |
| | | name: '一键出库', |
| | | click: function (d) { |
| | | autoOut(d.id); |
| | | } |
| | | } |
| | | ] |
| | | |
| | | }) |
| | | |
| | | } |
| | | }); |
| | | |
| | | /* 表格搜索 */ |
| | | form.on('submit(originTableSearch)', function (data) { |
| | | insTb.reload({where: data.field}); |
| | | return false; |
| | | }); |
| | | |
| | | /* 表格重置 */ |
| | | form.on('submit(originTbReset)', function (data) { |
| | | insTb.reload({where: null}); |
| | | insTb2.reload({where: null, page: {curr: 1}}); |
| | | return false; |
| | | }); |
| | | |
| | | /* 表格头工具栏点击事件 */ |
| | | table.on('toolbar(originTable)', function (obj) { |
| | | if (obj.event === 'add') { // 添加 |
| | | showEdit(); |
| | | } else if (obj.event === 'edit') { // 修改 |
| | | if (selObj == null) { |
| | | return; |
| | | } |
| | | showEdit(selObj.data); |
| | | } else if (obj.event === 'del') { // 删除 |
| | | if (selObj == null) { |
| | | return; |
| | | } |
| | | doDel(selObj); |
| | | } |
| | | }); |
| | | |
| | | |
| | | /* 监听行单击事件 */ |
| | | var selObj; |
| | | table.on('row(originTablenotxs)', function (obj) { |
| | | |
| | | selObj = obj; |
| | | obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click'); |
| | | insTb2.reload({where: {order_id: obj.data.id}, page: {curr: 1}}); |
| | | }); |
| | | |
| | | /* 显示表单弹窗 */ |
| | | function showEdit(mData) { |
| | | admin.open({ |
| | | type: 1, |
| | | title: (mData ? '修改' : '添加') + '项目', |
| | | content: $('#hostEditDialog').html(), |
| | | success: function (layero, dIndex) { |
| | | // 回显表单数据 |
| | | form.val('hostEditForm', mData); |
| | | // 表单提交事件 |
| | | form.on('submit(hostEditSubmit)', function (data) { |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/host/"+(mData?'update':'add')+"/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: data.field, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.close(loadIndex); |
| | | selObj = null; |
| | | if (res.code === 200){ |
| | | layer.close(dIndex); |
| | | layer.msg(res.msg, {icon: 1}); |
| | | insTb.reload(); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | return false; |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /* 删除 */ |
| | | function doDel(obj) { |
| | | layer.confirm('确定要删除此单据类型吗?', { |
| | | skin: 'layui-layer-admin', |
| | | shade: .1 |
| | | }, function (i) { |
| | | layer.close(i); |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/host/delete/one/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: {param: JSON.stringify(obj.data)}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | selObj = null; |
| | | layer.close(loadIndex); |
| | | if (res.code === 200){ |
| | | layer.closeAll(); |
| | | insTb.reload(); |
| | | $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click'); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | |
| | | }) |
| New file |
| | |
| | | var insTb; |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" // 配置模块所在的目录 |
| | | }).use(['table','laydate', 'form', 'admin', 'tableX'], function() { |
| | | var table = layui.table; |
| | | var $ = layui.jquery; |
| | | var layer = layui.layer; |
| | | var layDate = layui.laydate; |
| | | var form = layui.form; |
| | | var admin = layui.admin; |
| | | var tableX = layui.tableX; |
| | | |
| | | /****************************************** 左边表 *************************************************/ |
| | | |
| | | insTb = table.render({ |
| | | elem: '#originTablexs', |
| | | url: baseUrl + '/order/nav/list/auth/xs', |
| | | height: 'full-120', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | request: { |
| | | pageName: 'curr', |
| | | pageSize: 'limit' |
| | | }, |
| | | page: false, |
| | | parseData: function (res) { |
| | | return { |
| | | 'code': res.code, |
| | | 'msg': res.msg, |
| | | 'data': res.data |
| | | } |
| | | }, |
| | | response: { |
| | | statusCode: 200 |
| | | }, |
| | | // toolbar: ['<p>', |
| | | // '<button lay-event="add" class="layui-btn layui-btn-sm icon-btn"><i class="layui-icon"></i>添加</button> ', |
| | | // '<button lay-event="edit" class="layui-btn layui-btn-sm layui-btn-warm icon-btn"><i class="layui-icon"></i>修改</button> ', |
| | | // '<button lay-event="del" class="layui-btn layui-btn-sm layui-btn-danger icon-btn"><i class="layui-icon"></i>删除</button>', |
| | | // '</p>'].join(''), |
| | | defaultToolbar: [], |
| | | cols: [[ |
| | | // {type: 'numbers', title: '#'}, |
| | | {field: 'orderTime', title: '日期'}, |
| | | {field: 'orderNo', title: '单据编号', align: 'center'} |
| | | ]], |
| | | done: function (res, curr, count) { |
| | | $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click'); |
| | | |
| | | // 绑定鼠标右键 |
| | | tableX.bindCtxMenu('originTablexs', function (d) { |
| | | return [ |
| | | { |
| | | icon: 'layui-icon layui-icon-ok', |
| | | name: '一键出库', |
| | | click: function (d) { |
| | | autoOut(d.id); |
| | | } |
| | | } |
| | | ] |
| | | |
| | | }) |
| | | |
| | | } |
| | | }); |
| | | |
| | | /* 表格搜索 */ |
| | | form.on('submit(originTablexsSearch)', function (data) { |
| | | insTb.reload({where: data.field}); |
| | | return false; |
| | | }); |
| | | |
| | | /* 表格重置 */ |
| | | form.on('submit(originTbReset)', function (data) { |
| | | insTb.reload({where: null}); |
| | | insTb2.reload({where: null, page: {curr: 1}}); |
| | | return false; |
| | | }); |
| | | |
| | | /* 表格头工具栏点击事件 */ |
| | | table.on('toolbar(originTablexs)', function (obj) { |
| | | if (obj.event === 'add') { // 添加 |
| | | showEdit(); |
| | | } else if (obj.event === 'edit') { // 修改 |
| | | if (selObj == null) { |
| | | return; |
| | | } |
| | | showEdit(selObj.data); |
| | | } else if (obj.event === 'del') { // 删除 |
| | | if (selObj == null) { |
| | | return; |
| | | } |
| | | doDel(selObj); |
| | | } |
| | | }); |
| | | |
| | | |
| | | /* 监听行单击事件 */ |
| | | var selObj; |
| | | table.on('row(originTablexs)', function (obj) { |
| | | |
| | | selObj = obj; |
| | | obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click'); |
| | | insTb2.reload({where: {order_id: obj.data.id}, page: {curr: 1}}); |
| | | }); |
| | | |
| | | /* 显示表单弹窗 */ |
| | | function showEdit(mData) { |
| | | admin.open({ |
| | | type: 1, |
| | | title: (mData ? '修改' : '添加') + '项目', |
| | | content: $('#hostEditDialog').html(), |
| | | success: function (layero, dIndex) { |
| | | // 回显表单数据 |
| | | form.val('hostEditForm', mData); |
| | | // 表单提交事件 |
| | | form.on('submit(hostEditSubmit)', function (data) { |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/host/"+(mData?'update':'add')+"/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: data.field, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.close(loadIndex); |
| | | selObj = null; |
| | | if (res.code === 200){ |
| | | layer.close(dIndex); |
| | | layer.msg(res.msg, {icon: 1}); |
| | | insTb.reload(); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | return false; |
| | | }); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /* 删除 */ |
| | | function doDel(obj) { |
| | | layer.confirm('确定要删除此单据类型吗?', { |
| | | skin: 'layui-layer-admin', |
| | | shade: .1 |
| | | }, function (i) { |
| | | layer.close(i); |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/host/delete/one/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: {param: JSON.stringify(obj.data)}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | selObj = null; |
| | | layer.close(loadIndex); |
| | | if (res.code === 200){ |
| | | layer.closeAll(); |
| | | insTb.reload(); |
| | | $('#dictTable+.layui-table-view .layui-table-body tbody>tr:first').trigger('click'); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | |
| | | }) |
| | |
| | | ,{field: 'staNo$', align: 'center',title: '目标站'} |
| | | ,{field: 'sourceLocNo$', align: 'center',title: '源库位'} |
| | | ,{field: 'locNo$', align: 'center',title: '目标库位'} |
| | | ,{field: 'pauseMk', align: 'center',title: '订单号'} |
| | | ,{field: 'barcode', align: 'center',title: '条码'} |
| | | ,{field: 'preHave', align: 'center',title: '先入品', hide: true} |
| | | ,{field: 'takeNone', align: 'center',title: '空操作', hide: true} |
| | |
| | | // ,{field: 'appeUser$', align: 'center',title: '创建者',event: 'appeUser', style: 'cursor:pointer'} |
| | | // ,{field: 'appeTime$', align: 'center',title: '添加时间'} |
| | | ,{field: 'barcode', align: 'center',title: '条码'} |
| | | ,{field: 'pauseMk', align: 'center',title: '订单号'} |
| | | // ,{field: 'fullPlt', align: 'center',title: '满板', templet:function(row){ |
| | | // var html = "<input value='fullPlt' type='checkbox' lay-skin='primary' lay-filter='tableCheckbox' table-index='"+row.LAY_TABLE_INDEX+"'"; |
| | | // if(row.fullPlt === 'Y'){html += " checked ";} |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="layui-inline">--> |
| | |
| | | <!-- </div>--> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="condition" placeholder="商品名称" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="brand" placeholder="仓库" autocomplete="off"> |
| | | </div> |
| | | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | <!-- <div class="layui-inline">--> |
| | | <!-- <div class="layui-input-inline">--> |
| | | <!-- <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off">--> |
| | | <!-- </div>--> |
| | | |
| | | </div> |
| | | <!-- </div>--> |
| | | |
| | | <!-- 待添加 --> |
| | | <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block"> |
| | |
| | | <input name="orderNo" class="layui-input" placeholder="输入单据编号" autocomplete="off"/> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <button class="layui-btn icon-btn" lay-filter="originTableSearch" lay-submit> |
| | | <button class="layui-btn icon-btn" lay-filter="originTablenotxsSearch" lay-submit> |
| | | <i class="layui-icon"></i>搜索 |
| | | </button> |
| | | <button class="layui-btn icon-btn" lay-filter="originTbReset" lay-submit> |
| | |
| | | </div> |
| | | </div> |
| | | </form> |
| | | <table id="originTable" lay-filter="originTable"></table> |
| | | <table id="originTablenotxs" lay-filter="originTablenotxs"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/tools/md5.js"></script> |
| | | <script type="text/javascript" src="../../static/js/orderTable.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/orderTablenotxs.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/order/out.js" charset="utf-8"></script> |
| | | <!--<script type="text/template" id="takeSiteSelectTemplate">--> |
| | | <!-- {{#each data}}--> |
| | |
| | | <input name="orderNo" class="layui-input" placeholder="输入单据编号" autocomplete="off"/> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <button class="layui-btn icon-btn" lay-filter="originTableSearch" lay-submit> |
| | | <button class="layui-btn icon-btn" lay-filter="originTablexsSearch" lay-submit> |
| | | <i class="layui-icon"></i>搜索 |
| | | </button> |
| | | <button class="layui-btn icon-btn" lay-filter="originTbReset" lay-submit> |
| | |
| | | </div> |
| | | </div> |
| | | </form> |
| | | <table id="originTable" lay-filter="originTable"></table> |
| | | <table id="originTablexs" lay-filter="originTablexs"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/tools/md5.js"></script> |
| | | <script type="text/javascript" src="../../static/js/orderTable.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/orderTablexs.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/order/outAll.js?v=1" charset="utf-8"></script> |
| | | <!--<script type="text/template" id="takeSiteSelectTemplate">--> |
| | | <!-- {{#each data}}--> |
| | |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="brand" placeholder="生产线" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="sku" placeholder="等级" autocomplete="off"> |
| | | <div class="layui-input-inline" style="margin-right: 100px;"> |
| | | <div id="condition" name="condition"> |
| | | |
| | | </div> |
| | | </div> |
| | | <!-- 日期范围 --> |
| | |
| | | </script> |
| | | |
| | | <script> |
| | | var conditionXmSelect; |
| | | function getCol() { |
| | | var cols = [ |
| | | {type: 'checkbox', merge: ['locNo']} |
| | | {type: 'checkbox'} |
| | | , {field: 'locNo', align: 'center', title: '库位号', merge: true, style: 'font-weight: bold'} |
| | | // ,{field: 'locNo$', align: 'center',title: '库位号'} |
| | | ]; |
| | |
| | | }).extend({ |
| | | notice: 'notice/notice', |
| | | }) |
| | | .use(['table', 'notice', 'laydate', 'form', 'admin', 'tableMerge'], function () { |
| | | .use(['table', 'notice', 'laydate', 'form', 'admin', 'tableMerge','xmSelect'], function () { |
| | | var table = layui.table; |
| | | var $ = layui.jquery; |
| | | var layer = layui.layer; |
| | |
| | | var admin = layui.admin; |
| | | var tableMerge = layui.tableMerge; |
| | | var notice = layui.notice; |
| | | var xmSelect = layui.xmSelect; |
| | | |
| | | $('#matnr').val(parent.matnR); |
| | | $('#anfme').val(parent.anfme); |
| | |
| | | } |
| | | }); |
| | | |
| | | conditionXmSelect = xmSelect.render({ |
| | | el: '#condition', |
| | | style: { |
| | | width: '200px', |
| | | }, |
| | | autoRow: true, |
| | | toolbar: {show: true}, |
| | | filterable: true, |
| | | data: [ |
| | | { |
| | | name: '成品智能立库', |
| | | value: '成品智能立库' |
| | | }, |
| | | { |
| | | name: '特采智能立库', |
| | | value: '特采智能立库' |
| | | } |
| | | ] |
| | | }) |
| | | |
| | | // 搜索栏搜索事件 |
| | | form.on('submit(search)', function (data) { |
| | | tableReload(); |
| | |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="brand" placeholder="生产线" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="sku" placeholder="等级" autocomplete="off"> |
| | | <div class="layui-input-inline" style="margin-right: 100px;"> |
| | | <div id="condition" name="condition"> |
| | | |
| | | </div> |
| | | </div> |
| | | <!-- 日期范围 --> |
| | |
| | | </script> |
| | | |
| | | <script> |
| | | var conditionXmSelect; |
| | | function getCol() { |
| | | var cols = [ |
| | | {type: 'checkbox', merge: ['locNo']} |
| | | {type: 'checkbox'} |
| | | , {field: 'locNo', align: 'center', title: '库位号', merge: true, style: 'font-weight: bold'} |
| | | // ,{field: 'locNo$', align: 'center',title: '库位号'} |
| | | ]; |
| | |
| | | }).extend({ |
| | | notice: 'notice/notice', |
| | | }) |
| | | .use(['table', 'notice', 'laydate', 'form', 'admin', 'tableMerge'], function () { |
| | | .use(['table', 'notice', 'laydate', 'form', 'admin', 'tableMerge','xmSelect'], function () { |
| | | var table = layui.table; |
| | | var $ = layui.jquery; |
| | | var layer = layui.layer; |
| | |
| | | var tableMerge = layui.tableMerge; |
| | | var notice = layui.notice; |
| | | var dataSource = []; |
| | | var xmSelect = layui.xmSelect; |
| | | |
| | | $('#matnr').val(parent.matnR); |
| | | $('#anfme').val(parent.anfme); |
| | |
| | | } |
| | | }); |
| | | |
| | | conditionXmSelect = xmSelect.render({ |
| | | el: '#condition', |
| | | style: { |
| | | width: '200px', |
| | | }, |
| | | autoRow: true, |
| | | toolbar: {show: true}, |
| | | filterable: true, |
| | | data: [ |
| | | { |
| | | name: '成品智能立库', |
| | | value: '成品智能立库' |
| | | }, |
| | | { |
| | | name: '特采智能立库', |
| | | value: '特采智能立库' |
| | | } |
| | | ] |
| | | }) |
| | | // 监听复选框选择事件 |
| | | table.on('checkbox(stockOut)', function(obj){ |
| | | var data = obj.data; |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <!-- 待添加 --> |
| | |
| | | <table class="layui-hide" id="locDetlByMap" lay-filter="locDetlByMap"></table> |
| | | </body> |
| | | <script type="text/html" id="operateDetl"> |
| | | <!-- <button id="batch" class="layui-btn layui-btn-primary layui-btn-radius" style="height: auto" lay-submit lay-filter="batch">修改合同号</button>--> |
| | | <a class="layui-btn layui-btn-xs layui-btn-danger btn-pakoutPreview" lay-event="pakoutPreview"><i class="layui-icon layui-icon-prev-circle"></i>修改合同号</a> |
| | | <!-- <button id="batch" class="layui-btn layui-btn-primary layui-btn-radius" style="height: auto" lay-submit lay-filter="batch">修改批号</button>--> |
| | | <a class="layui-btn layui-btn-xs layui-btn-danger btn-pakoutPreview" lay-event="pakoutPreview"><i class="layui-icon layui-icon-prev-circle"></i>修改批号</a> |
| | | </script> |
| | | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> |
| | | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> |
| | |
| | | table.on('tool(locDetlByMap)', function (obj) { |
| | | var data = obj.data; |
| | | switch (obj.event) { |
| | | // 修改合同号(批号) |
| | | // 修改批号(批号) |
| | | case 'pakoutPreview': |
| | | layer.open({ |
| | | type: 2, |
| | | title: '修改合同号', |
| | | title: '修改批号', |
| | | maxmin: true, |
| | | area: ['500px', top.detailHeight], |
| | | shadeClose: false, |
| | |
| | | <div id="data-detail" class="layer_self_wrap"> |
| | | <form id="updateBatch" class="layui-form" style="height: 100%"> |
| | | <div class="layui-inline" > |
| | | <label class="layui-form-label"><span class="not-null">*</span>修改合同号:</label> |
| | | <label class="layui-form-label"><span class="not-null">*</span>修改批号:</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="sku" class="layui-input" type="text" onkeyup="check(this.id, 'locDetl')"> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" > |
| | | <label class="layui-form-label"><span class="not-null"></span>原合同号:</label> |
| | | <label class="layui-form-label"><span class="not-null"></span>原批号:</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="batch" class="layui-input" disabled ="disabled" type="text" onkeyup="check(this.id, 'locDetl')"> |
| | | </div> |
| | |
| | | <div id="search-box" class="layui-form layui-card-header"> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | <div id="search-box" class="layui-form layui-card-header"> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <!-- 日期范围 --> |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <!-- 日期范围 --> |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="合同号" autocomplete="off"> |
| | | <input class="layui-input" type="text" name="batch" placeholder="批号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <!-- 待添加 --> |
| | |
| | | <input class="layui-input" type="text" name="crn_no" placeholder="堆垛机号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="pause_mk" placeholder="订单号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <!-- 日期范围 --> |
| | | <div class="layui-inline" style="width: 300px"> |
| | | <div class="layui-input-inline"> |
| | |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="pause_mk" placeholder="订单号" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> |
| | | </div> |
| | | </div> |