| | |
| | | //清空原有库位 |
| | | agvLockMastService.clearLoc(); |
| | | //初始化一楼站点 |
| | | agvLockMastService.initLocFloor1(); |
| | | //agvLockMastService.initLocFloor1(); |
| | | //初始化三楼站点 |
| | | agvLockMastService.initLocFloor3(); |
| | | |
| | |
| | | return R.error("任务编号错误"); |
| | | } |
| | | |
| | | // if(!checkParam(param,agvWrkMast)){ |
| | | // return R.error("任务参数与工作档参数不符合"); |
| | | // } |
| | | |
| | | AgvTask agvTask = AgvTask.valueOf(param.getEventType()); |
| | | Class<AgvTask> clz = AgvTask.class; |
| | | try { |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | private boolean checkParam(AgvTaskCallBackParam param, AgvWrkMast agvWrkMast){ |
| | | if(!agvWrkMast.getLocNo().equals(param.getLocationCode())){ |
| | | return false; |
| | | } |
| | | if(!agvWrkMast.getSourceLocNo().equals(param.getStationCode())){ |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | } |
| | | |
| | |
| | | agvWorkService.stockOutWrkMast(agvTaskDtos, getUserId()); |
| | | |
| | | // 生成出库任务 |
| | | List<String> excludeLocNos = taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList()); |
| | | taskDtos.stream().map(TaskDto::getLocNo).distinct().collect(Collectors.toList()); |
| | | for (TaskDto taskDto : taskDtos) { |
| | | BasDevp staNo = basDevpService.checkSiteStatus(taskDto.getStaNo()); |
| | | workService.stockOut(staNo, taskDto, getUserId()); |
| | |
| | | @Mapper |
| | | public interface AgvLocMastMapper extends BaseMapper<AgvLocMast>{ |
| | | |
| | | @Delete("delete from agv_loc_mast") |
| | | //@Delete("delete from agv_loc_mast") |
| | | @Delete("delete from agv_loc_mast where floor = '3'") |
| | | public void deleteAll(); |
| | | |
| | | @Update("update agv_loc_mast set loc_type2 = ${locType2}" + |
| | |
| | | |
| | | |
| | | public void initLocFloor3() { |
| | | //3楼 1-33排 1-14列 8层 |
| | | this.insertBatch(getLocMastList(1, 33, 1, 14, 1, 8, 3)); |
| | | //3楼 1-33排 1-14列 8层 ------> 1-33排 1-17列 8层 |
| | | this.insertBatch(getLocMastList(1, 33, 1, 17, 1, 8, 3)); |
| | | |
| | | //3楼 1-27排 15-34列 8层 |
| | | this.insertBatch(getLocMastList(1, 27, 15, 34, 1, 8, 3)); |
| | | //3楼 1-27排 15-34列 8层 ------> 1-26排 18-25列 8层 |
| | | this.insertBatch(getLocMastList(1, 27, 18, 25, 1, 8, 3)); |
| | | |
| | | //3楼 1-25排 35-46列 8层 |
| | | this.insertBatch(getLocMastList(1, 25, 35, 46, 1, 8, 3)); |
| | | //3楼 1-25排 35-46列 8层 ------> 1-25排 26-35列 8层 |
| | | this.insertBatch(getLocMastList(1, 25, 26, 35, 1, 8, 3)); |
| | | |
| | | //3楼 3-25排 47-60列 8层 |
| | | this.insertBatch(getLocMastList(3, 25, 47, 60, 1, 8, 3)); |
| | | //3楼 3-25排 47-60列 8层 ------> 1-23排 36-70列 8层 |
| | | this.insertBatch(getLocMastList(1, 23, 36, 70, 1, 8, 3)); |
| | | |
| | | //3楼 4-25排 61-70列 8层 |
| | | this.insertBatch(getLocMastList(4, 25, 61, 70, 1, 8, 3)); |
| | | //this.insertBatch(getLocMastList(4, 25, 61, 70, 1, 8, 3)); |
| | | |
| | | } |
| | | |
| | |
| | | for(int row=rowIndex; row<=rowMax; row++) { |
| | | for (int bay = bayIndex; bay <= bayMax; bay++) { |
| | | for (int lev = levIndex; lev <= levMax; lev++) { |
| | | if(row == 8 || row == 9){ |
| | | if((bay >=8 && bay <=11) |
| | | || (bay >= 20 && bay <=23) |
| | | || (bay>=37 && bay <=39) |
| | | || (bay>=50 && bay <=52) |
| | | || (bay>=63 && bay <=64) |
| | | || (bay>=79 && bay <=80)){ |
| | | continue; |
| | | } |
| | | |
| | | if(!checkLocExist(row,bay,floor)){ |
| | | continue; |
| | | } |
| | | |
| | | // if(floor == 1 && (row == 8 || row == 9)){ |
| | | // if((bay >=8 && bay <=11) |
| | | // || (bay >= 20 && bay <=23) |
| | | // || (bay>=37 && bay <=39) |
| | | // || (bay>=50 && bay <=52) |
| | | // || (bay>=63 && bay <=64) |
| | | // || (bay>=79 && bay <=80)){ |
| | | // continue; |
| | | // } |
| | | // } |
| | | |
| | | AgvLocMast loc = new AgvLocMast(); |
| | | String locRow = row < 10 ? "-00" + row : "-0" + row; |
| | |
| | | return agvLocMastList; |
| | | } |
| | | |
| | | private boolean checkLocExist(int row, int bay, int floor){ |
| | | if(floor == 1 && (row == 8 || row == 9)){ |
| | | if((bay >=8 && bay <=11) |
| | | || (bay >= 20 && bay <=23) |
| | | || (bay>=37 && bay <=39) |
| | | || (bay>=50 && bay <=52) |
| | | || (bay>=63 && bay <=64) |
| | | || (bay>=79 && bay <=80)){ |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | if(floor == 3){ |
| | | if(row == 1 && bay > 63){ |
| | | return false; |
| | | } |
| | | if(row == 2 && bay > 65){ |
| | | return false; |
| | | } |
| | | if(row > 23 && bay == 1){ |
| | | return false; |
| | | } |
| | | |
| | | if(bay > 35 && bay < 39){ |
| | | if(row == 4 || row == 5 || row == 10 || row == 11 || row == 17 || row == 18){ |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public List<AgvLocMast> queryFreeLocMast2(Short locType1, Integer rowBeg, Integer rowEnd, Integer bayBeg, Integer bayEnd, Integer levBeg, Integer levEnd) { |
| | | return this.baseMapper.queryFreeLocMast2(locType1, rowBeg, rowEnd, bayBeg, bayEnd, levBeg, levEnd); |
| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.mapper.DocTypeMapper; |
| | |
| | | docType = this.selectById(docName); |
| | | } catch (Exception ignore) {} |
| | | if (docType == null) { |
| | | docType = this.selectOne(new EntityWrapper<DocType>().eq("doc_name", docName)); |
| | | Wrapper<DocType> wrapper = new EntityWrapper<DocType>().eq("doc_name", docName); |
| | | if(pakin){ |
| | | wrapper.eq("pakin",1); |
| | | }else { |
| | | wrapper.eq("pakout",1); |
| | | } |
| | | docType = this.selectOne(wrapper); |
| | | } |
| | | |
| | | if (docType == null) { |
| | | long docId = 1L; |
| | | DocType last = this.selectOne(new EntityWrapper<DocType>().orderBy("doc_id", false)); |
| | |
| | | public void report(Long orderId, Long userId) { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | Order order = this.selectById(orderId); |
| | | Map<String, String> param = new HashMap<>(); |
| | | Map<String, Object> param = new HashMap<>(); |
| | | param.put("id",order.getOrderNo()); |
| | | param.put("dDate",sdf.format(new Date())); |
| | | param.put("cHandler",userId.toString()); |
| | | |
| | | List<Map<String,Object>> orderDetlsParam = new ArrayList<>(); |
| | | param.put("orderDetails",orderDetlsParam); |
| | | |
| | | List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(orderId); |
| | | |
| | | for (OrderDetl orderDetl : orderDetls){ |
| | | Map<String, Object> odMap = new HashMap<>(); |
| | | odMap.put("autoid",orderDetl.getItemNum()); |
| | | odMap.put("iQuantity",orderDetl.getQty()); |
| | | orderDetlsParam.add(odMap); |
| | | } |
| | | |
| | | int code = doHttpRequest(param, "单据审核", url, orderReportPath, null, "127.0.0.1"); |
| | | //int code = doHttpRequest(param, "单据审核", "localhost:8080", "/test/report", null, "127.0.0.1"); |
| | | if(code == 200){ |
| | |
| | | import com.zy.common.model.StartupDto; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.service.erp.ErpService; |
| | | import com.zy.common.web.param.ReplenishmentParam; |
| | | import com.zy.common.web.param.SearchLocParam; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | |
| | | return commonService.getLocNo(1, ioType - 50, devpNo, matnrList, locTypeDto,0); // 库位号, 堆垛机,目标站 |
| | | } |
| | | |
| | | /* |
| | | 四项库往AGV补货,wcs调用此接口 |
| | | */ |
| | | @PostMapping("/replenishment") |
| | | @ResponseBody |
| | | public R replenishment(@RequestBody ReplenishmentParam param){ |
| | | |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.common.web.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class ReplenishmentParam { |
| | | //容器编码 |
| | | private String containerCode; |
| | | //agv站点 |
| | | private String devNo; |
| | | } |
| | |
| | | enabled: false |
| | | datasource: |
| | | driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
| | | url: jdbc:sqlserver://localhost:1433;databasename=tzskasrs |
| | | #url: jdbc:sqlserver://192.168.4.15:1433;databasename=tzskasrs |
| | | url: jdbc:sqlserver://10.10.10.40:1433;databasename=tzskasrs |
| | | #url: jdbc:sqlserver://10.10.10.40:1433;databasename=tzskasrs |
| | | username: sa |
| | | password: sa@123 |
| | | mvc: |
| | |
| | | <div style="padding: 40px 20px 10px 10px;" :style="window.innerWidth < 2000 ? 'margin-top: 0px;' : 'flex: 5;margin-top: -70px;'"> |
| | | <el-slider v-model="showScale" :marks="showScaleMarks"></el-slider> |
| | | <div style="display: flex;justify-content: space-between;flex-wrap: wrap;"> |
| | | <div class="hoverCard" style="width: 100%;"> |
| | | <div class="card-details" style="place-content: normal;height: auto;"> |
| | | <div class="text-body" style="display: flex;flex-wrap: wrap;"> |
| | | <div style="width: 100%;margin-bottom: 20px;"> |
| | | <div style="display: flex;justify-content: space-between;"> |
| | | <div><input v-model="searchMatnr" placeholder="物料号" type="text" class="search-input"></div> |
| | | <div><input v-model="searchOrderNo" placeholder="订单号" type="text" class="search-input"></div> |
| | | </div> |
| | | <div style="display: flex;justify-content: space-between;margin-top: 10px;"> |
| | | <div><input style="width: 110px;" v-model="searchMaktx" placeholder="物料名称" type="text" class="search-input"></div> |
| | | <div><input style="width: 110px;" v-model="searchSpecs" placeholder="规格" type="text" class="search-input"></div> |
| | | <div><input style="width: 110px;" v-model="searchLocNo" placeholder="库位号" type="text" class="search-input"></div> |
| | | </div> |
| | | <button style="width: 100%;margin-top: 10px;" @click="searchLoc" class="layui-btn layui-btn-sm">搜索</button> |
| | | </div> |
| | | <!-- <div>--> |
| | | <!-- <button @click="locToLoc2" class="layui-btn layui-btn-sm">侧边移库</button>--> |
| | | <!-- <div class="hoverCard" style="width: 100%;">--> |
| | | <!-- <div class="card-details" style="place-content: normal;height: auto;">--> |
| | | <!-- <div class="text-body" style="display: flex;flex-wrap: wrap;">--> |
| | | <!-- <div style="width: 100%;margin-bottom: 20px;">--> |
| | | <!-- <div style="display: flex;justify-content: space-between;">--> |
| | | <!-- <div><input v-model="searchMatnr" placeholder="物料号" type="text" class="search-input"></div>--> |
| | | <!-- <div><input v-model="searchOrderNo" placeholder="订单号" type="text" class="search-input"></div>--> |
| | | <!-- </div>--> |
| | | <!-- <div style="display: flex;justify-content: space-between;margin-top: 10px;">--> |
| | | <!-- <div><input style="width: 110px;" v-model="searchMaktx" placeholder="物料名称" type="text" class="search-input"></div>--> |
| | | <!-- <div><input style="width: 110px;" v-model="searchSpecs" placeholder="规格" type="text" class="search-input"></div>--> |
| | | <!-- <div><input style="width: 110px;" v-model="searchLocNo" placeholder="库位号" type="text" class="search-input"></div>--> |
| | | <!-- </div>--> |
| | | <!-- <button style="width: 100%;margin-top: 10px;" @click="searchLoc" class="layui-btn layui-btn-sm">搜索</button>--> |
| | | <!-- </div>--> |
| | | <div> |
| | | <button @click="init" class="layui-btn layui-btn-sm">刷新</button> |
| | | </div> |
| | | <div style="margin-left: 10px;"> |
| | | <button @click="resetSearch" class="layui-btn layui-btn-sm">重置</button> |
| | | </div> |
| | | <div v-if="!locOutStatus" style="margin-left: 10px;"> |
| | | <button @click="locOutStatus = true" class="layui-btn layui-btn-sm">出库选择</button> |
| | | </div> |
| | | <div v-else style="margin-left: 10px;border: 1px red solid;display: flex;"> |
| | | <div> |
| | | <button @click="cancelSelectLoc" class="layui-btn layui-btn-sm">取消选择</button> |
| | | </div> |
| | | <div style="display: flex;justify-content: center;align-items: center;"> |
| | | <select v-model="outSite"> |
| | | <option v-for="(item,index) in outSites" :key="index" :value="item.siteId">{{ item.desc }}</option> |
| | | </select> |
| | | </div> |
| | | <div> |
| | | <button @click="locOut" class="layui-btn layui-btn-sm">出库</button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <button class="card-button">功能区</button> |
| | | </div> |
| | | <!--<!– <div>–>--> |
| | | <!--<!– <button @click="locToLoc2" class="layui-btn layui-btn-sm">侧边移库</button>–>--> |
| | | <!--<!– </div>–>--> |
| | | <!-- <div>--> |
| | | <!-- <button @click="init" class="layui-btn layui-btn-sm">刷新</button>--> |
| | | <!-- </div>--> |
| | | <!-- <div style="margin-left: 10px;">--> |
| | | <!-- <button @click="resetSearch" class="layui-btn layui-btn-sm">重置</button>--> |
| | | <!-- </div>--> |
| | | <!-- <div v-if="!locOutStatus" style="margin-left: 10px;">--> |
| | | <!-- <button @click="locOutStatus = true" class="layui-btn layui-btn-sm">出库选择</button>--> |
| | | <!-- </div>--> |
| | | <!-- <div v-else style="margin-left: 10px;border: 1px red solid;display: flex;">--> |
| | | <!-- <div>--> |
| | | <!-- <button @click="cancelSelectLoc" class="layui-btn layui-btn-sm">取消选择</button>--> |
| | | <!-- </div>--> |
| | | <!-- <div style="display: flex;justify-content: center;align-items: center;">--> |
| | | <!-- <select v-model="outSite">--> |
| | | <!-- <option v-for="(item,index) in outSites" :key="index" :value="item.siteId">{{ item.desc }}</option>--> |
| | | <!-- </select>--> |
| | | <!-- </div>--> |
| | | <!-- <div>--> |
| | | <!-- <button @click="locOut" class="layui-btn layui-btn-sm">出库</button>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <button class="card-button">功能区</button>--> |
| | | <!-- </div>--> |
| | | |
| | | <div class="hoverCard"> |
| | | <div class="card-details"> |