| src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/controller/LocAroundBindController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/main/resources/mapper/LocDetlMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/api/service/impl/WcsApiServiceImpl.java
@@ -10,15 +10,18 @@ import com.zy.api.service.WcsApiService; import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.asrs.service.impl.LocDetlServiceImpl; import com.zy.asrs.service.impl.MatServiceImpl; import com.zy.asrs.service.impl.WrkDetlServiceImpl; import com.zy.common.constant.MesConstant; import com.zy.common.utils.HttpHandler; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.util.Date; import java.util.List; import java.util.Objects; import java.util.Set; @@ -41,6 +44,8 @@ private WrkDetlService wrkDetlService; @Autowired private MatService matService; @Autowired private LocDetlService locDetlService; /** * 通知WCS锁定库位,及禁止当前库位的一切操作 @@ -214,25 +219,57 @@ } else if (params.getNotifyType().equals("weight")) { //称重 if (mast.getWrkSts() == 2) { WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo())); if (Objects.isNull(wrkDetl)) { throw new CoolException("数据错误,任务明细不存在!!"); } Mat matnr = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", wrkDetl.getMatnr())); if (Objects.isNull(matnr)) { throw new CoolException("物料基础信息不存在!!"); } Double val = Math.round((params.getWeight() - matnr.getSafeQty()) * 10000) / 10000.0; if (val.compareTo(0.0) > 0) { //余料长度 wrkDetl.setRealQty(val * matnr.getVolume()); if (mast.getIoType() == 10) { //空板入库任务档 LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", mast.getSourceLocNo())); if (Objects.isNull(locDetl)) { throw new CoolException("明细数据不存在!!"); } Mat matnr = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", locDetl.getMatnr())); if (Objects.isNull(matnr)) { throw new CoolException("物料基础信息不存在!!"); } Double val = Math.round((params.getWeight() - matnr.getSafeQty()) * 10000) / 10000.0; if (val.compareTo(0.0) > 0) { WrkDetl wrkDetl = new WrkDetl(); BeanUtils.copyProperties(locDetl, wrkDetl); wrkDetl.setWrkNo(mast.getWrkNo()); wrkDetl.setIoTime(new Date()); wrkDetl.setWeight(params.getWeight()); //余料长度 wrkDetl.setRealQty(val * matnr.getVolume()); mast.setIoType(1); mast.setIsSuplus(1); if (!wrkMastService.updateById(mast)) { throw new CoolException("主档状态修改失败"); } if (!wrkDetlService.insert(wrkDetl)) { throw new CoolException("明细保存失败!!"); } } } else { //空板 wrkDetl.setRealQty(0.0); } wrkDetl.setWeight(params.getWeight()); if (!wrkDetlService.update(wrkDetl, new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()).eq("matnr", wrkDetl.getMatnr()).eq("barcode", wrkDetl.getBarcode()))) { throw new CoolException("任务档明细修改失败!!"); WrkDetl wrkDetl = wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo())); if (Objects.isNull(wrkDetl)) { throw new CoolException("数据错误,任务明细不存在!!"); } Mat matnr = matService.selectOne(new EntityWrapper<Mat>().eq("matnr", wrkDetl.getMatnr())); if (Objects.isNull(matnr)) { throw new CoolException("物料基础信息不存在!!"); } Double val = Math.round((params.getWeight() - matnr.getSafeQty()) * 10000) / 10000.0; if (val.compareTo(0.0) > 0) { //余料长度 wrkDetl.setRealQty(val * matnr.getVolume()); } else { //空板 wrkDetl.setRealQty(0.0); } wrkDetl.setWeight(params.getWeight()); if (!wrkDetlService.update(wrkDetl, new EntityWrapper<WrkDetl>().eq("wrk_no", mast.getWrkNo()).eq("matnr", wrkDetl.getMatnr()).eq("barcode", wrkDetl.getBarcode()))) { throw new CoolException("任务档明细修改失败!!"); } } } else { throw new CoolException("数据错误,当前任务状态有误 !"); src/main/java/com/zy/asrs/controller/LocAroundBindController.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.plugins.Page; import com.core.common.DateUtils; import com.zy.asrs.entity.LocAroundBind; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.LocMast; import com.zy.asrs.entity.param.InitDeviceLocParams; import com.zy.asrs.enums.LocStsType; @@ -14,6 +15,8 @@ import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.R; import com.zy.asrs.service.LocDetlService; import com.zy.asrs.service.impl.LocDetlServiceImpl; import com.zy.asrs.service.impl.LocMastServiceImpl; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +31,8 @@ private LocAroundBindService locAroundBindService; @Autowired private LocMastServiceImpl locMastService; @Autowired private LocDetlService locDetlService; @RequestMapping(value = "/locAroundBind/{id}/auth") @ManagerAuth @@ -95,6 +100,11 @@ if (Cools.isEmpty(locAroundBind) || null == locAroundBind.getId()) { return R.error(); } if (locAroundBind.getLocType().equals(LocStsType.LOC_STS_TYPE_O.type)) { locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", locAroundBind.getBlocNo())); } locAroundBindService.updateById(locAroundBind); return R.ok(); } src/main/java/com/zy/asrs/service/impl/WorkServiceImpl.java
@@ -453,42 +453,44 @@ throw new CoolException("机台信息不存在或已禁用!!"); } List<LocAroundBind> binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>() .eq("dev_no", basDevice.getDevNo()) .eq("is_default", 1)); LocAroundBind binds = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>() .eq("dev_no", basDevice.getDevNo()).orderBy("is_default", false)); if (Objects.isNull(binds) || binds.isEmpty()) { if (Objects.isNull(binds)) { throw new CoolException("机台未设置默认工作位!!"); } // // Set<String> locs = binds.stream().map(LocAroundBind::getBlocNo).collect(Collectors.toSet()); Set<String> locs = binds.stream().map(LocAroundBind::getBlocNo).collect(Collectors.toSet()); // LocMast locMasts = locMastService.selectOne(new EntityWrapper<LocMast>() // .in("loc_no", locs) // .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) // .orderAsc(Arrays.asList("loc_no"))); LocMast locMasts = locMastService.selectOne(new EntityWrapper<LocMast>() .in("loc_no", locs) .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) .orderAsc(Arrays.asList("loc_no"))); // if (Objects.isNull(locMasts)) { // binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>() // .eq("dev_no", basDevice.getDevNo())); // // Set<String> nlocs = binds.stream().map(LocAroundBind::getBlocNo).collect(Collectors.toSet()); // // locMasts = locMastService.selectOne(new EntityWrapper<LocMast>() // .in("loc_no", nlocs) // .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) // .orderAsc(Arrays.asList("loc_no"))); // if (Objects.isNull(locMasts)) { // throw new CoolException("暂无可用工作位!!"); // } // } if (Objects.isNull(locMasts)) { binds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>() .eq("dev_no", basDevice.getDevNo())); Set<String> nlocs = binds.stream().map(LocAroundBind::getBlocNo).collect(Collectors.toSet()); locMasts = locMastService.selectOne(new EntityWrapper<LocMast>() .in("loc_no", nlocs) .eq("loc_sts", LocStsType.LOC_STS_TYPE_O.type) .orderAsc(Arrays.asList("loc_no"))); if (Objects.isNull(locMasts)) { throw new CoolException("暂无可用工作位!!"); } } LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", locMasts.getLocNo())); LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", binds.getBlocNo())); bLocNo.setLocType(LocStsType.LOC_STS_TYPE_S.type); if (!locAroundBindService.updateById(bLocNo)) { throw new CoolException("工位预约失败!!"); } LocMast locMasts = locMastService.selectOne(new EntityWrapper<LocMast>() .eq("loc_no", bLocNo.getBlocNo())); locMasts.setLocSts(LocStsType.LOC_STS_TYPE_S.type); locMasts.setModiUser(userId); @@ -1533,11 +1535,12 @@ 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("任务档更新失败!!"); } } src/main/java/com/zy/asrs/task/handler/WorkMastHandler.java
@@ -97,11 +97,6 @@ return FAIL.setMsg("空板入库 ===>> 修改库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); } } break; // 全板入库 case 1: @@ -133,9 +128,9 @@ locDetl.sync(wrkDetl); locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 if (!Objects.isNull(wrkMast.getWrkCode())) { locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 } else { locDetl.setAnfme(wrkDetl.getRealQty()); } else { locDetl.setAnfme(wrkDetl.getAnfme()); // 数量 } locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 locDetl.setModiTime(now); @@ -148,8 +143,9 @@ } //判断匹配编码不为空,且任务编码包含-2,确认为有上组任务 if (!Objects.isNull(wrkMast.getWrkCode()) && wrkMast.getWrkCode().contains("-2")) { if (!Objects.isNull(wrkMast.getWrkCode())) { //不需要更新单据信息(子任务无单据 } else { //正常单据才存存入库单,作入库单据信息更新 // 更新订单完成数量 @@ -452,15 +448,23 @@ } /***/ if (Objects.isNull(wrkMast.getWrkCode())) { if (!Objects.isNull(wrkMast.getWrkCode())) { LocMast lcmst = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo())); lcmst.setLocSts(LocStsType.LOC_STS_TYPE_O.type); if (!locMastService.updateById(lcmst)) { throw new CoolException("库位状态修改失败!!"); } LocAroundBind bLocNo = locAroundBindService.selectOne(new EntityWrapper<LocAroundBind>().eq("b_loc_no", wrkMast.getSourceLocNo())); if (Objects.isNull(bLocNo)) { throw new CoolException("工位不存在 !!"); } bLocNo.setLocType(LocStsType.LOC_STS_TYPE_O.type); if (!locAroundBindService.updateById(bLocNo)) { throw new CoolException("工位状态修改失败!!"); } locDetlService.delete(new EntityWrapper<LocDetl>().eq("loc_no", wrkMast.getSourceLocNo())); } return SUCCESS; src/main/resources/mapper/LocDetlMapper.xml
@@ -550,6 +550,7 @@ #{item} </foreach> </if> and b.deleted = 0 and b.frozen = 0 order by DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme