| | |
| | | return R.ok().add(tokenVo); |
| | | } |
| | | |
| | | /** |
| | | * 物料基础信息同步 |
| | | * @param appkey |
| | | * @param param |
| | | * @param request |
| | | * @return |
| | | */ |
| | | @PostMapping("/erp/mat/sync") |
| | | // @AppAuth(memo = "商品信息同步接口") |
| | | public synchronized R syncMatInfoV2(@RequestHeader(required = false) String appkey, |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 入/出库通知单下发 |
| | | * @param param |
| | | * @return |
| | | */ |
| | | @PostMapping("/erp/order/add") |
| | | public synchronized R addOrder(@RequestBody OpenOrderParam param){ |
| | | if (Cools.isEmpty(param)) { |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | if (Cools.isEmpty(param.getOrderNo())){ |
| | | return R.error("单据编号[orderNo]不能为空"); |
| | | } |
| | | if (Cools.isEmpty(param.getOrderType())){ |
| | | return R.error("单据类型[orderType]不能为空"); |
| | | } |
| | | if (Cools.isEmpty(param.getWkType())){ |
| | | return R.error("业务类型[wkType]不能为空"); |
| | | } |
| | | if (Cools.isEmpty(param.getOrderItems())){ |
| | | return R.error("订单明细[orderItems]不能为空"); |
| | | } |
| | | openService.orderCreate(param); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PostMapping("/order/matSync/default/v1") |
| | | // @AppAuth(memo = "商品信息同步接口") |
| | | public synchronized R syncMatInfo(@RequestHeader(required = false) String appkey, |
| | |
| | | /** |
| | | * 备用1 |
| | | */ |
| | | @ApiModelProperty(value= "备用1") |
| | | private String standby1 = "1"; |
| | | @ApiModelProperty(value= "行内码 唯一标识") |
| | | @TableField("standby1") |
| | | private String standby1; |
| | | |
| | | /** |
| | | * 备用2 |
| | | */ |
| | | @ApiModelProperty(value= "备用2") |
| | | private String standby2 = "1"; |
| | | @ApiModelProperty(value= "托盘码") |
| | | @TableField("standby2") |
| | | private String standby2; |
| | | |
| | | /** |
| | | * 备用3 |
| | | */ |
| | | @ApiModelProperty(value= "备用3") |
| | | private String standby3 = "1"; |
| | | @ApiModelProperty(value= "计划跟踪号") |
| | | @TableField("standby3") |
| | | private String standby3; |
| | | |
| | | /** |
| | | * 备用1 |
| | | */ |
| | | @ApiModelProperty(value= "备用1") |
| | | @ApiModelProperty(value= "建议入库仓库") |
| | | @TableField("box_type1") |
| | | private String boxType1 = "1"; |
| | | private String boxType1; |
| | | |
| | | /** |
| | | * 备用2 |
| | | */ |
| | | @ApiModelProperty(value= "备用2") |
| | | @ApiModelProperty(value= "建议出库仓库") |
| | | @TableField("box_type2") |
| | | private String boxType2 = "1"; |
| | | private String boxType2; |
| | | |
| | | /** |
| | | * 备用3 |
| New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import com.core.common.Cools; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.Data; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Data |
| | | public class OpenOrderParam { |
| | | |
| | | /** |
| | | * 订单编码 |
| | | */ |
| | | private String orderNo; |
| | | |
| | | /** |
| | | * 单据内码 唯一标识 若没有可以补充订单编码 |
| | | */ |
| | | private String orderInternalCode; |
| | | |
| | | /** |
| | | * 订单类型 1 出库单 2 入库单 3 调拨单 |
| | | */ |
| | | private long orderType; |
| | | |
| | | /** |
| | | * 业务类型 枚举类型 采购入库单 销售退货单 销售出库单 调拨申请单 |
| | | */ |
| | | private String wkType; |
| | | |
| | | /** |
| | | * 业务日期 时间戳 精确到秒 |
| | | */ |
| | | private Date businessTime; |
| | | |
| | | /** |
| | | * 创建日期 |
| | | */ |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * 订单明细 |
| | | */ |
| | | private List<OrderItem> orderItems; |
| | | |
| | | /** |
| | | * 入/出库接驳站点 (出库时将物料出库后运输至该站点 入库时从该站点将物料运回库中) 需要则补充 否则不用补充 |
| | | */ |
| | | private String stationId; |
| | | |
| | | /** |
| | | * 操作类型 1 新增(默认) 2 修改 3 取消 |
| | | */ |
| | | private Integer operateType; |
| | | |
| | | @Data |
| | | @AllArgsConstructor |
| | | public static class OrderItem { |
| | | /** |
| | | * 行内码 唯一标识 |
| | | */ |
| | | private String lineId; |
| | | |
| | | /** |
| | | * 物料编码 |
| | | */ |
| | | private String matNr; |
| | | |
| | | /** |
| | | * 物料名称 |
| | | */ |
| | | private String makTx; |
| | | |
| | | /** |
| | | * 数量 小数点默认4位 |
| | | */ |
| | | private Double anfme; |
| | | |
| | | /** |
| | | * 规格 |
| | | */ |
| | | private String spec; |
| | | |
| | | /** |
| | | * 型号 |
| | | */ |
| | | private String model; |
| | | |
| | | /** |
| | | * 单位 |
| | | */ |
| | | private String unit; |
| | | |
| | | /** |
| | | * 批次号 |
| | | */ |
| | | private String batch; |
| | | |
| | | /** |
| | | * 托盘码 若订单类型为出库单时 则指定该托盘出库 |
| | | */ |
| | | private String palletId; |
| | | |
| | | /** |
| | | * 计划跟踪号 |
| | | */ |
| | | private String planNo; |
| | | |
| | | /** |
| | | * 建议入库仓库 |
| | | */ |
| | | private String targetWareHouseId; |
| | | |
| | | /** |
| | | * 建议出库仓库 |
| | | */ |
| | | private String sourceWareHouseId; |
| | | |
| | | public static boolean hasLineNumber(List<OrderItem> list, OrderItem orderItem) { |
| | | for (OrderItem item : list) { |
| | | if (item.getLineId().equals(orderItem.getLineId()) && item.getMatNr().equals(orderItem.getMatNr()) && Cools.eq(item.getModel(),orderItem.getModel()) && |
| | | Cools.eq(item.getBatch(),orderItem.getBatch()) && Cools.eq(item.getPalletId(),orderItem.getPalletId()) && Cools.eq(item.getPlanNo(),orderItem.getPlanNo()) && |
| | | Cools.eq(item.getSourceWareHouseId(),orderItem.getSourceWareHouseId()) && Cools.eq(item.getSpec(),orderItem.getSpec()) && Cools.eq(item.getUnit(),orderItem.getUnit()) && |
| | | Cools.eq(item.getTargetWareHouseId(),orderItem.getTargetWareHouseId())){ |
| | | return true; |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | public static OrderItem findLineNumber(List<OrderItem> list, String lineId, String matNr, String makTx, Double anfme, String spec, String model, String unit, String batch, String palletId, String planNo, String targetWarehouseId, String sourceWarehouseId) { |
| | | for (OrderItem orderItem : list) { |
| | | if (orderItem.getLineId().equals(lineId) && orderItem.getMatNr().equals(matNr) && Cools.eq(orderItem.getModel(),model) && |
| | | Cools.eq(orderItem.getBatch(),batch) && Cools.eq(orderItem.getPalletId(),palletId) && Cools.eq(orderItem.getPlanNo(),planNo) && |
| | | Cools.eq(orderItem.getSourceWareHouseId(),sourceWarehouseId) && Cools.eq(orderItem.getSpec(),spec) && Cools.eq(orderItem.getUnit(),unit) && |
| | | Cools.eq(orderItem.getTargetWareHouseId(),targetWarehouseId)){ |
| | | return orderItem; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | |
| | | boolean agvBindAndBin(String taskNo); |
| | | boolean taskArmOrderResult(OrderArmEndParam param); |
| | | List<PickWrkDetlListParam> getPickList(PdaPickListParam param); |
| | | |
| | | /** |
| | | * 入/出库通知单下发 |
| | | * @param param |
| | | */ |
| | | void orderCreate(OpenOrderParam param); |
| | | } |
| | |
| | | return result; |
| | | } |
| | | |
| | | /** |
| | | * 入/出库通知单下发 |
| | | * @param param |
| | | */ |
| | | @Override |
| | | public void orderCreate(OpenOrderParam param) { |
| | | Order order = orderService.selectByNo(param.getOrderNo()); |
| | | if (!Cools.isEmpty(order)){ |
| | | throw new CoolException(param.getOrderNo() + "订单已存在,请勿重复创建"); |
| | | } |
| | | Date now = new Date(); |
| | | order = new Order( |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | param.getOrderNo(), // 订单编码[非空] |
| | | DateUtils.convert(now), //单据日期 |
| | | param.getOrderType(), //订单类型 |
| | | null, //项目编号 |
| | | null, //项目名称 客户PO号 |
| | | null, //调拨项目编号 |
| | | null, //初始票据号 |
| | | null, //票据号 |
| | | null, //客户编号 |
| | | null, //客户 |
| | | param.getOrderInternalCode(), //单据内码 |
| | | param.getWkType(), //业务类型 |
| | | null, //合计金额 |
| | | null, //优惠率 |
| | | null, //优惠金额 |
| | | null, //销售或采购费用合计 |
| | | null, //实付金额 |
| | | null, //付款类型 1: 现金 2: 记账 |
| | | null, //业务员 |
| | | null, //结算天数 |
| | | null, //邮费支付类型 1: 在线支付 2: 货到付款 |
| | | null, //邮费 |
| | | param.getBusinessTime(), //业务日期 |
| | | param.getCreateTime(), //创建日期 |
| | | null, //物流名称 |
| | | null, //物流单号 |
| | | 1L, //订单状态 |
| | | 1, //状态 1: 正常 0: 禁用 |
| | | 9527L, //添加人员 |
| | | now, //添加时间 |
| | | 9527L, //修改人员 |
| | | now, //修改时间 |
| | | param.getStationId(), //入/出库接驳站点 |
| | | param.getOperateType() // 操作类型 1.新增 2.修改 3.取消 |
| | | ); |
| | | if (!orderService.insert(order)){ |
| | | throw new CoolException("保存订单主档失败,请联系管理员!"+order); |
| | | } |
| | | List<OpenOrderParam.OrderItem> list = new ArrayList<>(); |
| | | List<OpenOrderParam.OrderItem> orderItems = param.getOrderItems(); |
| | | for (OpenOrderParam.OrderItem item : orderItems){ |
| | | OpenOrderParam.OrderItem orderItem = new OpenOrderParam.OrderItem( |
| | | item.getLineId(), |
| | | item.getMatNr(), |
| | | item.getMakTx(), |
| | | item.getAnfme(), |
| | | item.getSpec(), |
| | | item.getModel(), |
| | | item.getUnit(), |
| | | item.getBatch(), |
| | | item.getPalletId(), |
| | | item.getPlanNo(), |
| | | item.getTargetWareHouseId(), |
| | | item.getSourceWareHouseId() |
| | | ); |
| | | if (OpenOrderParam.OrderItem.hasLineNumber(list,orderItem)){ |
| | | OpenOrderParam.OrderItem oi = OpenOrderParam.OrderItem.findLineNumber( |
| | | list, |
| | | item.getLineId(), |
| | | item.getMatNr(), |
| | | item.getMakTx(), |
| | | item.getAnfme(), |
| | | item.getSpec(), |
| | | item.getModel(), |
| | | item.getUnit(), |
| | | item.getBatch(), |
| | | item.getPalletId(), |
| | | item.getPlanNo(), |
| | | item.getTargetWareHouseId(), |
| | | item.getSourceWareHouseId() |
| | | ); |
| | | assert oi != null; |
| | | oi.setAnfme(oi.getAnfme() + orderItem.getAnfme()); |
| | | } else { |
| | | list.add(orderItem); |
| | | } |
| | | } |
| | | for (OpenOrderParam.OrderItem orderItem : list) { |
| | | Mat mat = matService.selectByMatnr(orderItem.getMatNr()); |
| | | if (Cools.isEmpty(mat)){ |
| | | throw new CoolException("订单明细中的商品编号不存在:" + orderItem.getMatNr()); |
| | | } |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setOrderNo(order.getOrderNo()); // 订单编号 |
| | | orderDetl.setOrderId(order.getId()); // 订单内码 |
| | | orderDetl.setStandby1(order.getTel()); // 行内码 唯一标识 |
| | | orderDetl.setAnfme(orderItem.getAnfme()); // 订单数量 |
| | | orderDetl.setBarcode(orderItem.getBatch()); // 批次 |
| | | orderDetl.setStandby2(orderItem.getPalletId()); // 托盘码 |
| | | orderDetl.setStandby3(orderItem.getPlanNo()); // 计划跟踪号 |
| | | orderDetl.setBoxType1(orderItem.getSourceWareHouseId()); // 建议入库仓库 |
| | | orderDetl.setBoxType2(orderItem.getTargetWareHouseId()); // 建议出库仓库 |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(now); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(now); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | // orderDetl.setPakinPakoutStatus(1); |
| | | if (!orderDetlService.insert(orderDetl)) { |
| | | throw new CoolException("保存订单明细失败,请联系管理员!"+orderDetl); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public List<AgvLocListDetlParam> getAgvLocList(AgvLocListParam param) { |