From 314e894c0d6ce2739344dcd1c94ae7770868a0f1 Mon Sep 17 00:00:00 2001 From: Junjie <fallin.jie@qq.com> Date: 星期三, 28 五月 2025 14:51:16 +0800 Subject: [PATCH] # --- src/main/java/com/zy/common/service/CommonService.java | 229 +++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 197 insertions(+), 32 deletions(-) diff --git a/src/main/java/com/zy/common/service/CommonService.java b/src/main/java/com/zy/common/service/CommonService.java index eb14888..fd01bf3 100644 --- a/src/main/java/com/zy/common/service/CommonService.java +++ b/src/main/java/com/zy/common/service/CommonService.java @@ -2,16 +2,18 @@ import com.core.common.Cools; import com.core.exception.CoolException; +import com.zy.asrs.domain.param.*; import com.zy.asrs.entity.*; import com.zy.asrs.service.*; +import com.zy.core.News; +import com.zy.core.enums.WrkIoType; +import com.zy.core.enums.WrkStsType; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -/** - * 璐ф灦鏍稿績鍔熻兘 - * Created by vincent on 2020/6/11 - */ +import java.util.Date; + @Slf4j @Service public class CommonService { @@ -21,8 +23,7 @@ @Autowired private WrkLastnoService wrkLastnoService; @Autowired - private WrkChargeService wrkChargeService; - + private LocMastService locMastService; /** * 鐢熸垚宸ヤ綔鍙� @@ -39,7 +40,7 @@ int eNo = wrkLastno.getENo(); workNo = workNo>=eNo ? sNo : workNo+1; while (true) { - WrkMast wrkMast = wrkMastService.selectById(workNo); + WrkMast wrkMast = wrkMastService.selectByWorkNo(workNo); if (null != wrkMast) { workNo = workNo>=eNo ? sNo : workNo+1; } else { @@ -55,45 +56,26 @@ if (workNo == 0) { throw new CoolException("鐢熸垚宸ヤ綔鍙峰け璐ワ紝璇疯仈绯荤鐞嗗憳"); } else { - if (wrkMastService.selectById(workNo)!=null) { + if (wrkMastService.selectByWorkNo(workNo)!=null) { throw new CoolException("鐢熸垚宸ヤ綔鍙�" + workNo + "鍦ㄥ伐浣滄。涓凡瀛樺湪"); } } return workNo; } - public int getChargeWorkNo(Integer wrkMk) { + //妫�娴嬪伐浣滃彿鏄惁鍦ㄦ寚瀹氱被鍨嬪伐浣滆寖鍥村唴 + public synchronized boolean checkWorkNoContainMk(Integer workNo, Integer wrkMk) { WrkLastno wrkLastno = wrkLastnoService.selectById(wrkMk); if (Cools.isEmpty(wrkLastno)) { throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�"); } - int workNo = wrkLastno.getWrkNo(); int sNo = wrkLastno.getSNo(); int eNo = wrkLastno.getENo(); - workNo = workNo>=eNo ? sNo : workNo+1; - while (true) { - WrkCharge wrkCharge = wrkChargeService.selectById(workNo); - if (null != wrkCharge) { - workNo = workNo>=eNo ? sNo : workNo+1; - } else { - break; - } + if (workNo >= sNo && workNo <= eNo) { + return true; } - // 淇敼搴忓彿璁板綍 - if (workNo > 0){ - wrkLastno.setWrkNo(workNo); - wrkLastnoService.updateById(wrkLastno); - } - // 妫�楠� - if (workNo == 0) { - throw new CoolException("鐢熸垚鍏呯數宸ヤ綔鍙峰け璐ワ紝璇疯仈绯荤鐞嗗憳"); - } else { - if (wrkChargeService.selectById(workNo)!=null) { - throw new CoolException("鐢熸垚宸ヤ綔鍙�" + workNo + "鍦ㄥ厖鐢靛伐浣滄。涓凡瀛樺湪"); - } - } - return workNo; + return false; } public static String zerofill(String msg, Integer count) { @@ -110,4 +92,187 @@ } } + public boolean completeTask(CompleteTaskParam param) { + Integer wrkNo = param.getWrkNo(); + WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo); + if (null == wrkMast) { + throw new CoolException("浠诲姟涓嶅瓨鍦�"); + } + + if (wrkMast.getIoType() == WrkIoType.IN.id) { + wrkMast.setWrkSts(WrkStsType.COMPLETE_INBOUND.sts); + }else if (wrkMast.getIoType() == WrkIoType.OUT.id) { + wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts); + } else if (wrkMast.getIoType() == WrkIoType.SHUTTLE_MOVE.id) { + wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts); + } else if (wrkMast.getIoType() == WrkIoType.SHUTTLE_CHARGE.id) { + wrkMast.setWrkSts(WrkStsType.COMPLETE_CHARGE.sts); + } else if (wrkMast.getIoType() == WrkIoType.LOC_MOVE.id) { + wrkMast.setWrkSts(WrkStsType.COMPLETE_LOC_MOVE.sts); + } + + wrkMast.setModiTime(new Date()); + wrkMastService.updateById(wrkMast); + return true; + } + + public boolean cancelTask(CancelTaskParam param) { + Integer wrkNo = param.getWrkNo(); + WrkMast wrkMast = wrkMastService.selectByWorkNo(wrkNo); + if (null == wrkMast) { + throw new CoolException("浠诲姟涓嶅瓨鍦�"); + } + + wrkMast.setMk("taskCancel"); + wrkMast.setModiTime(new Date()); + wrkMastService.updateById(wrkMast); + return true; + } + + //绉诲簱浠诲姟 + public boolean createLocMoveTask(CreateLocMoveTaskParam param) { + Date now = new Date(); + LocMast sourceLocMast = locMastService.queryByLoc(param.getSourceLocNo()); + if (null == sourceLocMast) { + throw new CoolException("婧愬簱浣嶄笉瀛樺湪"); + } + + if (!sourceLocMast.getLocSts().equals("F")) { + throw new CoolException("婧愬簱浣嶄笉澶勪簬鍦ㄥ簱鐘舵��"); + } + + LocMast locMast = locMastService.queryByLoc(param.getLocNo()); + if (null == locMast) { + throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦�"); + } + + if (!locMast.getLocSts().equals("O")) { + throw new CoolException("鐩爣搴撲綅涓嶅浜庣┖搴撶姸鎬�"); + } + + double ioPri = 800D; + if (param.getTaskPri() != null) { + ioPri = param.getTaskPri().doubleValue(); + } + + // 鑾峰彇宸ヤ綔鍙� + int workNo = getWorkNo(WrkIoType.LOC_MOVE.id); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(WrkStsType.NEW_LOC_MOVE.sts); // 宸ヤ綔鐘舵�侊細501.鐢熸垚绉诲簱浠诲姟 + wrkMast.setIoType(WrkIoType.LOC_MOVE.id); // 鍏ュ嚭搴撶姸鎬侊細 201.绉诲簱浠诲姟 + wrkMast.setIoPri(ioPri); + wrkMast.setSourceLocNo(param.getSourceLocNo()); + wrkMast.setLocNo(param.getLocNo()); // 鐩爣搴撲綅 + wrkMast.setWmsWrkNo(param.getTaskNo()); + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + News.error("绉诲簱浠诲姟 --- 淇濆瓨宸ヤ綔妗eけ璐ワ紒"); + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + sourceLocMast.setLocSts("R"); + sourceLocMast.setModiTime(new Date()); + locMastService.updateById(sourceLocMast); + + locMast.setLocSts("S"); + locMast.setModiTime(new Date()); + locMastService.updateById(locMast); + + return true; + } + + //鍏ュ簱浠诲姟 + public boolean createInTask(CreateInTaskParam param) { + Date now = new Date(); + LocMast locMast = locMastService.queryByLoc(param.getLocNo()); + if (null == locMast) { + throw new CoolException("鐩爣搴撲綅涓嶅瓨鍦�"); + } + + if (!locMast.getLocSts().equals("O")) { + throw new CoolException("鐩爣搴撲綅涓嶅浜庣┖搴撶姸鎬�"); + } + + double ioPri = 100D; + if (param.getTaskPri() != null) { + ioPri = param.getTaskPri().doubleValue(); + } + + // 鑾峰彇宸ヤ綔鍙� + int workNo = getWorkNo(WrkIoType.IN.id); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(WrkStsType.NEW_INBOUND.sts); // 宸ヤ綔鐘舵�侊細1.鐢熸垚鍏ュ簱浠诲姟 + wrkMast.setIoType(WrkIoType.IN.id); // 鍏ュ嚭搴撶姸鎬侊細 1.鍏ュ簱 + wrkMast.setIoPri(ioPri); + wrkMast.setLocNo(param.getLocNo()); // 鐩爣搴撲綅 + wrkMast.setSourceStaNo(param.getSourceStaNo());//婧愮珯 + wrkMast.setStaNo(param.getStaNo());//鐩爣绔� + wrkMast.setWmsWrkNo(param.getTaskNo()); + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + News.error("鍏ュ簱浠诲姟 --- 淇濆瓨宸ヤ綔妗eけ璐ワ紒"); + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + locMast.setLocSts("S"); + locMast.setModiTime(new Date()); + locMastService.updateById(locMast); + + return true; + } + + //鍑哄簱浠诲姟 + public boolean createOutTask(CreateOutTaskParam param) { + Date now = new Date(); + LocMast locMast = locMastService.queryByLoc(param.getSourceLocNo()); + if (null == locMast) { + throw new CoolException("婧愬簱浣嶄笉瀛樺湪"); + } + + if (!locMast.getLocSts().equals("F")) { + throw new CoolException("婧愬簱浣嶄笉澶勪簬鍦ㄥ簱鐘舵��"); + } + + double ioPri = 100D; + if (param.getTaskPri() != null) { + ioPri = param.getTaskPri().doubleValue(); + } + + // 鑾峰彇宸ヤ綔鍙� + int workNo = getWorkNo(WrkIoType.OUT.id); + // 淇濆瓨宸ヤ綔妗� + WrkMast wrkMast = new WrkMast(); + wrkMast.setWrkNo(workNo); + wrkMast.setIoTime(now); + wrkMast.setWrkSts(WrkStsType.NEW_OUTBOUND.sts); // 宸ヤ綔鐘舵�侊細101.鐢熸垚鍑哄簱浠诲姟 + wrkMast.setIoType(WrkIoType.OUT.id); // 鍏ュ嚭搴撶姸鎬侊細 101.鍑哄簱 + wrkMast.setIoPri(ioPri); + wrkMast.setSourceLocNo(param.getSourceLocNo()); // 婧愬簱浣� + wrkMast.setStaNo(param.getStaNo());//鐩爣绔� + wrkMast.setWmsWrkNo(param.getTaskNo()); + wrkMast.setAppeTime(now); + wrkMast.setModiTime(now); + boolean res = wrkMastService.insert(wrkMast); + if (!res) { + News.error("鍑哄簱浠诲姟 --- 淇濆瓨宸ヤ綔妗eけ璐ワ紒"); + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + locMast.setLocSts("R"); + locMast.setModiTime(new Date()); + locMastService.updateById(locMast); + + return true; + } + } -- Gitblit v1.9.1