| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RestController |
| | | public class InventoryCheckOrderController extends BaseController { |
| | |
| | | |
| | | @RequestMapping("/inventoryCheckOrder/select/status/1") |
| | | @ManagerAuth() |
| | | public R availableTakeCheckSite(){ |
| | | public R availableTakeCheckSite() { |
| | | return R.ok().add(inventoryCheckOrderService.selectList(new EntityWrapper<InventoryCheckOrder>().eq("status", "1"))); |
| | | } |
| | | |
| | | |
| | | @RequestMapping(value = "/inventoryCheckOrder/nav/list/auth") |
| | | @ManagerAuth |
| | | public R navList(@RequestParam(required = false) String orderNo){ |
| | | public R navList(@RequestParam(required = false) String orderNo) { |
| | | EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>(); |
| | | if (!Cools.isEmpty(orderNo)) { |
| | | wrapper.like("order_no", orderNo); |
| | |
| | | return R.ok().add(orders); |
| | | } |
| | | |
| | | @RequestMapping(value = "/inventoryCheckOrder/nav/auth") |
| | | @ManagerAuth |
| | | public R navList() { |
| | | EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>(); |
| | | List<InventoryCheckOrder> orders = inventoryCheckOrderService.selectList(wrapper.eq("status", "1")); |
| | | List<String> locNoList = orders.stream().map(InventoryCheckOrder::getOrderNo).distinct().collect(Collectors.toList()); |
| | | return R.ok().add(locNoList); |
| | | } |
| | | |
| | | @RequestMapping(value = "/inventoryCheckOrder/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") String id) { |
| | |
| | | |
| | | @RequestMapping(value = "/inventoryCheckOrder/list/auth") |
| | | @ManagerAuth |
| | | public R list(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam(required = false)String orderByField, |
| | | @RequestParam(required = false)String orderByType, |
| | | @RequestParam(required = false)String condition, |
| | | @RequestParam Map<String, Object> param){ |
| | | public R list(@RequestParam(defaultValue = "1") Integer curr, |
| | | @RequestParam(defaultValue = "10") Integer limit, |
| | | @RequestParam(required = false) String orderByField, |
| | | @RequestParam(required = false) String orderByType, |
| | | @RequestParam(required = false) String condition, |
| | | @RequestParam Map<String, Object> param) { |
| | | EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>(); |
| | | excludeTrash(param); |
| | | convert(param, wrapper); |
| | | allLike(InventoryCheckOrder.class, param.keySet(), wrapper, condition); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | if (!Cools.isEmpty(orderByField)) { |
| | | wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); |
| | | } |
| | | return R.ok(inventoryCheckOrderService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | | private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ |
| | | for (Map.Entry<String, Object> entry : map.entrySet()){ |
| | | 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()); |
| | | if (val.contains(RANGE_TIME_LINK)){ |
| | | if (val.contains(RANGE_TIME_LINK)) { |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); |
| | | wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); |
| | |
| | | } |
| | | } |
| | | |
| | | @PostMapping (value = "/inventoryCheckOrder/add/auth") |
| | | @PostMapping(value = "/inventoryCheckOrder/add/auth") |
| | | @ManagerAuth |
| | | public R add(@RequestBody InventoryCheckOrder inventoryCheckOrder) { |
| | | String orderNo = inventoryCheckOrder.getOrderNo(); |
| | | long time = new Date().getTime(); |
| | | if (Cools.isEmpty(orderNo)) { |
| | | switch (inventoryCheckOrder.getArea()){ |
| | | switch (inventoryCheckOrder.getArea()) { |
| | | case "堆垛机": |
| | | orderNo = "DDJ"+time; |
| | | orderNo = "DDJ" + time; |
| | | break; |
| | | case "四向库": |
| | | orderNo = "SXK"+time; |
| | | orderNo = "SXK" + time; |
| | | break; |
| | | case "CTU": |
| | | orderNo = "CTU"+time; |
| | | orderNo = "CTU" + time; |
| | | break; |
| | | } |
| | | inventoryCheckOrder.setOrderNo(orderNo); |
| | |
| | | return R.parse("单据编号已经存在:" + orderNo); |
| | | } |
| | | |
| | | inventoryCheckOrder.setCreateBy(getUserId().toString()); |
| | | inventoryCheckOrder.setCreateBy(getUserId()); |
| | | inventoryCheckOrder.setCreateTime(new Date()); |
| | | inventoryCheckOrder.setStatus("1"); |
| | | |
| | |
| | | return R.ok(orderNo + "新增成功"); |
| | | } |
| | | |
| | | @RequestMapping(value = "/inventoryCheckOrder/update/auth") |
| | | @ManagerAuth |
| | | public R update(InventoryCheckOrder inventoryCheckOrder){ |
| | | if (Cools.isEmpty(inventoryCheckOrder) || null==inventoryCheckOrder.getId()){ |
| | | @RequestMapping(value = "/inventoryCheckOrder/update/auth") |
| | | @ManagerAuth |
| | | public R update(InventoryCheckOrder inventoryCheckOrder) { |
| | | if (Cools.isEmpty(inventoryCheckOrder) || null == inventoryCheckOrder.getId()) { |
| | | return R.error(); |
| | | } |
| | | inventoryCheckOrderService.updateById(inventoryCheckOrder); |
| | |
| | | |
| | | @RequestMapping(value = "/inventoryCheckOrder/delete/auth") |
| | | @ManagerAuth |
| | | public R delete(@RequestParam(value="ids[]") Long[] ids){ |
| | | for (Long id : ids){ |
| | | public R delete(@RequestParam(value = "ids[]") Long[] ids) { |
| | | for (Long id : ids) { |
| | | inventoryCheckOrderService.deleteById(id); |
| | | } |
| | | return R.ok(); |
| | |
| | | |
| | | @RequestMapping(value = "/inventoryCheckOrder/export/auth") |
| | | @ManagerAuth |
| | | public R export(@RequestBody JSONObject param){ |
| | | public R export(@RequestBody JSONObject param) { |
| | | EntityWrapper<InventoryCheckOrder> wrapper = new EntityWrapper<>(); |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | Map<String, Object> map = excludeTrash(param.getJSONObject("inventoryCheckOrder")); |
| | |
| | | wrapper.like("id", condition); |
| | | Page<InventoryCheckOrder> page = inventoryCheckOrderService.selectPage(new Page<>(0, 1000), wrapper); |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (InventoryCheckOrder inventoryCheckOrder : page.getRecords()){ |
| | | for (InventoryCheckOrder inventoryCheckOrder : page.getRecords()) { |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", inventoryCheckOrder.getId()); |
| | | map.put("value", inventoryCheckOrder.getId()); |
| | |
| | | @ManagerAuth |
| | | public R query(@RequestBody JSONObject param) { |
| | | Wrapper<InventoryCheckOrder> wrapper = new EntityWrapper<InventoryCheckOrder>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); |
| | | if (null != inventoryCheckOrderService.selectOne(wrapper)){ |
| | | if (null != inventoryCheckOrderService.selectOne(wrapper)) { |
| | | return R.parse(BaseRes.REPEAT).add(getComment(InventoryCheckOrder.class, String.valueOf(param.get("key")))); |
| | | } |
| | | return R.ok(); |
| | |
| | | */ |
| | | @ApiModelProperty(value= "创建人") |
| | | @TableField("create_by") |
| | | private String createBy; |
| | | private Long createBy; |
| | | |
| | | public InventoryCheckOrder() {} |
| | | |
| | | public InventoryCheckOrder(Integer id,String orderNo,String area,Date createTime,String createBy) { |
| | | public InventoryCheckOrder(Integer id,String orderNo,String area,Date createTime,Long createBy) { |
| | | this.id = id; |
| | | this.orderNo = orderNo; |
| | | this.area = area; |
| | |
| | | package com.zy.asrs.entity; |
| | | |
| | | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.core.common.Cools; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | |
| | | @Data |
| | | @TableName("man_Inventory_check_order_detl") |
| | |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | @TableField("order_no") |
| | | private String orderNo; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | private String matnr; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | private String maktx; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | private String batch; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | private Double anfme; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | private String area; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | private String status; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | @TableField("loc_no") |
| | | private String locNo; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | @TableField("check_anfme") |
| | | private Double checkAnfme; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @ApiModelProperty(value = "") |
| | | @TableField("io_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date ioTime; |
| | | |
| | | public InventoryCheckOrderDetl() {} |
| | | public InventoryCheckOrderDetl() { |
| | | } |
| | | |
| | | public InventoryCheckOrderDetl(String orderNo,String matnr,String maktx,String batch,Double anfme,String area,String locNo,Date ioTime) { |
| | | public InventoryCheckOrderDetl(String orderNo, String matnr, String maktx, String batch, Double anfme, String area, String locNo, Date ioTime) { |
| | | this.orderNo = orderNo; |
| | | this.matnr = matnr; |
| | | this.maktx = maktx; |
| | |
| | | // null // |
| | | // ); |
| | | |
| | | public String getIoTime$(){ |
| | | if (Cools.isEmpty(this.ioTime)){ |
| | | public String getIoTime$() { |
| | | if (Cools.isEmpty(this.ioTime)) { |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.ioTime); |
| | | } |
| | | |
| | | public String getStatus$(){ |
| | | if (Cools.isEmpty(this.status)){ |
| | | return ""; |
| | | public String getStatus$() { |
| | | if (Cools.isEmpty(this.status)) { |
| | | return "待盘"; |
| | | } |
| | | switch (this.status){ |
| | | switch (this.status) { |
| | | case "1": |
| | | return "待盘"; |
| | | case "2": |
| | |
| | | } |
| | | } |
| | | |
| | | public String getProfit$(){ |
| | | if (Cools.isEmpty(this.status) && !this.status.equals("1")){ |
| | | public String getProfit$() { |
| | | if (Cools.isEmpty(this.status) || !this.status.equals("1")) { |
| | | return "未盘点"; |
| | | } |
| | | if (Cools.isEmpty(this.anfme) || Cools.isEmpty(this.checkAnfme)){ |
| | | if (Cools.isEmpty(this.anfme) || Cools.isEmpty(this.checkAnfme)) { |
| | | return ""; |
| | | } |
| | | if (this.anfme > this.checkAnfme){ |
| | | if (this.anfme > this.checkAnfme) { |
| | | return "盘亏"; |
| | | }else if (this.anfme < this.checkAnfme){ |
| | | } else if (this.anfme < this.checkAnfme) { |
| | | return "盘盈"; |
| | | }else { |
| | | } else { |
| | | return "平"; |
| | | } |
| | | } |
| | |
| | | // 出站口 |
| | | private Integer outSite; |
| | | |
| | | // |
| | | private String checkId; |
| | | |
| | | // 物料编号集合 |
| | | private List<LocDetl> locDetls; |
| | | |
| | |
| | | * @param locDetls 待出库物料 |
| | | * @param ioType 入出库类型 |
| | | */ |
| | | void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId); |
| | | void stockOut(BasDevp staNo, List<LocDetlDto> locDetls, IoWorkType ioWorkType, Long userId,String checkOrderNo); |
| | | |
| | | void stockOut(BasDevp staNo, TaskDto taskDto, Long userId); |
| | | |
| | |
| | | private ManLocDetlMapper manLocDetlMapper; |
| | | |
| | | @Autowired |
| | | private InventoryCheckOrderService inventoryCheckOrderService; |
| | | |
| | | @Autowired |
| | | private InventoryCheckOrderDetlService inventoryCheckOrderDetlService; |
| | | |
| | | @Autowired |
| | | private AdjDetlService adjDetlService; |
| | | |
| | | @Resource |
| | |
| | | } |
| | | WaitPakin waitPakin = new WaitPakin(); |
| | | waitPakin.sync(mat); |
| | | waitPakin.setWeight(detlDto.getWeight()); |
| | | waitPakin.setBatch(detlDto.getBatch()); |
| | | waitPakin.setZpallet(param.getBarcode()); // 托盘码 |
| | | waitPakin.setIoStatus("N"); // 入出状态 |
| | |
| | | throw new CoolException(wrkMast.getWrkNo() + "盘点任务," + wrkDetl.getMatnr() + "商品," + wrkDetl.getBatch() + "批号修改数量失败"); |
| | | } |
| | | } |
| | | //如果已经拣料回库,就需要取locNo字段 |
| | | // String locNo =Cools.isEmpty(wrkMast.getLocNo())? wrkMast.getSourceLocNo():wrkMast.getLocNo(); |
| | | // inventoryCheckOrderDetlService.selectList(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no",locNo)) |
| | | iterator.remove(); |
| | | iterator1.remove(); |
| | | } |
| | |
| | | @Resource |
| | | private OrderPakoutService orderPakOutService; |
| | | |
| | | @Autowired |
| | | private InventoryCheckOrderService checkOrderService; |
| | | |
| | | @Autowired |
| | | private InventoryCheckOrderDetlService checkOrderDetlService; |
| | | |
| | | @Override |
| | | @Transactional |
| | | public String startupFullPutStore(FullStoreParam param, Long userId) { |
| | |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())); |
| | | if (locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D")) { |
| | | // 启动出库开始 101.出库 |
| | | stockOut(staNo, locDetlDtos, null, userId); |
| | | stockOut(staNo, locDetlDtos, null, userId, null); |
| | | } else { |
| | | throw new CoolException("所选库位存在状态不为F、D的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$()); |
| | | } |
| | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) { |
| | | public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId, String checkOrderNo) { |
| | | Date now = new Date(); |
| | | // 合并同类项 |
| | | Set<String> locNos = new HashSet<>(); |
| | |
| | | ioType = dto.isAll() ? 101 : 103; |
| | | } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) { |
| | | ioType = 107; |
| | | if (Cools.isEmpty(checkOrderNo)) { |
| | | checkOrderNo = DateUtils.createTimeStamp(); |
| | | InventoryCheckOrder checkOrder = new InventoryCheckOrder(); |
| | | checkOrder.setCreateBy(userId); |
| | | checkOrder.setStatus("1"); |
| | | checkOrder.setCreateTime(new Date()); |
| | | checkOrder.setOrderNo(checkOrderNo); |
| | | checkOrderService.insert(checkOrder); |
| | | } |
| | | } |
| | | assert ioType != null; |
| | | // 获取库位 |
| | |
| | | wrkDetl.setModiUser(userId); |
| | | if (!wrkDetlService.insert(wrkDetl)) { |
| | | throw new CoolException("保存工作档明细失败"); |
| | | } |
| | | if (ioType == 107) { |
| | | InventoryCheckOrderDetl checkOrderDetl = new InventoryCheckOrderDetl(); |
| | | checkOrderDetl.setOrderNo(checkOrderNo); |
| | | checkOrderDetl.setMatnr(detlDto.getLocDetl().getMatnr()); |
| | | checkOrderDetl.setMaktx(detlDto.getLocDetl().getMaktx()); |
| | | checkOrderDetl.setBatch(detlDto.getLocDetl().getBatch()); |
| | | checkOrderDetl.setLocNo(detlDto.getLocDetl().getLocNo()); |
| | | checkOrderDetl.setAnfme(detlDto.getLocDetl().getAnfme()); |
| | | checkOrderDetl.setStatus("0"); |
| | | checkOrderDetlService.insert(checkOrderDetl); |
| | | } |
| | | } |
| | | // 修改库位状态: F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 |
| | |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetlDtos.get(0).getLocDetl().getLocNo())); |
| | | if (locMast.getLocSts().equals("F")) { |
| | | // 启动出库开始 107.盘点出库 |
| | | stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId); |
| | | stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId, param.getCheckId()); |
| | | } else { |
| | | throw new CoolException("所选库位存在状态不为F的库位,库位号:" + locMast.getLocNo() + " 、当前状态:" + locMast.getLocSts() + "-" + locMast.getLocSts$()); |
| | | } |
| | |
| | | //// stockOutRe(wrkMast, wrkDetls); |
| | | // } |
| | | // } |
| | | |
| | | if (wrkMast.getIoType() == 107) { |
| | | checkOrderDetlService.delete(new EntityWrapper<InventoryCheckOrderDetl>().eq("loc_no", locNo)); |
| | | } |
| | | // 取消操作人员记录 |
| | | wrkMast.setManuType("手动取消"); |
| | | wrkMast.setModiUser(userId); |
| | |
| | | locMast.setLocSts("F"); |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMast.setIoTime(now); |
| | | //标记该库位已经拣料过 |
| | | locMast.setPdcType("pick"); |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | // exceptionHandle("拣料入库 ===>> 修改库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | |
| | | return FAIL.setMsg("盘点入库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | for (WrkDetl wrkDetl : wrkDetls57) { |
| | | if (!Cools.isEmpty(wrkDetl.getOrderNo())) { |
| | | // 更新订单完成数量 |
| | | OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); |
| | | if (!Cools.isEmpty(orderDetlPakout)) { |
| | | // if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | // orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | // wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { |
| | | if (!orderDetlPakoutService.increaseQtyByOrderNo(orderDetlPakout.getOrderNo(), orderDetlPakout.getMatnr(), orderDetlPakout.getBatch(), orderDetlPakout.getBrand(), orderDetlPakout.getStandby1(), orderDetlPakout.getStandby2(), orderDetlPakout.getStandby3(), orderDetlPakout.getBoxType1(), orderDetlPakout.getBoxType2(), orderDetlPakout.getBoxType3(), wrkDetl.getAnfme())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("盘点入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | } |
| | | } |
| | | // if (!Cools.isEmpty(wrkDetl.getOrderNo())) { |
| | | // // 更新订单完成数量 |
| | | // OrderDetlPakout orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); |
| | | // if (!Cools.isEmpty(orderDetlPakout)) { |
| | | //// if (!orderDetlPakoutService.increaseQtyByOrderNo(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), |
| | | //// orderDetlPakout.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | //// wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3(), wrkDetl.getAnfme())) { |
| | | // if (!orderDetlPakoutService.increaseQtyByOrderNo(orderDetlPakout.getOrderNo(), orderDetlPakout.getMatnr(), orderDetlPakout.getBatch(), orderDetlPakout.getBrand(), orderDetlPakout.getStandby1(), orderDetlPakout.getStandby2(), orderDetlPakout.getStandby3(), orderDetlPakout.getBoxType1(), orderDetlPakout.getBoxType2(), orderDetlPakout.getBoxType3(), wrkDetl.getAnfme())) { |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | // return FAIL.setMsg("盘点入库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | // 修改库位状态 Q ====>> F |
| | | if (locMast.getLocSts().equals("Q")) { |
| | |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(waitPakins.get(0)); |
| | | |
| | | //TODO 测试 |
| | | StartupDto dto = new StartupDto(); |
| | | dto.setCrnNo(1); |
| | | dto.setSourceStaNo(devpNo); |
| | | dto.setStaNo(103); |
| | | LocMast locMastxx = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O")); |
| | | dto.setLocNo(locMastxx.getLocNo()); |
| | | dto.setWorkNo(Integer.parseInt(Math.random() * 1000 + "")); |
| | | // StartupDto dto = new StartupDto(); |
| | | // dto.setCrnNo(1); |
| | | // dto.setSourceStaNo(devpNo); |
| | | // dto.setStaNo(103); |
| | | // LocMast locMastxx = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "O")); |
| | | // dto.setLocNo(locMastxx.getLocNo()); |
| | | // dto.setWorkNo(Integer.parseInt(Math.random() * 1000 + "")); |
| | | |
| | | //StartupDto dto = commonService.getLocNo( 1, devpNo,findLocNoAttributeVo, locTypeDto); |
| | | StartupDto dto = commonService.getLocNo( 1, devpNo,findLocNoAttributeVo, locTypeDto); |
| | | int workNo = dto.getWorkNo(); |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | |
| | | * |
| | | * @return |
| | | */ |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | public void execute4() { |
| | | List<String> strings = nccCkPddWmsService.selectPdd(); |
| | | for (String string : strings) { |
| | | List<NccCkPddWms> wmsFlag = nccCkPddWmsService.selectList(new EntityWrapper<NccCkPddWms>().eq("vbillcode", string).ne("wms_flag", 1).eq("FBILLFLAG", 4).eq("hdr", 0).eq("bdr", 0)); |
| | | ReturnT<String> returnT = planOrderHandler.start4(wmsFlag); |
| | | if (!returnT.isSuccess()) { |
| | | for (NccCkPddWms wms : wmsFlag) { |
| | | wms.setWmsMemo(returnT.getMsg()); |
| | | wms.setWmsFlag(0); |
| | | nccCkPddWmsService.updateById(wms); |
| | | } |
| | | log.error(returnT.getMsg()); |
| | | } |
| | | } |
| | | } |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | // public void execute4() { |
| | | // List<String> strings = nccCkPddWmsService.selectPdd(); |
| | | // for (String string : strings) { |
| | | // List<NccCkPddWms> wmsFlag = nccCkPddWmsService.selectList(new EntityWrapper<NccCkPddWms>().eq("vbillcode", string).ne("wms_flag", 1).eq("FBILLFLAG", 4).eq("hdr", 0).eq("bdr", 0)); |
| | | // ReturnT<String> returnT = planOrderHandler.start4(wmsFlag); |
| | | // if (!returnT.isSuccess()) { |
| | | // for (NccCkPddWms wms : wmsFlag) { |
| | | // wms.setWmsMemo(returnT.getMsg()); |
| | | // wms.setWmsFlag(0); |
| | | // nccCkPddWmsService.updateById(wms); |
| | | // } |
| | | // log.error(returnT.getMsg()); |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | |
| | | * |
| | | * @return |
| | | */ |
| | | @Transactional |
| | | public ReturnT<String> start4(List<NccCkPddWms> wmsFlag) { |
| | | try { |
| | | InventoryCheckOrder param = new InventoryCheckOrder(); |
| | | InventoryCheckOrderDetl checkOrderDetl = null; |
| | | for (NccCkPddWms nccScZkmxbWms : wmsFlag) { |
| | | log.info("NccCkPddWms数据:{}", JSONObject.toJSON(nccScZkmxbWms)); |
| | | Mat mat = matService.selectByMatnr(nccScZkmxbWms.getWlbm()); |
| | | if (Cools.isEmpty(mat)) { |
| | | throw new CoolException(nccScZkmxbWms.getWlbm() + "编号商品检索失败,请先添加商品"); |
| | | } |
| | | checkOrderDetl = new InventoryCheckOrderDetl(); |
| | | checkOrderDetl.setMatnr(nccScZkmxbWms.getWlbm()); |
| | | checkOrderDetl.setMaktx(mat.getMaktx()); |
| | | checkOrderDetl.setOrderNo(nccScZkmxbWms.getVbillcode()); |
| | | checkOrderDetl.setAnfme(nccScZkmxbWms.getZmzsl().doubleValue()); |
| | | checkOrderDetl.setBatch(nccScZkmxbWms.getVbatchcode()); |
| | | inventoryCheckOrderDetlService.insert(checkOrderDetl); |
| | | nccScZkmxbWms.setWmsFlag(1); |
| | | param.setOrderNo(nccScZkmxbWms.getVbillcode()); |
| | | param.setCreateBy(nccScZkmxbWms.getPdrmc()); |
| | | |
| | | } |
| | | param.setCreateTime(new Date()); |
| | | param.setStatus("1"); |
| | | inventoryCheckOrderService.insert(param); |
| | | nccCkPddWmsService.updateBatchById(wmsFlag); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | // @Transactional |
| | | // public ReturnT<String> start4(List<NccCkPddWms> wmsFlag) { |
| | | // try { |
| | | // InventoryCheckOrder param = new InventoryCheckOrder(); |
| | | // InventoryCheckOrderDetl checkOrderDetl = null; |
| | | // for (NccCkPddWms nccScZkmxbWms : wmsFlag) { |
| | | // log.info("NccCkPddWms数据:{}", JSONObject.toJSON(nccScZkmxbWms)); |
| | | // Mat mat = matService.selectByMatnr(nccScZkmxbWms.getWlbm()); |
| | | // if (Cools.isEmpty(mat)) { |
| | | // throw new CoolException(nccScZkmxbWms.getWlbm() + "编号商品检索失败,请先添加商品"); |
| | | // } |
| | | // checkOrderDetl = new InventoryCheckOrderDetl(); |
| | | // checkOrderDetl.setMatnr(nccScZkmxbWms.getWlbm()); |
| | | // checkOrderDetl.setMaktx(mat.getMaktx()); |
| | | // checkOrderDetl.setOrderNo(nccScZkmxbWms.getVbillcode()); |
| | | // checkOrderDetl.setAnfme(nccScZkmxbWms.getZmzsl().doubleValue()); |
| | | // checkOrderDetl.setBatch(nccScZkmxbWms.getVbatchcode()); |
| | | // inventoryCheckOrderDetlService.insert(checkOrderDetl); |
| | | // nccScZkmxbWms.setWmsFlag(1); |
| | | // param.setOrderNo(nccScZkmxbWms.getVbillcode()); |
| | | // param.setCreateBy(nccScZkmxbWms.getPdrmc()); |
| | | // |
| | | // } |
| | | // param.setCreateTime(new Date()); |
| | | // param.setStatus("1"); |
| | | // inventoryCheckOrderService.insert(param); |
| | | // nccCkPddWmsService.updateBatchById(wmsFlag); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | // return FAIL.setMsg(e.getMessage()); |
| | | // } |
| | | // return SUCCESS; |
| | | // } |
| | | |
| | | |
| | | /** |
| | |
| | | ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true} |
| | | ,{field: 'itemNum', align: 'center',title: '品项数', hide: true} |
| | | ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true} |
| | | ,{field: 'weight', align: 'center',title: '单箱净重', hide: true} |
| | | //,{field: 'weight', align: 'center',title: '单箱净重', hide: true} |
| | | ,{field: 'length', align: 'center',title: '单箱毛重', hide: true} |
| | | ,{field: 'volume', align: 'center',title: '单箱体积', hide: true} |
| | | ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true} |
| | |
| | | ,{field: 'orderNo', align: 'center',title: '单据编号', hide: false} |
| | | ,{field: 'batch', align: 'center',title: '批次'} |
| | | ,{field: 'anfme', align: 'center',title: '数量', hide: false} |
| | | ,{field: 'weight', align: 'center',title: '辅数量'} |
| | | ,{field: 'zpallet', align: 'center',title: '托盘条码', hide: false} |
| | | ,{field: 'specs', align: 'center',title: '规格', hide: false} |
| | | ,{field: 'model', align: 'center',title: '型号'} |
| | |
| | | ,{field: 'manuDate', align: 'center',title: '生产日期', hide: true} |
| | | ,{field: 'itemNum', align: 'center',title: '品项数', hide: true} |
| | | ,{field: 'safeQty', align: 'center',title: '安全库存量', hide: true} |
| | | ,{field: 'weight', align: 'center',title: '辅数量'} |
| | | ,{field: 'length', align: 'center',title: '单箱毛重', hide: true} |
| | | ,{field: 'volume', align: 'center',title: '单箱体积', hide: true} |
| | | ,{field: 'threeCode', align: 'center',title: '箱子尺寸', hide: true} |
| | |
| | | tableMerge.render(this); |
| | | limit(); |
| | | getOutBound(); |
| | | getCheckOrder(); |
| | | } |
| | | }); |
| | | |
| | |
| | | layer.msg('请先添加盘点库存', {icon: 2}); |
| | | } else { |
| | | var staNo = $("#staNoSelect").val(); |
| | | var checkId = $("#checkIdSelect").val(); |
| | | if (staNo === "" || staNo === null){ |
| | | layer.msg("请选择盘点站", {icon: 2}); |
| | | return; |
| | | } |
| | | let param = { |
| | | outSite: staNo, |
| | | checkId: checkId, |
| | | locDetls: locDetlData |
| | | } |
| | | $.ajax({ |
| | |
| | | }) |
| | | } |
| | | |
| | | |
| | | // 获取盘点单 |
| | | function getCheckOrder(){ |
| | | $.ajax({ |
| | | url: baseUrl+"/inventoryCheckOrder/nav/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'POST', |
| | | async: false, |
| | | success: function (res) { |
| | | if (res.code === 200){ |
| | | var tpl = $("#takeCheckSelectTemplate").html(); |
| | | var template = Handlebars.compile(tpl); |
| | | var html = template(res); |
| | | $('#checkIdSelect').append(html); |
| | | form.render('select'); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | }else { |
| | | layer.msg(res.msg) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | |
| | | $(document).on('click','#mat-query', function () { |
| | | let loadIndex = layer.msg('请求中...', {icon: 16, shade: 0.01, time: false}); |
| | | locDetlLayerIdx = layer.open({ |
| | |
| | | <!-- </div>--> |
| | | <!-- <button class="layui-btn layui-btn-sm layui-btn-danger btn-pakoutPreview" id="btn-pakoutPreview" lay-event="submitERP"><i class="layui-icon"></i>提交ERP</button>--> |
| | | <button id="submitERP" class="layui-btn icon-btn btn-add" lay-event="submitERP"><i class="layui-icon"></i>提交ERP</button> |
| | | <button id="showFormBtn" class="layui-btn icon-btn" lay-submit> |
| | | <i class="layui-icon"></i>添加单据 |
| | | </button> |
| | | <!-- <button id="showFormBtn" class="layui-btn icon-btn" lay-submit>--> |
| | | <!-- <i class="layui-icon"></i>添加单据--> |
| | | <!-- </button>--> |
| | | </script> |
| | | |
| | | <!-- 行工具栏 --> |
| | |
| | | <select id="staNoSelect" lay-verify="required"> |
| | | <option value="">请选择站点</option> |
| | | </select> |
| | | |
| | | <!-- 1.选择盘点单 --> |
| | | <span id="checkId">盘点单:</span> |
| | | <select id="checkIdSelect" lay-verify="required"> |
| | | <option value="">请选择盘点单</option> |
| | | </select> |
| | | <!-- 2.启动出库 --> |
| | | <button class="layui-btn layui-btn-lg" id="btn-outbound" lay-event="outbound">盘点出库</button> |
| | | </div> |
| | |
| | | {{/each}} |
| | | </script> |
| | | |
| | | <script type="text/template" id="takeCheckSelectTemplate"> |
| | | {{#each data}} |
| | | <option value="{{this}}">{{this}}</option> |
| | | {{/each}} |
| | | </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> |
| | | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> |