| | |
| | | @ApiModelProperty("作业类型,in: 入库, out:出库") |
| | | private String type; |
| | | |
| | | @ApiModelProperty("是否余料") |
| | | private Integer isSuplus; |
| | | |
| | | } |
| | |
| | | import com.zy.asrs.entity.BasDevice; |
| | | import com.zy.asrs.entity.LocAroundBind; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.service.BasDeviceService; |
| | | import com.zy.asrs.service.LocAroundBindService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.constant.MesConstant; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | | private WorkService workService; |
| | | |
| | | /** |
| | | * 通知WCS锁定库位,及禁止当前库位的一切操作 |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public R backLocs(WorkTaskParams params) { |
| | | if (Objects.isNull(params.getTaskNo())) { |
| | | if (Objects.isNull(params.getWrkNo())) { |
| | | throw new CoolException("工作号不能为空!!"); |
| | | } |
| | | String wrkCode = params.getTaskNo(); |
| | | if (wrkCode.contains("-1")) { |
| | | throw new CoolException("配对任务编码错误,请检查后重新上传!!"); |
| | | } |
| | | |
| | | WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_code", params.getTaskNo())); |
| | | |
| | | // String wrkCode = params.getTaskNo(); |
| | | // if (wrkCode.contains("-1")) { |
| | | // throw new CoolException("配对任务编码错误,请检查后重新上传!!"); |
| | | // } |
| | | WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", params.getWrkNo())); |
| | | if (Objects.isNull(mast)) { |
| | | throw new CoolException("任务不存在!!"); |
| | | } |
| | | if (!mast.getWrkSts().equals(103L)) { |
| | | throw new CoolException("当前任务并非余料出库任务!!"); |
| | | } |
| | | mast.setWrkSts(53L); |
| | | if (!wrkMastService.updateById(mast)) { |
| | | throw new CoolException("任务状态更新失败!!"); |
| | | } |
| | | // if (!mast.getWrkSts().equals(103L)) { |
| | | // throw new CoolException("当前任务并非余料出库任务!!"); |
| | | // } |
| | | // if (params.getIsSuplus() == 1) { |
| | | // mast.setIsSuplus(1); |
| | | // } |
| | | // |
| | | // if (!wrkMastService.updateById(mast)) { |
| | | // throw new CoolException("任务状态更新失败!!"); |
| | | // } |
| | | workService.backLocOperation(mast.getWrkNo() + "", mast.getAppeUser()); |
| | | |
| | | return R.ok("接收成功,执行回库中..."); |
| | | } |
| | |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.*; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.Mat; |
| | | import com.zy.asrs.entity.MatPrint; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.BatchMatsUpdateParam; |
| | | import com.zy.asrs.entity.param.EmptyPlateOutParam; |
| | | import com.zy.asrs.entity.result.KeyValueVo; |
| | | import com.zy.asrs.service.LocDetlService; |
| | | import com.zy.asrs.service.MatService; |
| | | import com.zy.asrs.service.WrkDetlService; |
| | | import com.zy.asrs.utils.MatExcelListener; |
| | | import com.zy.common.CodeRes; |
| | | import com.zy.common.config.AdminInterceptor; |
| | |
| | | private MatService matService; |
| | | @Autowired |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | @Autowired |
| | | private LocDetlService locDetlService; |
| | | @Autowired |
| | | private WrkDetlService wrkDetlService; |
| | | |
| | | |
| | | @RequestMapping(value = "/mat/auto/matnr/auth") |
| | | public R autoMatnr() { |
| | |
| | | return R.error(); |
| | | } |
| | | for (Mat entity : list) { |
| | | List<WrkDetl> matnr = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("matnr", entity.getMatnr())); |
| | | if (Cools.isEmpty(matnr)) { |
| | | throw new CoolException("删除失败,当前物料还有执行中的任务档明细,请联系管理员!!"); |
| | | } |
| | | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("matnr", entity.getMatnr())); |
| | | if (Cools.isEmpty(locDetls)) { |
| | | throw new CoolException("删除失败,当前物料还有库存明细存在立库中,请联系管理员!!"); |
| | | } |
| | | if (!matService.delete(new EntityWrapper<>(entity))) { |
| | | throw new CoolException("删除失败,请联系管理员"); |
| | | } |
| | |
| | | workService.pickWrkMast(workNo, getUserId()); |
| | | return R.ok("工作档已拣料"); |
| | | } else if (type == 4) { |
| | | workService.backLocOperation(workNo, getUserId()); |
| | | workService.updateWrkIsSuplus(workNo, getUserId(), type); |
| | | // workService.backLocOperation(workNo, getUserId()); |
| | | } else if (type == 5) { |
| | | workService.updateWrkIsSuplus(workNo, getUserId(), type); |
| | | |
| | | } |
| | | return R.ok(); |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableField; |
| | | |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.asrs.service.BasLocStsService; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | |
| | | @TableField("is_default") |
| | | private Integer isDefault; |
| | | |
| | | @ApiModelProperty("工位状态") |
| | | @TableField("loc_type") |
| | | private String locType; |
| | | |
| | | public LocAroundBind() {} |
| | | |
| | | public LocAroundBind(Long devId,String devNo,Long bLocId,String bLocNo) { |
| | |
| | | |
| | | public String getDef$() { |
| | | if (this.isDefault == 0) { |
| | | return "否"; |
| | | return "备用"; |
| | | } else { |
| | | return "是"; |
| | | return "默认"; |
| | | } |
| | | } |
| | | |
| | | public String getLocType$() { |
| | | if (this.locType == null) { |
| | | return null; |
| | | } |
| | | BasLocStsService service = SpringUtils.getBean(BasLocStsService.class); |
| | | BasLocSts basLocSts = service.selectById(this.locType); |
| | | if (!Cools.isEmpty(basLocSts)){ |
| | | return String.valueOf(basLocSts.getLocDesc()); |
| | | } |
| | | return null; |
| | | |
| | | } |
| | | |
| | | // LocAroundBind locAroundBind = new LocAroundBind( |
| | | // null, // 机台ID[非空] |
| | | // null, // 机台号[非空] |
| | |
| | | * 安全库存量 |
| | | */ |
| | | @ApiModelProperty(value= "安全库存量") |
| | | @ExcelProperty(value = "安全库存量") |
| | | @ExcelProperty(value = "归零阀值") |
| | | @TableField("safe_qty") |
| | | private Double safeQty; |
| | | |
| | |
| | | import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.baomidou.mybatisplus.enums.FieldStrategy; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.system.entity.User; |
| | | import com.zy.system.service.UserService; |
| | |
| | | private String taskType; |
| | | |
| | | @ApiModelProperty("任务编码") |
| | | @TableField("wrk_code") |
| | | @TableField(value = "wrk_code", strategy = FieldStrategy.IGNORED) |
| | | private String wrkCode; |
| | | |
| | | @ApiModelProperty(value= "") |
| | |
| | | @TableField("ctn_no") |
| | | private String ctnNo; |
| | | |
| | | @ApiModelProperty("是否余料") |
| | | @TableField("is_suplus") |
| | | private Integer isSuplus; |
| | | |
| | | /** |
| | | * 满板 |
| | | */ |
| | |
| | | } |
| | | } |
| | | |
| | | public String getIsSuplus$(){ |
| | | if (Cools.isEmpty(this.isSuplus)){return null;} |
| | | if (isSuplus == 0) { |
| | | return "空板回库"; |
| | | } else { |
| | | return "余料回库"; |
| | | } |
| | | } |
| | | |
| | | |
| | | public String getStaNo$(){ |
| | | BasDevpService service = SpringUtils.getBean(BasDevpService.class); |
| | |
| | | |
| | | void turnMatLocDetl(EmptyPlateOutParam param, Long userId); |
| | | |
| | | /** |
| | | * 修改任务档空余回库 |
| | | * |
| | | * @param workNo |
| | | * @param userId |
| | | * @param type |
| | | * @author Ryan |
| | | * @date 2026/1/14 15:06 |
| | | */ |
| | | void updateWrkIsSuplus(String workNo, Long userId, Integer type); |
| | | } |
| | |
| | | import com.zy.asrs.enums.LocStsType; |
| | | import com.zy.asrs.mapper.LocMastMapper; |
| | | import com.zy.asrs.entity.result.FindLocNoAttributeVo; |
| | | import com.zy.asrs.mapper.WrkMastMapper; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.utils.OrderInAndOutUtil; |
| | | import com.zy.asrs.utils.Utils; |
| | |
| | | import com.zy.common.properties.SlaveProperties; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.web.WcsController; |
| | | import io.swagger.models.auth.In; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.codec.binary.StringUtils; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | |
| | | private OrderPakoutService orderPakOutService; |
| | | @Autowired |
| | | private BasDeviceServiceImpl basDeviceService; |
| | | @Autowired |
| | | private WrkMastMapper wrkMastMapper; |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | String wrkCode = null; |
| | | if (!Objects.isNull(deviceNo)) { |
| | | wrkCode = workNo + "-1"; |
| | | ioType = 101; |
| | | // ioType = 101; |
| | | generateOutStock(taskDto, userId, workNo, wrkCode, now, ioType, locMast, staDesc, deviceNo); |
| | | } else { |
| | | generateOutStock(taskDto, userId, workNo, wrkCode, now, ioType, locMast, staDesc, null); |
| | |
| | | wrkDetl.setZpallet(wrkMast.getBarcode()); |
| | | wrkDetl.setIoTime(now); |
| | | wrkDetl.setWrkNo(workNo); |
| | | wrkDetl.setBrand(orderDetl.getBrand()); |
| | | wrkDetl.setModel(orderDetl.getModel()); |
| | | wrkDetl.setUnit(orderDetl.getUnit()); |
| | | wrkDetl.setStandby1(locDto.getStandby1()); |
| | | wrkDetl.setBatch(locDto.getBatch()); |
| | | wrkDetl.setOrderNo(locDto.getOrderNo()); |
| | | wrkDetl.setAnfme(locDto.getAnfme()); // 数量 |
| | | // LocDetl locDel = locDetlService.selectOne(new EntityWrapper<LocDetl>() |
| | | // .eq("loc_no", locDto.getLocNo()) |
| | | // .eq("batch", locDto.getBatch()) |
| | | // .eq(!Objects.isNull(locDto.getBarcode()), "barcode", locDto.getBarcode()) |
| | | // .eq("matnr", locDto.getMatnr())); |
| | | // if (Objects.isNull(locDel)) { |
| | | // throw new CoolException("数据错误,库存明细不存在!!"); |
| | | // } |
| | | wrkDetl.setStandby1(locDto.getStandby1()); |
| | | LocDetl locDel = locDetlService.selectOne(new EntityWrapper<LocDetl>() |
| | | .eq("loc_no", locDto.getLocNo()) |
| | | .eq("batch", locDto.getBatch()) |
| | | .eq(!Objects.isNull(locDto.getBarcode()), "barcode", locDto.getBarcode()) |
| | | .eq("matnr", locDto.getMatnr())); |
| | | if (Objects.isNull(locDel)) { |
| | | throw new CoolException("数据错误,库存明细不存在!!"); |
| | | } |
| | | wrkDetl.setBrand(locDel.getBrand()); |
| | | wrkDetl.setModel(locDel.getModel()); |
| | | wrkDetl.setUnit(locDel.getUnit()); |
| | | wrkDetl.setSpecs(locDel.getSpecs()); |
| | | wrkDetl.setBatch(locDel.getBatch()); |
| | | // wrkDetl.setAnfme(locDel.getAnfme()); |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setAppeUser(userId); |
| | |
| | | locMast.setLocSts("F"); |
| | | } |
| | | } |
| | | locMast.setModiUser(userId); |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("更新库位状态失败"); |
| | | } |
| | | // locMast.setModiUser(userId); |
| | | // locMast.setModiTime(now); |
| | | // if (!locMastService.updateById(locMast)) { |
| | | // throw new CoolException("更新库位状态失败"); |
| | | // } |
| | | } |
| | | |
| | | |
| | |
| | | locMast.setModiTime(now); |
| | | locMast.setModiUser(userId); |
| | | locMastService.updateById(locMast); |
| | | } |
| | | |
| | | if (!Objects.isNull(wrkMast.getWrkCode())) { |
| | | LocAroundBind aroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getSourceLocNo())); |
| | | if (!Objects.isNull(aroundBind)) { |
| | | aroundBind.setLocType(LocStsType.LOC_STS_TYPE_O.type); |
| | | if (!locAroundBindService.updateById(aroundBind)) { |
| | | throw new CoolException("工位状态修改失败!!"); |
| | | } |
| | | } |
| | | } |
| | | // 出库取消(修改源库位) |
| | | } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 14) { |
| | |
| | | Integer ioType = wrkMast.getIoType() - 50; |
| | | Integer wokNo; |
| | | // 入出库类型判断 |
| | | if (wrkMast.getIoType() == 103) { |
| | | ioType = 1; |
| | | } else if (wrkMast.getIoType() == 101) { |
| | | // if (wrkMast.getIoType() == 103) { |
| | | // ioType = 1; |
| | | // } else if (wrkMast.getIoType() == 101) { |
| | | // ioType = 10; |
| | | // } |
| | | if (Objects.isNull(wrkMast.getIsSuplus())) { |
| | | throw new CoolException("回库类型不能为空!!"); |
| | | } |
| | | |
| | | if (wrkMast.getIsSuplus() == 0) { |
| | | ioType = 10; |
| | | } else { |
| | | ioType = 1; |
| | | } |
| | | wokNo = commonService.getWorkNo(0); |
| | | |
| | | // 获取目标站 |
| | | Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() |
| | | .eq("type_no", ioType) |
| | |
| | | if (Cools.isEmpty(staDesc)) { |
| | | throw new CoolException("入库路径不存在"); |
| | | } |
| | | |
| | | int count = wrkMastService.selectCount(new EntityWrapper<WrkMast>().eq("barcode", wrkMast.getBarcode())); |
| | | if (count >= 2) { |
| | | throw new CoolException("任务档已生成,不可以重复生成相同的子任务!!"); |
| | | } |
| | | |
| | | WrkDetl detl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | LocDetl locDetl = new LocDetl(); |
| | | BeanUtils.copyProperties(detl, locDetl); |
| | | FindLocNoAttributeVo findLocNoAttributeVo = new FindLocNoAttributeVo(locDetl); |
| | | |
| | | // 源站点状态检测 |
| | | BasDevp sourceStaNo = basDevpService.checkSiteStatus(Integer.parseInt(wrkMast.getStaNo()), false); |
| | | sourceStaNo.setLocType1((short) 1); |
| | | LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); |
| | | StartupDto locNo = commonService.getLocNo(1, Integer.parseInt(wrkMast.getStaNo()), findLocNoAttributeVo, locTypeDto); |
| | | |
| | | Date now = new Date(); |
| | | // 堆垛机站点(目标站) |
| | | Integer staNo = staDesc.getCrnStn(); |
| | |
| | | mast.setWrkSts(2L); // 工作状态: 2.设备上走 |
| | | mast.setSourceStaNo(wrkMast.getStaNo()); // 源站 |
| | | mast.setStaNo(staNo + ""); // 目标站 |
| | | //判断是否为领料出库 |
| | | if (Objects.isNull(mast.getWrkCode())) { |
| | | mast.setLocNo(mast.getSourceLocNo()); // 目标库位 = 出库时的源库位 |
| | | } |
| | | // mast.setSourceLocNo(""); // 源库位清空 |
| | | mast.setSourceLocNo(wrkMast.getLocNo()); |
| | | mast.setLocNo(locNo.getLocNo()); // 目标库位 = 出库时的源库位 |
| | | mast.setModiTime(now); |
| | | mast.setModiUser(userId); |
| | | if (!wrkMastService.insert(mast)) { |
| | |
| | | if (Cools.isEmpty(wrkDetls)) { |
| | | throw new CoolException("数据错误,任务档明细不存在 !!"); |
| | | } |
| | | wrkDetls.forEach(wrkDetl -> { |
| | | WrkDetl wrkDetl1 = new WrkDetl(); |
| | | BeanUtils.copyProperties(wrkDetl, wrkDetl1); |
| | | wrkDetl1.setWrkNo(wokNo); |
| | | if (!wrkDetlService.insert(wrkDetl1)) { |
| | | throw new CoolException("任务档明细保存失败!!"); |
| | | |
| | | // 修改库位状态 Q.拣料/盘点/并板再入库 |
| | | LocMast inLoc = locMastService.selectById(mast.getLocNo()); |
| | | inLoc.setLocSts(LocStsType.LOC_STS_TYPE_S.type); |
| | | inLoc.setModiTime(now); |
| | | inLoc.setModiUser(userId); |
| | | if (!locMastService.updateById(inLoc)) { |
| | | throw new CoolException("修改库位状态失败"); |
| | | } |
| | | |
| | | LocAroundBind aroundBind = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", mast.getSourceLocNo())); |
| | | if (!Objects.isNull(aroundBind)) { |
| | | aroundBind.setLocType(LocStsType.LOC_STS_TYPE_R.type); |
| | | if (!locAroundBindService.updateById(aroundBind)) { |
| | | throw new CoolException("工位状态修改失败!!"); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | //工作类型为1时,才添加明细 |
| | | if (ioType == 1) { |
| | | wrkDetls.forEach(wrkDetl -> { |
| | | WrkDetl wrkDetl1 = new WrkDetl(); |
| | | BeanUtils.copyProperties(wrkDetl, wrkDetl1); |
| | | wrkDetl1.setWrkNo(wokNo); |
| | | if (!wrkDetlService.insert(wrkDetl1)) { |
| | | throw new CoolException("任务档明细保存失败!!"); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | // 修改库位状态 Q.拣料/盘点/并板再入库 |
| | | LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); |
| | | locMast.setLocSts("Q"); |
| | | locMast.setLocSts("R"); |
| | | locMast.setModiTime(now); |
| | | locMast.setModiUser(userId); |
| | | if (!locMastService.updateById(locMast)) { |
| | | throw new CoolException("修改库位状态失败"); |
| | | } |
| | | wrkMast.setWrkCode(null); |
| | | |
| | | if (!wrkMastService.updateById(wrkMast)) { |
| | | throw new CoolException("任务档更新失败!!"); |
| | | } |
| | | |
| | | // wrkMast.setWrkCode(null); |
| | | // |
| | | // if (!wrkMastService.updateById(wrkMast)) { |
| | | // throw new CoolException("任务档更新失败!!"); |
| | | // } |
| | | } |
| | | |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 修改任务档余料回库状态 |
| | | * |
| | | * @param workNo |
| | | * @param userId |
| | | * @param type |
| | | * @author Ryan |
| | | * @date 2026/1/14 15:06 |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void updateWrkIsSuplus(String workNo, Long userId, Integer type) { |
| | | WrkMast mast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", workNo)); |
| | | if (Objects.isNull(mast)) { |
| | | throw new CoolException("任务档不存在!!"); |
| | | } |
| | | if (mast.getWrkSts() != 15) { |
| | | throw new CoolException("当前任务状态,无法执行此操作!"); |
| | | } |
| | | if (type == 4) { |
| | | mast.setIsSuplus(0); |
| | | } else if (type == 5) { |
| | | mast.setIsSuplus(1); |
| | | } |
| | | if (!wrkMastService.updateById(mast)) { |
| | | throw new CoolException("任务档修改失败!!"); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 生成出库匹配的工作站入库任务 |
| | | * |
| | |
| | | private TaskDetlService taskDetlService; |
| | | @Autowired |
| | | private BasStationServiceImpl basStationService; |
| | | @Autowired |
| | | private WorkService workService; |
| | | |
| | | public ReturnT<String> start(WrkMast wrkMast) { |
| | | // 4.入库完成 |
| | |
| | | break; |
| | | // 库位移转 |
| | | case 11: |
| | | // 默认目标库位是空板 |
| | | String locSts = "D"; |
| | | // 库位移转判断是否为空板移转 |
| | | if (wrkMast.getEmptyMk().equals("N")) { |
| | | locSts = "F"; |
| | | // 转移库存明细数据: 库存号 由工作档源库位变为目标库位 |
| | | if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { |
| | | // exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | // 修改源库位状态 ==> O |
| | | LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); |
| | | if (null != sourceLoc) { |
| | | sourceLoc.setBarcode(""); |
| | | sourceLoc.setLocSts("O"); |
| | | sourceLoc.setModiTime(now); |
| | | sourceLoc.setIoTime(now); |
| | | if (!locMastService.updateById(sourceLoc)) { |
| | | // exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | // 修改目标库位状态 ==> .locSts |
| | | locMast.setLocSts(locSts); |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMast.setIoTime(now); |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | // exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | // // 默认目标库位是空板 |
| | | // String locSts = "D"; |
| | | // // 库位移转判断是否为空板移转 |
| | | // if (wrkMast.getEmptyMk().equals("N")) { |
| | | // locSts = "F"; |
| | | // // 转移库存明细数据: 库存号 由工作档源库位变为目标库位 |
| | | // if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { |
| | | //// exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | // return FAIL.setMsg("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | // } |
| | | // } |
| | | // // 修改源库位状态 ==> O |
| | | // LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); |
| | | // if (null != sourceLoc) { |
| | | // sourceLoc.setBarcode(""); |
| | | // sourceLoc.setLocSts("O"); |
| | | // sourceLoc.setModiTime(now); |
| | | // sourceLoc.setIoTime(now); |
| | | // if (!locMastService.updateById(sourceLoc)) { |
| | | //// exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | // return FAIL.setMsg("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | // } |
| | | // } |
| | | // // 修改目标库位状态 ==> .locSts |
| | | // locMast.setLocSts(locSts); |
| | | // locMast.setBarcode(wrkMast.getBarcode()); |
| | | // locMast.setIoTime(now); |
| | | // locMast.setModiTime(now); |
| | | // if (!locMastService.updateById(locMast)) { |
| | | //// exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | // return FAIL.setMsg("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | // } |
| | | movLoc(wrkMast); |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | return SUCCESS; |
| | | } |
| | | |
| | | |
| | | public void movLoc(WrkMast wrkMast) { |
| | | LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); |
| | | Date now = new Date(); |
| | | // 默认目标库位是空板 |
| | | String locSts = "D"; |
| | | // 库位移转判断是否为空板移转 |
| | | if (wrkMast.getEmptyMk().equals("N")) { |
| | | locSts = "F"; |
| | | // 转移库存明细数据: 库存号 由工作档源库位变为目标库位 |
| | | if (!locDetlService.updateLocNo(wrkMast.getLocNo(), wrkMast.getSourceLocNo())) { |
| | | // exceptionHandle("库位移转 ===>> 转移库存明细数据失败;[源库位={0}],[目标库位={1}]", wrkMast.getSourceLocNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | log.info("库位移转 ===>> 转移库存明细数据失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | // 修改源库位状态 ==> O |
| | | LocMast sourceLoc = locMastService.selectById(wrkMast.getSourceLocNo()); |
| | | if (null != sourceLoc) { |
| | | sourceLoc.setBarcode(""); |
| | | sourceLoc.setLocSts("O"); |
| | | sourceLoc.setModiTime(now); |
| | | sourceLoc.setIoTime(now); |
| | | if (!locMastService.updateById(sourceLoc)) { |
| | | // exceptionHandle("库位移转 ===>> 修改源库位状态失败;[workNo={0}],[sourceLoc={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | log.info("库位移转 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | // 修改目标库位状态 ==> .locSts |
| | | locMast.setLocSts(locSts); |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMast.setIoTime(now); |
| | | locMast.setModiTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | // exceptionHandle("库位移转 ===>> 修改目标库位状态失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | log.info("库位移转 ===>> 修改目标库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | | } |
| | | } |
| | | |
| | | |
| | | private ReturnT<String> doOut(WrkMast wrkMast) { |
| | | Date now = new Date(); |
| | | LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); |
| | |
| | | switch (wrkMast.getIoType()) { |
| | | // 全板出库 |
| | | case 101: |
| | | //如果wrkCode不为空,表示是工作台叫货,如果不为空走移库逻辑 |
| | | //todo 判断如果库位所属不是同一个堆垛机号,需再生成一个新的入库任务 |
| | | if (!Objects.isNull(wrkMast.getWrkCode())) { |
| | | //TODO 移库 |
| | | // workService.locMove(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), wrkMast.getAppeUser()); |
| | | movLoc(wrkMast); |
| | | } else { |
| | | // // 出库确认信号位 |
| | | // if (Cools.isEmpty(wrkMast.getInvWh()) || wrkMast.getInvWh().equals("N")) { |
| | | // return SUCCESS; |
| | | // } |
| | | // 根据工作号,查询工作明细档 |
| | | List<WrkDetl> wrkDetls101 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | if (wrkDetls101.isEmpty()) { |
| | | // 根据工作号,查询工作明细档 |
| | | List<WrkDetl> wrkDetls101 = wrkDetlService.selectList(new EntityWrapper<WrkDetl>().eq("wrk_no", wrkMast.getWrkNo())); |
| | | if (wrkDetls101.isEmpty()) { |
| | | // exceptionHandle("全板出库 ===>> 工作明细档为空;[workNo={0}]", wrkMast.getWrkNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | for (WrkDetl wrkDetl : wrkDetls101) { |
| | | // 更新订单完成数量 |
| | | 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 (orderDetlPakout == null) { |
| | | orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); |
| | | } |
| | | try { |
| | | 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())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | } |
| | | } catch (Exception ignore) { |
| | | |
| | | } |
| | | } |
| | | // 删除工作档源库位的库存明细 |
| | | if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 删除库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | // 修改源库位状态 R ===>> O |
| | | if (locMast.getLocSts().equals("R")) { |
| | | locMast.setLocSts("O"); |
| | | locMast.setBarcode(""); |
| | | locMast.setModiTime(now); |
| | | locMast.setIoTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | return FAIL.setMsg("全板出库 ===>> 工作明细档为空; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | for (WrkDetl wrkDetl : wrkDetls101) { |
| | | // 更新订单完成数量 |
| | | 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 (orderDetlPakout == null) { |
| | | orderDetlPakout = orderDetlPakoutService.selectItem(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getBrand(), wrkDetl.getStandby1(), wrkDetl.getStandby2(), wrkDetl.getStandby3(), |
| | | wrkDetl.getBoxType1(), wrkDetl.getBoxType2(), wrkDetl.getBoxType3()); |
| | | } |
| | | try { |
| | | 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())) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 更新订单完成数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | } |
| | | } catch (Exception ignore) { |
| | | |
| | | } |
| | | } |
| | | // 删除工作档源库位的库存明细 |
| | | if (!locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo()))) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 删除库存明细失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | // 修改源库位状态 R ===>> O |
| | | if (locMast.getLocSts().equals("R")) { |
| | | locMast.setLocSts("O"); |
| | | locMast.setBarcode(""); |
| | | locMast.setModiTime(now); |
| | | locMast.setIoTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | |
| | | import com.zy.common.utils.NodeUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * Created by vincent on 2019-11-25 |
| | |
| | | mat = excel; |
| | | mat.setTagId(tagId); |
| | | mat.setLocType(tagId); |
| | | if (Objects.isNull(mat.getVolume())) { |
| | | throw new CoolException("每公斤长度不能为空!!"); |
| | | } |
| | | if (Objects.isNull(mat.getSafeQty())) { |
| | | throw new CoolException("归零阀值不能为空!!"); |
| | | } |
| | | if (!matService.insert(mat)) { |
| | | throw new CoolException("保存商品信息失败,商品编码:" + excel.getMatnr()); |
| | | } |
| | |
| | | username: sa |
| | | password: sa@123 |
| | | url: jdbc:sqlserver://192.168.4.15:1433;databasename=jxhcwms |
| | | # url: jdbc:sqlserver://127.0.0.1:1433;databasename=jxhcwms |
| | | mvc: |
| | | static-path-pattern: /** |
| | | redis: |
| | |
| | | # global-config: |
| | | # field-strategy: 0 |
| | | configuration: |
| | | # log-impl: org.apache.ibatis.logging.stdout.StdOutImpl |
| | | log-impl: org.apache.ibatis.logging.stdout.StdOutImpl |
| | | map-underscore-to-camel-case: true |
| | | cache-enabled: true |
| | | call-setters-on-nulls: true |
| | |
| | | <!-- and (a.batch IS NULL OR a.batch = '')--> |
| | | <!-- </otherwise>--> |
| | | </choose> |
| | | <choose> |
| | | <when test="brand != null and brand != ''"> |
| | | and a.brand = #{brand} |
| | | </when> |
| | | <!-- <otherwise>--> |
| | | <!-- and (a.brand IS NULL OR a.brand = '')--> |
| | | <!-- </otherwise>--> |
| | | </choose> |
| | | <!-- <choose>--> |
| | | <!-- <when test="brand != null and brand != ''">--> |
| | | <!-- and a.brand = #{brand}--> |
| | | <!-- </when>--> |
| | | <!--<!– <otherwise>–>--> |
| | | <!--<!– and (a.brand IS NULL OR a.brand = '')–>--> |
| | | <!--<!– </otherwise>–>--> |
| | | <!-- </choose>--> |
| | | <!-- <choose>--> |
| | | <!-- <when test="standby1 != null and standby1 != ''">--> |
| | | <!-- and a.standby1 = #{standby1}--> |
| | |
| | | height: 'full-120', |
| | | cols: [[ |
| | | { type: 'checkbox' } |
| | | , { field: 'id', align: 'center', title: 'ID' } |
| | | , { field: 'devId', align: 'center', title: '机台ID' } |
| | | , { field: 'id', align: 'center', title: 'ID' , hide: true } |
| | | , { field: 'devId', align: 'center', title: '机台ID', hide: true } |
| | | , { field: 'devNo', align: 'center', title: '机台号' } |
| | | , { field: 'devName', align: 'center', title: '设备名称' } |
| | | , { field: 'blocId', align: 'center', title: '库位ID', hide: true } |
| | | , { field: 'blocNo', align: 'center', title: '库位码' } |
| | | , { field: 'def$', align: 'center', title: '是否默认' } |
| | | , { field: 'blocNo', align: 'center', title: '工位' } |
| | | ,{field: 'locType$', align:'center', title: '工位状态'} |
| | | , { field: 'def$', align: 'center', title: '工位类型' } |
| | | , { fixed: 'right', title: '操作', align: 'center', toolbar: '#operate', width: 120 } |
| | | ]], |
| | | request: { |
| | |
| | | {field: 'maktx', title: '商品名称', width: 200}, |
| | | {field: 'batch', title: '批号', edit: true}, |
| | | {field: 'specs', title: '规格'}, |
| | | {field: 'model', title: '型号'}, |
| | | {field: 'brand', title: '品牌'}, |
| | | {field: 'unit', title: '单位', width: 80}, |
| | | {field: 'standby1', title: '机台', edit: true}, |
| | | {field: 'anfme', title: '数量(修改)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, |
| | | {field: 'workQty', title: '作业数量', minWidth: 100, width: 100}, |
| | | // {field: 'unit', title: '单位', width: 80}, |
| | | {field: 'memo', title: '备注' , edit: true}, |
| | | {align: 'center', title: '操作', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'} |
| | | ]], |
| | |
| | | ,{field: 'wrkSts$', align: 'center',title: '工作状态', width: 120} |
| | | ,{field: 'ioType$', align: 'center',title: '入出库类型', width: 140} |
| | | ,{field: 'ioPri', align: 'center',title: '优先级', width: 95} |
| | | // ,{field: 'taskType$', align: 'center',title: '任务类型', width: 95} |
| | | ,{field: 'barcode', align: 'center',title: 'SN', width: 120} |
| | | ,{field: 'crnNo$', align: 'center',title: '堆垛机', width: 95} |
| | | ,{field: 'sourceStaNo$', align: 'center',title: '源站', width: 95} |
| | |
| | | ,{field: 'locNo', align: 'center',title: '目标库位', width: 120} |
| | | ,{field: 'preHave', align: 'center',title: '先入品', hide: true} |
| | | ,{field: 'takeNone', align: 'center',title: '空操作', hide: true} |
| | | ,{field: 'isSuplus$', align: 'center', title: '回库类型', hide: false, width: 120} |
| | | ,{field: 'modiUser$', align: 'center',title: '修改人员', hide:true} |
| | | ,{field: 'modiTime$', align: 'center',title: '修改时间', hide:true, width: 160} |
| | | ,{fixed: 'right', title:'操作', align: 'center', toolbar: '#operate', width:350} |
| | |
| | | break; |
| | | //空板回库 |
| | | case 'empty': |
| | | layer.confirm('空板入库该笔工作档?', {title: '工作号:'+data.wrkNo, shadeClose: true}, function(){ |
| | | layer.confirm('空板回库该笔工作档?', {title: '工作号:'+data.wrkNo, shadeClose: true}, function(){ |
| | | http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:4}, function (res) { |
| | | $(".layui-laypage-btn")[0].click(); |
| | | layer.msg(data.wrkNo + res.msg); |
| | |
| | | break; |
| | | // 拣料入库 |
| | | case 'pick': |
| | | layer.confirm('拣料入库该笔工作档?', {title: '工作号:'+data.wrkNo, shadeClose: true}, function(){ |
| | | http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:4}, function (res) { |
| | | layer.confirm('拣料回库该笔工作档?', {title: '工作号:'+data.wrkNo, shadeClose: true}, function(){ |
| | | http.post(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:5}, function (res) { |
| | | $(".layui-laypage-btn")[0].click(); |
| | | layer.msg(data.wrkNo + res.msg); |
| | | }) |
| | |
| | | <input class="layui-input" name="devNo" placeholder="请输入机台号" lay-vertype="tips" lay-verify="required"> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label layui-form-required">库位ID: </label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input class="layui-input" name="blocId" placeholder="请输入库位ID" lay-vertype="tips" lay-verify="required">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">设备名称: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="devName" placeholder="请输入设备名称" lay-vertype="tips"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label layui-form-required">库位码: </label> |
| | | <div class="layui-input-block"> |
| | |
| | | <option value="1" selected="">是</option> |
| | | <option value="0">否</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <label class="layui-form-label">工位状态</label> |
| | | <div class="layui-input-inline cool-auto-complete"> |
| | | <input id="locType" name="locType" class="layui-input" type="text" style="display: none"> |
| | | <input id="locType$" name="locType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" |
| | | placeholder="工位状态" onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="basLocStsQueryBylocSts" |
| | | onkeyup="autoLoad2(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="basLocStsQueryBylocStsSelect" |
| | | onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-input-inline"> |
| | | <label class="layui-form-label">库位状态</label> |
| | | <select name="frozen" class="layui-input" type="text" autocomplete="off"> |
| | | <option value="O">O.空库</option> |
| | | <option value="F">F.在库</option> |
| | | <option value="S">S.预约入库</option> |
| | | <option value="R">S.预约出库</option> |
| | | </select> |
| | | </div> |
| | | <!-- <div class="layui-inline">--> |
| | | <!-- <label class="layui-form-label">库位状态</label>--> |
| | | |
| | | <!-- <div class="layui-input-inline cool-auto-complete">--> |
| | | <!-- <input id="locSts" name="loc_sts" class="layui-input" type="text" style="display: none">--> |
| | | <!-- <input id="locSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text"--> |
| | | <!-- placeholder="库位状态" onfocus=this.blur()>--> |
| | | <!-- <div class="cool-auto-complete-window">--> |
| | | <!-- <input class="cool-auto-complete-window-input" data-key="basLocStsQueryBylocSts"--> |
| | | <!-- onkeyup="autoLoad2(this.getAttribute('data-key'))">--> |
| | | <!-- <select class="cool-auto-complete-window-select" data-key="basLocStsQueryBylocStsSelect"--> |
| | | <!-- onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">--> |
| | | <!-- </select>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | </div> |
| | | |
| | | |
| | | <!-- --> |
| | | <div style="text-align: center; margin-top: 20px"> |
| | | <button class="layui-btn layui-btn-radius layui-btn-normal" id="initDo" lay-submit lay-filter="initDo"> |
| | |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label layui-form-required">组托上限</label> |
| | | <label class="layui-form-label layui-form-required">单位</label> |
| | | <div class="layui-input-block"> |
| | | <input name="upQty" placeholder="请输入最大组托数量" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> |
| | | <input name="unit" placeholder="请输入单位" class="layui-input" lay-vertype="tips" lay-verify="required" required=""> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">配置</label> |
| | | <label class="layui-form-label">规格</label> |
| | | <div class="layui-input-block"> |
| | | <input name="specs" placeholder="请输入配置" class="layui-input"> |
| | | <input name="specs" placeholder="请输入规格" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">单箱净重</label> |
| | | <label class="layui-form-label">品牌</label> |
| | | <div class="layui-input-block"> |
| | | <input name="weight" placeholder="请输入单箱净重格" class="layui-input"> |
| | | <input name="brand" placeholder="请输入单箱净重格" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">单箱体积</label> |
| | | <label class="layui-form-label">型号</label> |
| | | <div class="layui-input-block"> |
| | | <input name="volume" placeholder="请输入单箱体积" class="layui-input"> |
| | | <input name="model" placeholder="请输入型号" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | <input name="memo" placeholder="请输入备注" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">单箱毛重</label> |
| | | <div class="layui-input-block"> |
| | | <input name="manLength" placeholder="请输入单箱毛重" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label">单箱毛重</label>--> |
| | | <!-- <div class="layui-input-block">--> |
| | | <!-- <input name="manLength" placeholder="请输入单箱毛重" class="layui-input">--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="layui-form-item">--> |
| | | <!-- <label class="layui-form-label">单箱体积</label>--> |
| | | <!-- <div class="layui-input-block">--> |