From f1223c78a7b93d89017c26770390ef446cc57ac6 Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期五, 14 七月 2023 08:06:28 +0800 Subject: [PATCH] 完善AGV相关功能 --- src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java | 1212 ++++----------------------------------------------------- 1 files changed, 85 insertions(+), 1,127 deletions(-) diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java index 7f9947a..82751d4 100644 --- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java +++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java @@ -1,130 +1,99 @@ package com.zy.asrs.service.impl; -import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.baomidou.mybatisplus.mapper.Wrapper; -import com.core.common.BaseRes; import com.core.common.Cools; -import com.core.common.DateUtils; -import com.core.common.SnowflakeIdWorker; import com.core.exception.CoolException; import com.zy.asrs.entity.*; -import com.zy.asrs.entity.param.EmptyPlateOutParam; -import com.zy.asrs.entity.param.FullStoreParam; -import com.zy.asrs.entity.param.LocDetlAdjustParam; -import com.zy.asrs.entity.param.StockOutParam; import com.zy.asrs.service.*; -import com.zy.asrs.utils.Utils; -import com.zy.common.model.*; -import com.zy.common.model.enums.IoWorkType; -import com.zy.common.model.enums.WorkNoType; -import com.zy.common.properties.SlaveProperties; -import com.zy.common.service.CommonService; -import com.zy.common.web.BaseController; -import com.zy.common.web.WcsController; +import com.zy.common.model.DetlDto; +import com.zy.common.model.StartupDto; +import com.zy.common.service.AgvCommonService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; /** * Created by vincent on 2020/6/11 */ @Slf4j @Service +@Transactional public class AgvWorkServiceImpl implements AgvWorkService { // 宸ヤ綔鍙风敓鎴愯鍒欓粯璁ょ被鍨� private static final int DEFAULT_WORK_NO_TYPE = 0; // 搴撲綅鎺掑彿鍒嗛厤榛樿绫诲埆 private static final int DEFAULT_ROW_NO_TYPE = 1; - @Autowired - private MatService matService; + private AgvWaitPakinService agvWaitPakinService; @Autowired - private WrkMastService wrkMastService; + private AgvBasDevpService agvBasDevpService; @Autowired - private WrkDetlService wrkDetlService; + private AgvLocMastService agvLockMastService; @Autowired - private BasDevpService basDevpService; + private AgvCommonService agvCommonService; @Autowired - private CommonService commonService; + private AgvWrkMastService agvWrkMastService; @Autowired - private LocMastService locMastService; - @Autowired - private StaDescService staDescService; - @Autowired - private LocDetlService locDetlService; - @Autowired - private AdjDetlService adjDetlService; - @Autowired - private WrkMastLogService wrkMastLogService; - @Autowired - private WrkDetlLogService wrkDetlLogService; - @Autowired - private SnowflakeIdWorker snowflakeIdWorker; - @Autowired - private OrderService orderService; - @Autowired - private OrderDetlService orderDetlService; - @Autowired - private WcsController wcsController; - @Autowired - private RowLastnoService rowLastnoService; - @Autowired - private SlaveProperties slaveProperties; + private AgvWrkDetlService agvWrkDetlService; @Override - @Transactional - public String startupFullPutStore(FullStoreParam param, Long userId) { - // 鍙傛暟闈炵┖鍒ゆ柇 - if (Cools.isEmpty(param.getDevpNo(), param.getList())) { - throw new CoolException(BaseRes.PARAM); - } + public StartupDto createWaitPainWrkMastStart(List<AgvBasDevp> agvBasDevpList, Long userId) { + Date now = new Date(); - // 婧愮珯鐐圭姸鎬佹娴� - BasDevp sourceStaNo = basDevpService.checkSiteStatus(param.getDevpNo(), true); - // 妫�绱㈠簱浣� - LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); - List<String> matnrs = param.getList().stream().map(FullStoreParam.MatCodeStore::getMatnr).distinct().collect(Collectors.toList()); - StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 1, param.getDevpNo(), matnrs, locTypeDto, 0); - // 鐢熸垚宸ヤ綔鍙� - int workNo = dto.getWorkNo(); - // 鐢熸垚宸ヤ綔妗� - WrkMast wrkMast = new WrkMast(); - wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(new Date()); - wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID - wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 - Double ioPri = wrkMastService.getIoPri(1, dto.getLocNo()); - wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13 - wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), true)?1:0);; - wrkMast.setCrnNo(dto.getCrnNo()); - wrkMast.setSourceStaNo(dto.getSourceStaNo()); - wrkMast.setStaNo(dto.getStaNo()); - wrkMast.setLocNo(dto.getLocNo()); - wrkMast.setBarcode(param.getBarcode()); // 鎵樼洏鐮� - wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 - wrkMast.setPicking("N"); // 鎷f枡 - wrkMast.setExitMk("N"); // 閫�鍑� - wrkMast.setEmptyMk("N"); // 绌烘澘 - wrkMast.setLinkMis("N"); - wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 - wrkMast.setAppeUser(userId); - wrkMast.setAppeTime(now); - wrkMast.setModiUser(userId); - wrkMast.setModiTime(now); - if (!wrkMastService.insert(wrkMast)) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); - } - // 鐢熸垚宸ヤ綔妗f槑缁� + + agvBasDevpList.forEach(agvBasDevp -> { + if(Cools.isEmpty(agvBasDevp.getBarcode())){ + throw new CoolException("閫変腑鐨勭珯鐐逛腑鍚湁浣嶇粦瀹氭墭鐩樼殑绔欑偣锛岃閲嶆柊閫夋嫨"); + } + + if(!"F".equals(agvBasDevp.getLocSts())){ + throw new CoolException("閫変腑鐨勭珯鐐逛腑鍚湁璐т綅鐘舵�佷笉涓篎.鍦ㄥ簱鐨勭珯鐐癸紝璇烽噸鏂伴�夋嫨"); + } + + List<AgvWaitPakin> agvWaitPakinList = agvWaitPakinService.selectList(new EntityWrapper<AgvWaitPakin>().eq("zpallet", agvBasDevp.getBarcode())); + + //妫�绱㈠簱浣嶏紝閫夋嫨鍚堥�傜殑搴撲綅 + AgvLocMast agvLocMast = agvCommonService.getLocNo(agvWaitPakinList, agvBasDevp.getFloor()); + //鐢熸垚宸ヤ綔妗� + AgvWrkMast wrkMast = createWrkMast(agvBasDevp, agvLocMast, now, userId); + //鐢熸垚宸ヤ綔妗f槑缁� + createWrkDetl(agvWaitPakinList,wrkMast,userId); + //鏇存柊婧愮珯鐐逛俊鎭� + updateAgvBasDevp(agvBasDevp); + //鏇存柊鐩爣搴撲綅鐘舵�� + updateAgvLocMast(agvLocMast); + }); + + return null; + } + + /* + 鏇存柊鐩爣搴撲綅淇℃伅 + */ + private void updateAgvLocMast(AgvLocMast locMast){ + locMast.setLocSts("S"); + agvLockMastService.updateById(locMast); + } + + /* + 鏇存柊婧愮珯鐐逛俊鎭� + */ + private void updateAgvBasDevp(AgvBasDevp agvBasDevp){ + agvBasDevp.setLocSts("R"); + agvBasDevpService.updateById(agvBasDevp); + } + + /* + 鐢熸垚宸ヤ綔妗f槑缁� + */ + private void createWrkDetl(List<AgvWaitPakin> agvWaitPakinList, AgvWrkMast wrkMast, Long userId){ List<DetlDto> detlDtos = new ArrayList<>(); - param.getList().forEach(elem -> { - DetlDto detlDto = new DetlDto(elem.getMatnr(), elem.getBatch(), elem.getAnfme()); + agvWaitPakinList.forEach(agvWaitPakin -> { + DetlDto detlDto = new DetlDto(agvWaitPakin.getMatnr(), agvWaitPakin.getBatch(), agvWaitPakin.getAnfme()); if (DetlDto.has(detlDtos, detlDto)) { DetlDto detlDto1 = DetlDto.find(detlDtos, detlDto.getMatnr(), detlDto.getBatch()); assert detlDto1 != null; @@ -133,1057 +102,46 @@ detlDtos.add(detlDto); } }); - wrkDetlService.createWorkDetail(workNo, detlDtos, param.getBarcode(), userId); - // 鏇存柊婧愮珯鐐逛俊鎭� - sourceStaNo.setWrkNo(workNo); - sourceStaNo.setModiUser(userId); - sourceStaNo.setModiTime(now); - if (!basDevpService.updateById(sourceStaNo)){ - throw new CoolException("鏇存柊婧愮珯澶辫触"); - } - // 鏇存柊鐩爣搴撲綅鐘舵�� - LocMast locMast = locMastService.selectById(dto.getLocNo()); - if (locMast.getLocSts().equals("O")){ - locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 - locMast.setModiUser(userId); - locMast.setModiTime(now); - if (!locMastService.updateById(locMast)){ - throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); - } - } else { - throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); - } - return dto.getLocNo(); + agvWrkDetlService.createWorkDetail(wrkMast.getWrkNo(), detlDtos, wrkMast.getBarcode(), userId); + } - @Override - @Transactional - public void startupFullTakeStore(StockOutParam param, Long userId) { - ArrayList<String> locNos = new ArrayList<>(); - for (StockOutParam.LocDetl locDetl:param.getLocDetls()){ - if (!locNos.contains(locDetl.getLocNo())){ - locNos.add(locDetl.getLocNo()); - } - } - //妫�娴嬫槸鍚︿负娴呭簱浣� - boolean sign=false; - String th = ""; - for (String locNo:locNos){ - if (sign){ - break; - } - - //妫�娴嬪嚭搴撶殑璐х墿涓槸鍚︽湁鐘舵�佷负绂佹鐨勮揣鐗┿�� - for (LocDetl locDetl : locDetlService.selectByLocNo(locNo)) { - if (locDetl.getStockFreeze() == 0) { - th="搴撲綅鍙凤細"+locNo+" 鏈夌姝㈠嚭搴撶殑璐х墿锛�"; - throw new CoolException("鍑哄簱澶辫触锛�"+th); - } - - Mat mat = matService.selectByMatnr(locDetl.getMatnr()); - if (mat == null) { - continue; - } - if (mat.getStatus() == 0) { - th="搴撲綅鍙凤細"+locNo+" 鏈夌姝㈠嚭搴撶殑璐х墿锛�"; - throw new CoolException("鍑哄簱澶辫触锛�"+th); - } - } - - List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo); - if (!Cools.isEmpty(groupInsideLoc)) { - for (String insideLoc : groupInsideLoc) { - if (locNos.contains(insideLoc)){ - continue; - } - LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", insideLoc)); - if (locMast != null) { - if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")){ - sign=true; - th="搴撲綅鍙凤細"+locNo+" 娴呭簱浣嶆湁闈炵┖搴撲綅锛�"; - break; - } - } - } - } - } - if (sign){ - throw new CoolException("鍑哄簱澶辫触锛�"+th); - } - // 鐩爣绔欑偣鐘舵�佹娴� - BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); - // 鑾峰彇搴撲綅鏄庣粏 - List<LocDetlDto> locDetlDtos = new ArrayList<>(); - for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { - if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { - LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); - if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); - } - } - if (!locDetlDtos.isEmpty()) { - // 鍚姩鍑哄簱寮�濮� 101.鍑哄簱 - stockOut(staNo, locDetlDtos, null, userId); - } else { - throw new CoolException("搴撳瓨涓嶅瓨鍦�"); - } - } - /** - * 閫氳繃搴撲綅鍙疯幏鍙� 鎺� + /* + 鐢熸垚宸ヤ綔妗� */ - public static int getRow(String locNo) { - if (!Cools.isEmpty(locNo)) { - return Integer.parseInt(locNo.substring(0, 2)); - } - throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); - } - /** - * 閫氳繃搴撲綅鍙疯幏鍙� 鍒� - */ - public static int getBay(String locNo) { - if (!Cools.isEmpty(locNo)) { - return Integer.parseInt(locNo.substring(2, 5)); - } - throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); - } - /** - * 閫氳繃搴撲綅鍙疯幏鍙� 灞� - */ - public static int getLev(String locNo) { - if (!Cools.isEmpty(locNo)) { - return Integer.parseInt(locNo.substring(5, 7)); - } - throw new RuntimeException("搴撲綅瑙f瀽寮傚父"); - } - - @Override - @Transactional - public void stockOut(BasDevp staNo, List<LocDetlDto> locDetlDtos, IoWorkType ioWorkType, Long userId) { - Date now = new Date(); - // 鍚堝苟鍚岀被椤� - Set<String> locNos = new HashSet<>(); - List<OutLocDto> dtos = new ArrayList<>(); - for (LocDetlDto locDetlDto : locDetlDtos) { - String locNo = locDetlDto.getLocDetl().getLocNo(); - if (locNos.contains(locNo)) { - for (OutLocDto dto : dtos) { - if (dto.getLocNo().equals(locNo)) { - dto.getLocDetlDtos().add(locDetlDto); - break; - } - } - } else { - locNos.add(locNo); - dtos.add(new OutLocDto(locNo, locDetlDto)); - } - } - Integer ioType = null; - List<String> excludeLocNos = dtos.stream().map(OutLocDto::getLocNo).distinct().collect(Collectors.toList()); - // 鐢熸垚宸ヤ綔妗� - for (OutLocDto dto : dtos) { - // 濡傛灉涓烘繁搴撲綅锛屼笖瀵瑰簲娴呭簱浣嶄负X.绂佺敤锛屽垯鐣ヨ繃姝ゅ簱浣� - if (Utils.isDeepLoc(slaveProperties, dto.getLocNo())) { - String shallowLoc = Utils.getShallowLoc(slaveProperties, dto.getLocNo()); - if (locMastService.selectById(shallowLoc).getLocSts().equals("X")) { - continue; - } - } - - // 鍒ゆ柇鍏ュ嚭搴撶被鍨嬶細101.鍏ㄦ澘鍑哄簱 or 103.鎷f枡鍑哄簱 - if (ioWorkType == null) { - ioType = dto.isAll() ? 101 : 103; - } else if (ioWorkType.equals(IoWorkType.CHECK_OUT)) { - ioType = 107; - } - assert ioType != null; - // 鑾峰彇搴撲綅 - LocMast locMast = locMastService.selectById(dto.getLocNo()); - // 鑾峰彇璺緞 - Boolean outMost = locMastService.isOutMost(dto.getLocNo(), false); - Integer outCrnNo = locMastService.getOutCrnNo(locMast); - StaDesc staDesc = staDescService.queryCrnStn(ioType, outCrnNo, staNo.getDevNo()); - // 鐢熸垚宸ヤ綔鍙� - int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); - // 鐢熸垚宸ヤ綔妗� - WrkMast wrkMast = new WrkMast(); - wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(now); - wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟 - wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� - Double ioPri = wrkMastService.getIoPri(ioType, dto.getLocNo()); - wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13 - wrkMast.setOutMost(outMost?1:0);; - wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo()); - wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 - wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� - wrkMast.setSourceLocNo(dto.getLocNo()); // 婧愬簱浣� - wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 - wrkMast.setPicking("N"); // 鎷f枡 - wrkMast.setExitMk("N"); // 閫�鍑� - wrkMast.setEmptyMk("N"); // 绌烘澘 - wrkMast.setLinkMis("N"); - wrkMast.setBarcode(locMast.getBarcode()); - wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 - wrkMast.setAppeTime(now); - wrkMast.setModiUser(userId); - wrkMast.setModiTime(now); - if (!wrkMastService.insert(wrkMast)) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+dto.getLocNo()); - } - // 鐢熸垚宸ヤ綔妗f槑缁� - for (LocDetlDto detlDto : dto.getLocDetlDtos()) { - if (detlDto.getCount()==null || detlDto.getCount() <= 0.0D) {continue;} - WrkDetl wrkDetl = new WrkDetl(); - wrkDetl.sync(detlDto.getLocDetl()); - wrkDetl.setOrderNo(""); // 鎵嬪姩鍑哄簱涓嶉渶瑕佸甫鍑哄簱瀛樹腑鐨勫崟鎹紪鍙� - wrkDetl.setWrkNo(workNo); - wrkDetl.setIoTime(now); - Double anfme = ioType==101?detlDto.getLocDetl().getAnfme():detlDto.getCount(); - wrkDetl.setAnfme(anfme); // 鏁伴噺 - wrkDetl.setAppeTime(now); - wrkDetl.setAppeUser(userId); - wrkDetl.setModiTime(now); - wrkDetl.setModiUser(userId); - if (!wrkDetlService.insert(wrkDetl)) { - throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); - } - } - // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓� - locMast = locMastService.selectById(dto.getLocNo()); - if (locMast.getLocSts().equals("F")) { - locMast.setLocSts(ioType==101?"R":"P"); - locMast.setModiUser(userId); - locMast.setModiTime(now); - if (!locMastService.updateById(locMast)) { - throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+dto.getLocNo()); - } - } else { - throw new CoolException(dto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��"); - } - locMastService.breakUp(dto.getLocNo(), excludeLocNos); - } - } - - @Override - @Transactional - public void stockOut(BasDevp staNo, TaskDto taskDto, Long userId) { - Date now = new Date(); - List<LocDto> locDtos = taskDto.getLocDtos(); - for (LocDto locDto : locDtos) { - if (!taskDto.getLocNo().equals(locDto.getLocNo()) && !taskDto.getStaNo().equals(locDto.getStaNo())) { - throw new CoolException("璁㈠崟鍑哄簱寮傚父锛岃鑱旂郴绠$悊鍛�"); - } - } - // 鑾峰彇搴撲綅 - LocMast locMast = locMastService.selectById(taskDto.getLocNo()); - // 鑾峰彇璺緞 - int ioType = taskDto.isAll() ? 101 : 103; - Boolean outMost = locMastService.isOutMost(taskDto.getLocNo(), false); - Integer outCrnNo = locMastService.getOutCrnNo(locMast); - StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, outCrnNo, staNo.getDevNo()); - // 鐢熸垚宸ヤ綔鍙� - int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); - // 鐢熸垚宸ヤ綔妗� - WrkMast wrkMast = new WrkMast(); + private AgvWrkMast createWrkMast(AgvBasDevp agvBasDevp,AgvLocMast agvLocMast, Date now, Long userId){ + AgvWrkMast wrkMast = new AgvWrkMast(); + //鐢熸垚宸ヤ綔鍙� + int workNo = agvCommonService.getWorkNo(0); wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(now); - wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟 - wrkMast.setIoType(ioType); // 鍏ュ嚭搴撶姸鎬� - Double ioPri = wrkMastService.getIoPri(ioType, taskDto.getLocNo()); - wrkMast.setIoPri(ioPri); // 浼樺厛绾э細13 - wrkMast.setOutMost(outMost?1:0);; - wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo()); - wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 婧愮珯 - wrkMast.setStaNo(staDesc.getStnNo()); // 鐩爣绔� - wrkMast.setSourceLocNo(taskDto.getLocNo()); // 婧愬簱浣� + wrkMast.setIoTime(new Date()); + wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID + wrkMast.setIoType(1); // 鍏ュ嚭搴撶姸鎬侊細1.鍏ュ簱 + //鐢熸垚浼樺厛绾� + wrkMast.setIoPri(300.0); + wrkMast.setSourceLocNo(agvBasDevp.getDevNo()); + wrkMast.setLocNo(agvLocMast.getLocNo()); + wrkMast.setBarcode(agvBasDevp.getBarcode()); wrkMast.setFullPlt("Y"); // 婊℃澘锛歒 wrkMast.setPicking("N"); // 鎷f枡 wrkMast.setExitMk("N"); // 閫�鍑� wrkMast.setEmptyMk("N"); // 绌烘澘 wrkMast.setLinkMis("N"); - wrkMast.setBarcode(locMast.getBarcode()); - wrkMast.setAppeUser(userId); // 鎿嶄綔浜哄憳鏁版嵁 - wrkMast.setAppeTime(now); - wrkMast.setModiUser(userId); - wrkMast.setModiTime(now); - if (!wrkMastService.insert(wrkMast)) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐ワ紝鍑哄簱搴撲綅鍙凤細"+taskDto.getLocNo()); - } - // 鐢熸垚宸ヤ綔妗f槑缁� - for (LocDto locDto : taskDto.getLocDtos()) { - if (locDto.getAnfme()==null || locDto.getAnfme() <= 0.0D) { continue; } - LocDetl locDetl = locDetlService.selectItem(locDto.getLocNo(), locDto.getMatnr(), locDto.getBatch()); - if (locDetl == null || locDetl.getAnfme() < locDto.getAnfme()) { - throw new CoolException(locDto.getLocNo() + "搴撲綅涓�" + locDto.getMatnr() + "鍟嗗搧搴撳瓨涓嶈冻锛�"); - } - Mat mat = matService.selectByMatnr(locDto.getMatnr()); - assert mat != null; - WrkDetl wrkDetl = new WrkDetl(); - wrkDetl.sync(mat); - wrkDetl.setZpallet(wrkMast.getBarcode()); - wrkDetl.setIoTime(now); - wrkDetl.setWrkNo(workNo); - wrkDetl.setBatch(locDto.getBatch()); - wrkDetl.setOrderNo(locDto.getOrderNo()); - wrkDetl.setAnfme(locDto.getAnfme()); // 鏁伴噺 - wrkDetl.setAppeTime(now); - wrkDetl.setAppeUser(userId); - wrkDetl.setModiTime(now); - wrkDetl.setModiUser(userId); - if (!wrkDetlService.insert(wrkDetl)) { - throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); - } - // 淇敼璁㈠崟鏄庣粏 - if (!BaseController.isJSON(locDto.getOrderNo())) { - OrderDetl orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); - if (orderDetl == null) { - orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); - } - if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), locDto.getAnfme())) { - throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); - } - orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); - } else { - // 璁㈠崟鍚堝苟鍑哄簱 - List<OrderDto> orderDtoList = JSON.parseArray(locDto.getOrderNo(), OrderDto.class); - for (OrderDto orderDto : orderDtoList) { - OrderDetl orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), locDto.getBatch()); - if (orderDetl == null) { - orderDetl = orderDetlService.selectItem(orderDto.getOrderNo(), locDto.getMatnr(), null); - } - if (!orderDetlService.increase(orderDetl.getOrderId(), orderDetl.getMatnr(), orderDetl.getBatch(), orderDto.getAnfme())) { - throw new CoolException("淇敼璁㈠崟鏄庣粏鏁伴噺澶辫触"); - } - orderService.updateSettle(orderDetl.getOrderId(), 2L, userId); - } - } - } - // 淇敼搴撲綅鐘舵��: F.鍦ㄥ簱 ====>>> R.鍑哄簱棰勭害/P.鎷f枡/鐩樼偣/骞舵澘鍑哄簱涓� - locMast = locMastService.selectById(taskDto.getLocNo()); - if (locMast.getLocSts().equals("F")) { - locMast.setLocSts(ioType==101?"R":"P"); - locMast.setModiUser(userId); - locMast.setModiTime(now); - if (!locMastService.updateById(locMast)) { - throw new CoolException("棰勭害搴撲綅鐘舵�佸け璐ワ紝搴撲綅鍙凤細"+taskDto.getLocNo()); - } - } else { - throw new CoolException(taskDto.getLocNo() + "搴撲綅涓嶆槸鍦ㄥ簱鐘舵��"); - } - } - - @Override - @Transactional - public String emptyPlateIn(Integer devpNo, Long userId) { - // 婧愮珯鐐圭姸鎬佹娴� - BasDevp sourceStaNo = basDevpService.checkSiteStatus(devpNo, true); - // 妫�绱㈠簱浣� - LocTypeDto locTypeDto = new LocTypeDto(sourceStaNo); - StartupDto dto = commonService.getLocNo(DEFAULT_ROW_NO_TYPE, 10, devpNo, null, locTypeDto, 0); - int workNo = dto.getWorkNo(); - // 鐢熸垚宸ヤ綔妗� - WrkMast wrkMast = new WrkMast(); - wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(new Date()); - wrkMast.setWrkSts(1L); // 宸ヤ綔鐘舵�侊細鐢熸垚鍏ュ簱ID - wrkMast.setIoType(10); // 鍏ュ嚭搴撶姸鎬侊細10.绌烘澘鍏ュ簱 - Double ioPri = wrkMastService.getIoPri(10, dto.getLocNo()); - wrkMast.setIoPri(ioPri); // 浼樺厛绾э細10 - wrkMast.setOutMost(locMastService.isOutMost(dto.getLocNo(), true)?1:0);; - wrkMast.setCrnNo(dto.getCrnNo()); - wrkMast.setSourceStaNo(dto.getSourceStaNo()); - wrkMast.setStaNo(dto.getStaNo()); - wrkMast.setLocNo(dto.getLocNo()); - wrkMast.setFullPlt("N"); // 婊℃澘 - wrkMast.setPicking("N"); // 鎷f枡 - wrkMast.setExitMk("N"); // 閫�鍑� - wrkMast.setEmptyMk("Y"); // 绌烘澘 - wrkMast.setLinkMis("N"); - wrkMast.setCtnType(sourceStaNo.getCtnType()); // 瀹瑰櫒绫诲瀷 - // 鎿嶄綔浜哄憳鏁版嵁 - wrkMast.setAppeUser(userId); - wrkMast.setAppeTime(new Date()); - wrkMast.setModiUser(userId); - wrkMast.setModiTime(new Date()); - boolean res = wrkMastService.insert(wrkMast); - if (!res) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); - } - // 鏇存柊婧愮珯鐐逛俊鎭� - sourceStaNo.setWrkNo(workNo); - sourceStaNo.setModiUser(userId); - sourceStaNo.setModiTime(new Date()); - if (!basDevpService.updateById(sourceStaNo)){ - throw new CoolException("鏇存柊婧愮珯澶辫触"); - } - // 鏇存柊鐩爣搴撲綅鐘舵�� - LocMast locMast = locMastService.selectById(dto.getLocNo()); - if (locMast.getLocSts().equals("O")){ - locMast.setLocSts("S"); // S.鍏ュ簱棰勭害 - locMast.setModiUser(userId); - locMast.setModiTime(new Date()); - if (!locMastService.updateById(locMast)){ - throw new CoolException("鏀瑰彉搴撲綅鐘舵�佸け璐�"); - } - } else { - throw new CoolException(dto.getLocNo()+"鐩爣搴撲綅宸茶鍗犵敤"); - } - return dto.getLocNo(); - } - - @Override - @Transactional - public void emptyPlateOut(EmptyPlateOutParam param, Long userId) { - List<String> locNos = param.getLocNos(); - //妫�娴嬫槸鍚︿负娴呭簱浣� - boolean sign=false; - String th = ""; - for (String locNo:locNos){ - if (sign){ - break; - } - List<String> groupInsideLoc = Utils.getGroupInsideLoc(locNo); - if (!Cools.isEmpty(groupInsideLoc)) { - for (String insideLoc : groupInsideLoc) { - if (locNos.contains(insideLoc)){ - continue; - } - LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", insideLoc)); - if (locMast != null) { - if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")){ - sign=true; - th="搴撲綅鍙凤細"+locNo+" 娴呭簱浣嶆湁闈炵┖搴撲綅锛�"; - break; - } - } - } - } - } - if (sign){ - throw new CoolException("鍑哄簱澶辫触锛�"+th); - } - if (Cools.isEmpty(param.getOutSite())) { - throw new CoolException("绔欑偣涓嶅瓨鍦�"); - } - for (String locNo : param.getLocNos()) { - // 濡傛灉涓烘繁搴撲綅锛屼笖瀵瑰簲娴呭簱浣嶄负X.绂佺敤锛屽垯鐣ヨ繃姝ゅ簱浣� - if (Utils.isDeepLoc(slaveProperties, locNo)) { - String shallowLoc = Utils.getShallowLoc(slaveProperties, locNo); - if (locMastService.selectById(shallowLoc).getLocSts().equals("X")) { - continue; - } - } - // 鑾峰彇宸ヤ綔鍙� - int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type); - // 鑾峰彇搴撲綅 - LocMast locMast = locMastService.selectById(locNo); - if (Cools.isEmpty(locMast)) { - throw new CoolException(locNo+"搴撲綅涓嶅瓨鍦�"); - } - Boolean outMost = locMastService.isOutMost(locNo, false); - Integer outCrnNo = locMastService.getOutCrnNo(locMast); - // 鑾峰彇婧愮珯 - Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() - .eq("type_no", 110) - .eq("stn_no", param.getOutSite()) - .eq("crn_no", outCrnNo); - StaDesc staDesc = staDescService.selectOne(wrapper); - if (Cools.isEmpty(staDesc)) { - throw new CoolException("闈炴硶璺緞锛�"); - } - Integer sourceStaNo = staDesc.getCrnStn(); - if (Cools.isEmpty(sourceStaNo)) { - throw new CoolException("妫�绱㈡簮绔欏け璐�"); - } - // 淇濆瓨宸ヤ綔妗� - WrkMast wrkMast = new WrkMast(); - wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(new Date()); - wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟 - wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 - Double ioPri = wrkMastService.getIoPri(110, locNo); - wrkMast.setIoPri(ioPri); - wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 - wrkMast.setStaNo(param.getOutSite()); // 鐩爣绔� - wrkMast.setOutMost(outMost?1:0);; - wrkMast.setCrnNo(outMost?outCrnNo:locMast.getCrnNo()); - wrkMast.setSourceLocNo(locNo); // 婧愬簱浣� - wrkMast.setFullPlt("N"); // 婊℃澘锛歒 - wrkMast.setPicking("N"); // 鎷f枡 - wrkMast.setExitMk("N"); // 閫�鍑� - wrkMast.setEmptyMk("Y"); // 绌烘澘 - wrkMast.setLinkMis("N"); - wrkMast.setAppeUser(userId); - wrkMast.setAppeTime(new Date()); - wrkMast.setModiUser(userId); - wrkMast.setModiTime(new Date()); - boolean res = wrkMastService.insert(wrkMast); - if (!res) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); - } - // 鏇存柊搴撲綅鐘舵�� D.绌烘澘 -> R.鍑哄簱棰勭害 - if (locMast.getLocSts().equals("D")){ - locMast.setLocSts("R"); - locMast.setModiUser(userId); - locMast.setModiTime(new Date()); - if (!locMastService.updateById(locMast)) { - throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�"); - } - } - } - } - - @Override - @Transactional - public void locCheckOut(StockOutParam param, Long userId) { - // 鐩爣绔欑偣鐘舵�佹娴� - BasDevp staNo = basDevpService.checkSiteStatus(param.getOutSite()); - // 鑾峰彇搴撲綅鏄庣粏 - List<LocDetlDto> locDetlDtos = new ArrayList<>(); - for (StockOutParam.LocDetl paramLocDetl : param.getLocDetls()) { - if (!Cools.isEmpty(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getCount())) { - LocDetl one = locDetlService.selectItem(paramLocDetl.getLocNo(), paramLocDetl.getMatnr(), paramLocDetl.getBatch()); - if (null != one) locDetlDtos.add(new LocDetlDto(one, paramLocDetl.getCount())); - } - } - if (!locDetlDtos.isEmpty()) { - // 鍚姩鍑哄簱寮�濮� 107.鐩樼偣鍑哄簱 - stockOut(staNo, locDetlDtos, IoWorkType.CHECK_OUT, userId); - } else { - throw new CoolException("搴撲綅鐗╂枡涓嶅瓨鍦�"); - } - } - - @Override - @Transactional - public void locMove(String sourceLocNo, String locNo, Long userId) { - LocMast sourceLoc = locMastService.selectById(sourceLocNo); - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); - if (Cools.isEmpty(sourceLoc)){ - throw new CoolException("鏈壘鍒板簱浣�"); - } - LocMast loc = locMastService.selectById(locNo); - if (Cools.isEmpty(loc)){ - throw new CoolException("鏈壘鍒板簱浣�"); - } - if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { -// throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); todo:luxiaotao - } - Date now = new Date(); - // 鑾峰彇宸ヤ綔鍙� - int workNo = commonService.getWorkNo(WorkNoType.PICK.type); - // 淇濆瓨宸ヤ綔妗� - WrkMast wrkMast = new WrkMast(); - wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(now); - wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟 - wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 - wrkMast.setIoPri(10D); - wrkMast.setOutMost(locMastService.isOutMost(locNo, false)?1:0);; - wrkMast.setCrnNo(sourceLoc.getCrnNo()); - wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣� - wrkMast.setLocNo(locNo); // 鐩爣搴撲綅 - wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒 - wrkMast.setPicking("N"); // 鎷f枡 - wrkMast.setExitMk("N"); // 閫�鍑� - wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘 - wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮� - wrkMast.setLinkMis("N"); wrkMast.setAppeUser(userId); wrkMast.setAppeTime(now); wrkMast.setModiUser(userId); wrkMast.setModiTime(now); - boolean res = wrkMastService.insert(wrkMast); - if (!res) { + if (!agvWrkMastService.insert(wrkMast)) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } - // 宸ヤ綔妗f槑缁嗕繚瀛� - for (LocDetl locDetl : locDetls) { - WrkDetl wrkDetl = new WrkDetl(); - wrkDetl.sync(locDetl); - wrkDetl.setWrkNo(workNo); - wrkDetl.setIoTime(now); - wrkDetl.setAnfme(locDetl.getAnfme()); - wrkDetl.setAppeTime(now); - wrkDetl.setAppeUser(userId); - wrkDetl.setModiTime(now); - wrkDetl.setModiUser(userId); - if (!wrkDetlService.insert(wrkDetl)) { - throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); - } - } - // 淇敼婧愬簱浣嶇姸鎬� - if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { - sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 - sourceLoc.setModiUser(userId); - sourceLoc.setModiTime(now); - if (!locMastService.updateById(sourceLoc)){ - throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); - } - } else { - throw new CoolException(sourceLoc.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$()); - } - // 淇敼鐩爣搴撲綅鐘舵�� - if (loc.getLocSts().equals("O")) { - loc.setLocSts("S"); // S.鍏ュ簱棰勭害 - loc.setModiTime(now); - loc.setModiUser(userId); - if (!locMastService.updateById(loc)) { - throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); - } - } else { - throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$()); - } + return wrkMast; + } - @Override - @Transactional - public void completeWrkMast(String workNo, Long userId) { - WrkMast wrkMast = wrkMastService.selectById(workNo); - if (Cools.isEmpty(wrkMast)){ - throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); - } - if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 17) { - throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚"); - } - // 鍏ュ簱 + 搴撲綅杞Щ - if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) { - wrkMast.setWrkSts(9L); - // 鍑哄簱 - } else if (wrkMast.getWrkSts() > 10) { - wrkMast.setWrkSts(17L); - } - Date now = new Date(); - wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true)); - wrkMast.setCrnEndTime(now); - wrkMast.setModiTime(now); - wrkMast.setModiUser(userId); - // 瀹屾垚鎿嶄綔浜哄憳璁板綍 - wrkMast.setManuType("鎵嬪姩瀹屾垚"); - if (!wrkMastService.updateById(wrkMast)) { - throw new CoolException("淇敼宸ヤ綔妗eけ璐�"); - } + public static void main(String[] args) { + Set<AgvBasDevp> set = new HashSet<>(); + set.add(null); + set.add(null); + System.out.println(set.size()); } - - @Override - @Transactional - public void adjustLocDetl(LocDetlAdjustParam param, Long userId) { - param.integrate(); - LocMast locMast = locMastService.selectById(param.getLocNo()); - if (Cools.isEmpty(locMast)) { - throw new CoolException("搴撲綅涓嶅瓨鍦�"); - } - if (!(locMast.getLocSts().equals("F") || locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O"))) { - throw new CoolException("褰撳墠搴撲綅涓嶅彲璋冩暣锛佸簱浣嶇姸鎬侊細" + locMast.getLocSts$()); - } - - Date now = new Date(); - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", param.getLocNo())); - - List<LocDetlAdjustParam.LocDetlAdjust> list = param.getList(); - - // 淇敼鏁伴噺 - Iterator<LocDetl> iterator = locDetls.iterator(); - while (iterator.hasNext()) { - LocDetl locDetl = iterator.next(); - - Iterator<LocDetlAdjustParam.LocDetlAdjust> iterator1 = list.iterator(); - while (iterator1.hasNext()) { - LocDetlAdjustParam.LocDetlAdjust adjust = iterator1.next(); - if (adjust.getCount() == 0) { continue; } - if (locDetl.getMatnr().equals(adjust.getMatnr()) && Cools.eq(locDetl.getBatch(), adjust.getBatch())) { - if (!locDetl.getAnfme().equals(adjust.getCount())) { - // todo 鐩樼偣璁板綍 - // 淇敼搴撳瓨 - if (!locDetlService.updateAnfme(adjust.getCount(), locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { - throw new CoolException(locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佷慨鏀规暟閲忓け璐�"); - } - // 淇濆瓨璋冩暣璁板綍 - AdjDetl adjDetl = new AdjDetl(); - adjDetl.setLocNo(locDetl.getLocNo()); - adjDetl.setMatnr(locDetl.getMatnr()); - adjDetl.setBatch(locDetl.getBatch()); - adjDetl.setOriQty(locDetl.getAnfme()); - adjDetl.setAdjQty(adjust.getCount()); - adjDetl.setModiTime(now); - adjDetl.setModiUser(userId); - adjDetl.setAppeTime(now); - adjDetl.setAppeUser(userId); - adjDetlService.save(adjDetl, userId); - } - iterator.remove(); - iterator1.remove(); - } - } - } - - // 鍒犻櫎搴撳瓨 - for (LocDetl locDetl : locDetls) { - // todo 鐩樼偣璁板綍 - if (!locDetlService.updateAnfme(-1.0D, locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getBatch())) { - throw new CoolException("鍒犻櫎" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�"); - } - // 淇濆瓨璋冩暣璁板綍 - AdjDetl adjDetl = new AdjDetl(); - adjDetl.setLocNo(locDetl.getLocNo()); - adjDetl.setMatnr(locDetl.getMatnr()); - adjDetl.setBatch(locDetl.getBatch()); - adjDetl.setOriQty(locDetl.getAnfme()); - adjDetl.setAdjQty(0.0D); - adjDetl.setModiTime(now); - adjDetl.setModiUser(userId); - adjDetl.setAppeTime(now); - adjDetl.setAppeUser(userId); - adjDetlService.save(adjDetl, userId); - } - - // 娣诲姞搴撳瓨 - for (LocDetlAdjustParam.LocDetlAdjust adjust : list) { - if (adjust.getCount() == 0.0D) { continue; } - Mat mat = matService.selectByMatnr(adjust.getMatnr()); - LocDetl locDetl = new LocDetl(); - locDetl.sync(mat); - locDetl.setBatch(adjust.getBatch()); - locDetl.setLocNo(locMast.getLocNo()); - locDetl.setAnfme(adjust.getCount()); // 鏁伴噺 - locDetl.setModiUser(userId); // 鎿嶄綔浜哄憳淇℃伅 - locDetl.setModiTime(now); - locDetl.setAppeUser(userId); - locDetl.setAppeTime(now); - if (!locDetlService.insert(locDetl)) { - throw new CoolException("娣诲姞" + locDetl.getLocNo() + "搴撲綅锛�" + locDetl.getMatnr() + "鍟嗗搧锛�" + locDetl.getBatch() + "搴忓垪鐮佸簱瀛樻槑缁嗗け璐�"); - } - // 淇濆瓨璋冩暣璁板綍 - AdjDetl adjDetl = new AdjDetl(); - adjDetl.setLocNo(locMast.getLocNo()); - adjDetl.setMatnr(adjust.getMatnr()); - adjDetl.setBatch(adjust.getBatch()); - adjDetl.setOriQty(0.0D); - adjDetl.setAdjQty(adjust.getCount()); - adjDetl.setModiTime(now); - adjDetl.setModiUser(userId); - adjDetl.setAppeTime(now); - adjDetl.setAppeUser(userId); - adjDetlService.save(adjDetl, userId); - } - // 淇敼搴撲綅鐘舵�� - int count = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("loc_no", locMast.getLocNo())); - if (locMast.getLocSts().equals("F")) { - if (count == 0) { - locMast.setLocSts("D"); - } - } - if (locMast.getLocSts().equals("D") || locMast.getLocSts().equals("O")) { - if (count > 0) { - locMast.setLocSts("F"); - } - } - locMast.setModiUser(userId); - locMast.setModiTime(new Date()); - if (!locMastService.updateById(locMast)) { - throw new CoolException("鏇存柊搴撲綅鐘舵�佸け璐�"); - } - } - - - @Override - @Transactional - public void cancelWrkMast(String workNo, Long userId) { - WrkMast wrkMast = wrkMastService.selectById(workNo); - if (Cools.isEmpty(wrkMast)){ - throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); - } - String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣� - String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬� - // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級 - if (wrkMast.getWrkSts() < 9) { - locNo = wrkMast.getLocNo(); - locSts = "O"; - - // 搴撲綅杞Щ - if (wrkMast.getIoType() == 11) { - // 搴撲綅杞Щ锛氭簮搴撲綅 - LocMast locMast = locMastService.selectById(wrkMast.getSourceLocNo()); - if (Cools.isEmpty(locMast)) { - throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo()); - } - locMast.setLocSts("F"); - locMast.setModiTime(new Date()); - locMast.setModiUser(userId); - locMastService.updateById(locMast); - } - // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛� - } else if (wrkMast.getWrkSts() > 10 && wrkMast.getWrkSts() != 19) { - locNo = wrkMast.getSourceLocNo(); - // 鍑哄簱 ===>> F.鍦ㄥ簱 - if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) { - locSts = "F"; - // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉� - } else if (wrkMast.getIoType() == 110) { - locSts = "D"; - // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉� - } else if (wrkMast.getIoType() == 11) { - locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F"; - // 搴撲綅杞Щ锛氱洰鏍囧簱浣� - LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); - if (Cools.isEmpty(locMast)) { - throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo()); - } - locMast.setLocSts("O"); - locMast.setModiTime(new Date()); - locMast.setModiUser(userId); - locMastService.updateById(locMast); - } - } else { - throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�"); - } - // 璁㈠崟鍏宠仈 - List<WrkDetl> wrkDetls = wrkDetlService.selectByWrkNo(wrkMast.getWrkNo()); - for (WrkDetl wrkDetl : wrkDetls) { - if (!Cools.isEmpty(wrkDetl.getOrderNo())) { - if (!BaseController.isJSON(wrkDetl.getOrderNo())) { - if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) { - throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); - } - } else { - // 璁㈠崟鍚堝苟鍑哄簱 - List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class); - for (OrderDto orderDto : orderDtoList) { - if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderDto.getAnfme())) { - throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触"); - } - } - } - } - } - // 鍙栨秷鎿嶄綔浜哄憳璁板綍 - wrkMast.setManuType("鎵嬪姩鍙栨秷"); - wrkMast.setModiUser(userId); - wrkMast.setModiTime(new Date()); - if (!wrkMastService.updateById(wrkMast)) { - throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�"); - } - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (!wrkMastLogService.save(wrkMast.getWrkNo())) { - throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); - } - // 鍒犻櫎宸ヤ綔涓绘。 - boolean wrkMastRes = wrkMastService.deleteById(wrkMast); - - if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) { - // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 - if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { -// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo()); - } - // 鍒犻櫎宸ヤ綔妗f槑缁� - boolean wrkDetlRes = wrkDetlService.delete(new EntityWrapper<WrkDetl>().eq("wrk_no", workNo)); - } - - // 淇敼搴撲綅鐘舵�� - LocMast locMast = locMastService.selectById(locNo); - if (Cools.isEmpty(locMast)) { - throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo); - } - locMast.setLocSts(locSts); - locMast.setModiTime(new Date()); - locMast.setModiUser(userId); - boolean locMastRes = locMastService.updateById(locMast); - if (!wrkMastRes || !locMastRes) { - throw new CoolException("淇濆瓨鏁版嵁澶辫触"); - } - } - - @Override - @Transactional - public void pickWrkMast(String workNo, Long userId) { - WrkMast wrkMast = wrkMastService.selectById(workNo); - if (Cools.isEmpty(wrkMast)){ - throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪"); - } - // 鍏ュ嚭搴撶被鍨嬪垽鏂� - if (wrkMast.getIoType() != 103 && wrkMast.getIoType() != 104 && wrkMast.getIoType() != 107) { - throw new CoolException("褰撳墠鍏ュ嚭搴撶被鍨嬫棤娉曡繘琛屾搷浣�"); - } - // 宸ヤ綔鐘舵�佸垽鏂� - if (wrkMast.getWrkSts() < 11 || wrkMast.getWrkSts() == 15) { - throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曡繘琛屾搷浣�"); - } - // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。 -// if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { -// throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。澶辫触"); -// } - // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗� - if (!wrkMastLogService.save(wrkMast.getWrkNo())) { - throw new CoolException("淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗eけ璐�"); - } - // 鑾峰彇鐩爣绔� - Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() - .eq("type_no", wrkMast.getIoType() - 50) - .eq("stn_no", wrkMast.getStaNo()) // 浣滀笟绔欑偣 = 鎷f枡鍑哄簱鐨勭洰鏍囩珯 - .eq("crn_no", wrkMast.getCrnNo()); // 鍫嗗灈鏈哄彿 - StaDesc staDesc = staDescService.selectOne(wrapper); - if (Cools.isEmpty(staDesc)) { - throw new CoolException("鍏ュ簱璺緞涓嶅瓨鍦�"); - } - // 鍫嗗灈鏈虹珯鐐�(鐩爣绔�) - Integer staNo = staDesc.getCrnStn(); - // 鏇存柊宸ヤ綔妗f暟鎹姸鎬� - wrkMast.setIoType(wrkMast.getIoType() - 50); // 鍏ュ嚭搴撶被鍨�: 103->53,104->54,107->57 - wrkMast.setWrkSts(2L); // 宸ヤ綔鐘舵��: 2.璁惧涓婅蛋 - wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 婧愮珯 - wrkMast.setStaNo(staNo); // 鐩爣绔� - wrkMast.setLocNo(wrkMast.getSourceLocNo()); // 鐩爣搴撲綅 = 鍑哄簱鏃剁殑婧愬簱浣� - wrkMast.setSourceLocNo(""); // 婧愬簱浣嶆竻绌� - wrkMast.setModiTime(new Date()); - wrkMast.setModiUser(userId); - if (!wrkMastService.updateById(wrkMast)) { - throw new CoolException("鏇存柊宸ヤ綔妗f暟鎹姸鎬佸け璐�"); - } - // 淇敼搴撲綅鐘舵�� Q.鎷f枡/鐩樼偣/骞舵澘鍐嶅叆搴� - LocMast locMast = locMastService.selectById(wrkMast.getLocNo()); - locMast.setLocSts("Q"); - locMast.setModiTime(new Date()); - locMast.setModiUser(userId); - if (!locMastService.updateById(locMast)) { - throw new CoolException("淇敼搴撲綅鐘舵�佸け璐�"); - } - } - - @Override - public StartupDto createWaitPainWrkMastStart(List<AgvWaitPakin> list, Long userId) { - return null; - } - - @Override - @Transactional - public String dealPreHaveStart(Integer wrkNo, Long userId) { - if (true) { - throw new CoolException("鍔熻兘鍋滅敤"); - } - return ""; - } - - @Override - @Transactional - public void shuttleTransfer(List<String> locNos) { - if (Cools.isEmpty(locNos)) { - return; - } - if (true && !Cools.isEmpty(locNos)) { - throw new CoolException("鏆備笉鏀寔绉诲簱浠诲姟"); // todo:luxiaotao 绉诲簱寮�鍏� - } - LocMast one = locMastService.selectById(locNos.get(0)); - List<Integer> rows = Utils.getGroupLoc(Integer.parseInt(locNos.get(0).substring(0, 2))); - List<LocMast> locMasts = locMastService.queryFreeLocMast(rows, rows.size(), one.getLocType1()); - if (Cools.isEmpty(locMasts)) { - throw new CoolException("搴撲綅绉昏浆澶辫触锛屽凡鏃犵┖搴撲綅"); - } - // 鍏ュ簱鎺掑簭 娣卞簱浣� ==> 娴呭簱浣� - switch (locMasts.get(0).getRow1()) { - case 4: - case 5: - case 6: - case 7: - case 12: - case 13: - case 14: - case 19: - case 20: - case 21: - Collections.reverse(locMasts); - break; - default: - break; - } - if (locNos.size() > locMasts.size()) { - throw new CoolException("鏈嶅姟鍣ㄩ敊璇�"); - } - Date now = new Date(); - // 鐢熸垚绉诲簱宸ヤ綔妗� - Iterator<LocMast> iterator = locMasts.iterator(); - for (String sourceLocNo : locNos) { - - while (iterator.hasNext()) { - LocMast sourceLoc = locMastService.selectById(sourceLocNo); - List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>().eq("loc_no", sourceLocNo)); - if (Cools.isEmpty(sourceLoc)){ - throw new CoolException("鏈壘鍒板簱浣�"); - } - LocMast loc = iterator.next(); - if (Cools.isEmpty(loc)){ - throw new CoolException("鏈壘鍒板簱浣�"); - } - if (!sourceLoc.getCrnNo().equals(loc.getCrnNo())) { -// throw new CoolException("绉昏浆搴撲綅灞炰簬涓嶅悓鍫嗗灈鏈�"); todo:luxiaotao - } - // 鑾峰彇宸ヤ綔鍙� - int workNo = commonService.getWorkNo(WorkNoType.PICK.type); - // 淇濆瓨宸ヤ綔妗� - WrkMast wrkMast = new WrkMast(); - wrkMast.setWrkNo(workNo); - wrkMast.setIoTime(now); - wrkMast.setWrkSts(21L); // 宸ヤ綔鐘舵�侊細21.鐢熸垚鍑哄簱浠诲姟 - wrkMast.setIoType(11); // 鍏ュ嚭搴撶姸鎬侊細 11.搴撴牸绉昏浇 - wrkMast.setIoPri(15D); - wrkMast.setOutMost(locMastService.isOutMost(loc.getLocNo(), false)?1:0);; - wrkMast.setCrnNo(sourceLoc.getCrnNo()); - wrkMast.setSourceLocNo(sourceLocNo); // 婧愬簱浣� - wrkMast.setLocNo(loc.getLocNo()); // 鐩爣搴撲綅 - wrkMast.setFullPlt(Cools.isEmpty(locDetls)?"N":"Y"); // 婊℃澘锛歒 - wrkMast.setPicking("N"); // 鎷f枡 - wrkMast.setExitMk("N"); // 閫�鍑� - wrkMast.setEmptyMk(sourceLoc.getLocSts().equals("D")?"Y":"N"); // 绌烘澘 - wrkMast.setBarcode(sourceLoc.getBarcode()); // 鎵樼洏鐮� - wrkMast.setLinkMis("N"); - wrkMast.setAppeUser(9527L); - wrkMast.setAppeTime(now); - wrkMast.setModiUser(9527L); - wrkMast.setModiTime(now); - boolean res = wrkMastService.insert(wrkMast); - if (!res) { - throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); - } - // 宸ヤ綔妗f槑缁嗕繚瀛� - for (LocDetl locDetl : locDetls) { - WrkDetl wrkDetl = new WrkDetl(); - wrkDetl.sync(locDetl); - wrkDetl.setWrkNo(workNo); - wrkDetl.setIoTime(now); - wrkDetl.setAnfme(locDetl.getAnfme()); - wrkDetl.setAppeTime(now); - wrkDetl.setAppeUser(9527L); - wrkDetl.setModiTime(now); - wrkDetl.setModiUser(9527L); - if (!wrkDetlService.insert(wrkDetl)) { - throw new CoolException("淇濆瓨宸ヤ綔妗f槑缁嗗け璐�"); - } - } - // 淇敼婧愬簱浣嶇姸鎬� - if (sourceLoc.getLocSts().equals("D") || sourceLoc.getLocSts().equals("F")) { - sourceLoc.setLocSts("R"); // R.鍑哄簱棰勭害 - sourceLoc.setModiUser(9527L); - sourceLoc.setModiTime(now); - if (!locMastService.updateById(sourceLoc)){ - throw new CoolException("鏇存柊婧愬簱浣嶇姸鎬佸け璐�"); - } - } else { - throw new CoolException(sourceLoc.getLocNo() + "婧愬簱浣嶅嚭搴撳け璐ワ紝鐘舵�侊細"+sourceLoc.getLocSts$()); - } - // 淇敼鐩爣搴撲綅鐘舵�� - if (loc.getLocSts().equals("O")) { - loc.setLocSts("S"); // S.鍏ュ簱棰勭害 - loc.setModiTime(now); - loc.setModiUser(9527L); - if (!locMastService.updateById(loc)) { - throw new CoolException("鏇存柊鐩爣搴撲綅鐘舵�佸け璐�"); - } - } else { - throw new CoolException("绉昏浆澶辫触锛岀洰鏍囧簱浣嶇姸鎬侊細"+loc.getLocSts$()); - } - - iterator.remove(); - break; - } - } - } - } -- Gitblit v1.9.1