| | |
| | | </dependencies> |
| | | |
| | | <build> |
| | | <finalName>htwms</finalName> |
| | | <finalName>lfdsxkwms</finalName> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.springframework.boot</groupId> |
| | |
| | | if (!Cools.isEmpty(orderByField)) { |
| | | wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); |
| | | } |
| | | wrapper.orderBy("loc_attribute",false); |
| | | return R.ok(locMastService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | |
| | | public R pdaSearch(@RequestParam(required = false) String condition) { |
| | | EntityWrapper<Mat> wrapper = new EntityWrapper<>(); |
| | | if (!Cools.isEmpty(condition)) { |
| | | wrapper.like("matnr", condition).or().like("maktx", condition); |
| | | wrapper.like("matnr", condition).or().like("maktx", condition).or().like("specs", condition); |
| | | } |
| | | wrapper.orderBy("create_time", false); |
| | | List<Mat> mats = matService.selectList(wrapper); |
| | |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.entity.param.*; |
| | | import com.zy.asrs.service.OpenService; |
| | | import com.zy.asrs.service.WorkService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.common.model.DetlDto; |
| | | import com.zy.common.web.BaseController; |
| | |
| | | private OpenService openService; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | | private WorkService workService; |
| | | |
| | | @PostMapping("/order/matSync/default/v1") |
| | | @AppAuth(memo = "商品信息同步接口") |
| | |
| | | map1.put("ReturnStatus", "1"); |
| | | map1.put("ErrorMessage", "任务号为空"); |
| | | }else{ |
| | | //任务完成 |
| | | if (map.get("Result").equals(1)) { |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",Integer.valueOf(taskNo))); |
| | | if(wrkMast == null){ |
| | | map1.put("ReturnStatus", "1"); |
| | | map1.put("ErrorMessage", "没有找到该任务号:"+taskNo); |
| | | }else{ |
| | | if(wrkMast.getIoType()==1){ |
| | | if (wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10) { |
| | | wrkMast.setWrkSts(4L);//任务结束 |
| | | }else if(wrkMast.getIoType()==11){ |
| | | } else if (wrkMast.getIoType() == 101) { |
| | | wrkMast.setWrkSts(13L);//出库到站点上 |
| | | } else if (wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57) { |
| | | wrkMast.setWrkSts(4L);//4.任务结束 |
| | | } else if (wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107 || wrkMast.getIoType() == 110) { |
| | | wrkMast.setWrkSts(14L); |
| | | } |
| | | wrkMast.setModiTime(new Date()); |
| | | if(wrkMastService.updateById(wrkMast)){ |
| | |
| | | map1.put("ErrorMessage", "更新任务状态失败"+wrkMast); |
| | | } |
| | | } |
| | | } else { |
| | | //任务取消 |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no", Integer.valueOf(taskNo))); |
| | | if (wrkMast == null) { |
| | | map1.put("ReturnStatus", "1"); |
| | | map1.put("ErrorMessage", "没有找到该任务号:" + taskNo); |
| | | return map1; |
| | | } |
| | | workService.cancelWrkMast(String.valueOf(wrkMast.getWrkNo()),9999L); |
| | | } |
| | | } |
| | | return map1; |
| | | } |
| | | |
| | | /** |
| | | * 搬运到目的地 |
| | | * 出库---目的地搬离 |
| | | */ |
| | | @RequestMapping("/leave/task") |
| | | public HashMap<String ,Object> leaveTask(@RequestBody HashMap<String,Object> map) { |
| | |
| | | map1.put("ReturnStatus", "1"); |
| | | map1.put("ErrorMessage", "任务号为空"); |
| | | }else{ |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wrk_no",Integer.valueOf(taskNo))); |
| | | if(wrkMast == null){ |
| | | map1.put("ReturnStatus", "1"); |
| | | map1.put("ErrorMessage", "没有找到该任务号:"+taskNo); |
| | | return map1; |
| | | } |
| | | if ((wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107 || wrkMast.getIoType() == 110) && wrkMast.getWrkSts() != 14) { |
| | | wrkMast.setWrkSts(14L);//出库到站点上 |
| | | wrkMast.setModiTime(new Date()); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | map1.put("ReturnStatus", "0"); |
| | | map1.put("ErrorMessage", ""); |
| | | } else { |
| | | map1.put("ReturnStatus", "1"); |
| | | map1.put("ErrorMessage", "更新任务状态失败" + wrkMast); |
| | | } |
| | | } else if (wrkMast.getIoType() != 101) { |
| | | map1.put("ReturnStatus", "0"); |
| | | map1.put("ErrorMessage", ""); |
| | | return map1; |
| | | }else{ |
| | | wrkMast.setWrkSts(14L);//出库到站点上 |
| | | wrkMast.setModiTime(new Date()); |
| | |
| | | map1.put("ErrorMessage", "更新任务状态失败"+wrkMast); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | return map1; |
| | | } |
| | |
| | | package com.zy.asrs.controller; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.asrs.entity.BasDevp; |
| | | import com.zy.asrs.entity.LocDetl; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.model.LocDto; |
| | | import com.zy.common.model.TaskDto; |
| | | import com.zy.common.web.BaseController; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.PostMapping; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | |
| | | /** |
| | | * Created by vincent on 2022/3/26 |
| | | */ |
| | | |
| | | @Slf4j |
| | | @RestController |
| | | public class OutController extends BaseController { |
| | | |
| | |
| | | if (issued <= 0.0D) { continue; } |
| | | List<LocDetl> locDetls = locDetlService.queryStock(orderDetl.getMatnr(), orderDetl.getBatch(), null, exist); |
| | | for (LocDetl locDetl : locDetls) { |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo())); |
| | | if(locMast==null){ |
| | | R.error("没有找到该库位:"+locDetl.getLocNo()); |
| | | } |
| | | List<LocMast> locMasts=locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("group1",locMast.getGroup1()) |
| | | .eq("loc_sts","F") |
| | | .orderBy("loc_attribute",false)); |
| | | for (LocMast locMast1 : locMasts) { |
| | | LocDetl locDetl1 = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locMast1.getLocNo())); |
| | | if(locDetl1==null){ |
| | | return R.error(locMast1.getLocNo()+"没有找到物料"); |
| | | } |
| | | if (!locDetl1.getMatnr().equals(locDetl.getMatnr())) { |
| | | log.error(locMast1.getGroup1()+"巷道的第"+locMast1.getLocAttribute()+"深浅库位号和同巷道物料不同"); |
| | | break; |
| | | } |
| | | if (issued > 0) { |
| | | LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), |
| | | issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued); |
| | | List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103); |
| | | LocDto locDto = new LocDto(locDetl1.getLocNo(), locDetl1.getMatnr(), locDetl1.getMaktx(), locDetl1.getBatch(), orderDetl.getOrderNo(), |
| | | issued >= locDetl1.getAnfme() ? locDetl1.getAnfme() : issued); |
| | | List<Integer> staNos = new ArrayList<>(); |
| | | staNos.add(100); |
| | | staNos.add(200); |
| | | locDto.setStaNos(staNos); |
| | | locDtos.add(locDto); |
| | | exist.add(locDetl.getLocNo()); |
| | |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | if (issued > 0) { |
| | | LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued); |
| | | locDto.setLack(Boolean.TRUE); |
| | |
| | | /** |
| | | * 状态 |
| | | * 1.联机 |
| | | * 2.手动 |
| | | * 3.充电中 |
| | | * 0.手动 |
| | | * 2.充电中 |
| | | */ |
| | | @ApiModelProperty(value= "状态") |
| | | @TableField("crn_sts") |
| | |
| | | @ApiModelProperty(value= "单位") |
| | | private String unit; |
| | | |
| | | @ApiModelProperty(value= "单价") |
| | | @ApiModelProperty(value= "库存数量") |
| | | private Double price; |
| | | |
| | | @ApiModelProperty(value= "sku") |
| | |
| | | private String specs; |
| | | |
| | | /** |
| | | * 型号 |
| | | * 图号 |
| | | */ |
| | | @ApiModelProperty(value= "型号") |
| | | @ExcelProperty(value = "型号") |
| | | @ExcelProperty(value = "图号") |
| | | private String model; |
| | | |
| | | /** |
New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class CarryParam { |
| | | //工作号 |
| | | private String TaskNo; |
| | | |
| | | //入出库类型 |
| | | private Integer StereoscopicTaskType; |
| | | |
| | | //优先级 |
| | | private Integer Priority; |
| | | |
| | | //容器编码 |
| | | private String BoxNo; |
| | | |
| | | //源货位排编号 |
| | | private Integer OriginalRowNo; |
| | | |
| | | //源货位层编号 |
| | | private Integer OriginalFloorNo; |
| | | |
| | | //源货位列编号 |
| | | private Integer OriginalColumnNo; |
| | | |
| | | //目标库位排编号 |
| | | private Integer GoalRowNo; |
| | | |
| | | //目标库位层编号 |
| | | private Integer GoalFloorNo; |
| | | |
| | | //目标库位列编号 |
| | | private Integer GoalColumnNo; |
| | | |
| | | //起点 |
| | | private String startPoint; |
| | | |
| | | //终端编号(输送线上某一点位) |
| | | private String TerminalNo; |
| | | |
| | | //备注 |
| | | private String meno; |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class GetShuttleStatusParam { |
| | | |
| | | /** |
| | | * 小车号 |
| | | */ |
| | | private Integer shuttleNo; |
| | | |
| | | /** |
| | | * 状态 1: 正常 0: 手动 2.充电中 |
| | | */ |
| | | @ApiModelProperty(value= "状态 1: 正常 0: 手动 2.充电中 ") |
| | | private Integer status; |
| | | |
| | | /** |
| | | * 小车所在层 |
| | | */ |
| | | @ApiModelProperty(value= "小车所在层") |
| | | @TableField("charge_line") |
| | | private Integer chargeLine; |
| | | |
| | | |
| | | /** |
| | | * 小车异常码 |
| | | */ |
| | | @ApiModelProperty(value= "小车异常码") |
| | | @TableField("errorCode") |
| | | private Integer errorCode; |
| | | |
| | | /** |
| | | * 小车状态 |
| | | * <p> |
| | | * IDLE(1, "空闲"), |
| | | * WORKING(2, "作业中"), |
| | | * WAITING(3, "等待确认"), |
| | | * CHARGING(4, "充电中"), |
| | | * CHARGING_WAITING(5, "充电任务等待确认"), |
| | | * FIXING(6, "故障修复中"), |
| | | * OFFLINE(7, "离线"), |
| | | */ |
| | | private Integer protocolStatus; |
| | | /** |
| | | * 当前二维码 |
| | | * 0为空 |
| | | */ |
| | | private String currentCode; |
| | | |
| | | /** |
| | | * 是否为充电状态 |
| | | */ |
| | | private Boolean hasCharge; |
| | | |
| | | |
| | | |
| | | |
| | | public String getProtocolStatus$() { |
| | | String protocolStatus$ = ""; |
| | | switch (this.protocolStatus) { |
| | | case 1: |
| | | protocolStatus$ = "空闲"; |
| | | break; |
| | | case 2: |
| | | protocolStatus$ = "作业中"; |
| | | break; |
| | | case 3: |
| | | protocolStatus$ = "等待确认"; |
| | | break; |
| | | case 4: |
| | | protocolStatus$ = "充电中"; |
| | | break; |
| | | case 5: |
| | | protocolStatus$ = "充电任务等待确认"; |
| | | break; |
| | | case 6: |
| | | protocolStatus$ = "故障修复中"; |
| | | break; |
| | | case 7: |
| | | protocolStatus$ = "离线"; |
| | | break; |
| | | |
| | | |
| | | } |
| | | return protocolStatus$; |
| | | } |
| | | } |
| | |
| | | private Integer ReturnStatus = 0; |
| | | private Results Results; |
| | | |
| | | |
| | | @Data |
| | | public static class Results{ |
| | | //库位号 |
| | | private String ShelfUnitId; |
| | | //任务号 |
| | | private Integer TaskNo; |
| | | |
| | | private String barcode; |
| | | } |
| | | |
| | | } |
| | |
| | | wrkMast.setIoTime(now); |
| | | wrkMast.setWrkSts(11L); // 工作状态:11.生成出库ID |
| | | wrkMast.setIoType(ioType); // 入出库状态 |
| | | wrkMast.setIoPri(13D); // 优先级:13 |
| | | wrkMast.setIoPri(10.0+locMast.getLocAttribute()); // 优先级 |
| | | wrkMast.setCrnNo(locMast.getCrnNo()); |
| | | wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 |
| | | wrkMast.setStaNo(staDesc.getStnNo()); // 目标站 |
| | |
| | | StaDesc staDesc = staDescService.queryCrnStnAuto(ioType, locMast.getCrnNo(), staNo.getDevNo()); |
| | | // 生成工作号 |
| | | int workNo = commonService.getWorkNo(WorkNoType.getWorkNoType(ioType)); |
| | | int yz=staDesc.getStnNo()*10+Integer.valueOf(taskDto.getLocNo().substring(6)); |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | | wrkMast.setWrkNo(workNo); |
| | |
| | | wrkMast.setIoType(ioType); // 入出库状态 |
| | | wrkMast.setIoPri(13D); // 优先级:13 |
| | | wrkMast.setCrnNo(locMast.getCrnNo()); |
| | | wrkMast.setSourceStaNo(staDesc.getCrnStn()); // 源站 |
| | | wrkMast.setSourceStaNo(yz); // 源站 |
| | | wrkMast.setStaNo(staDesc.getStnNo()); // 目标站 |
| | | wrkMast.setSourceLocNo(taskDto.getLocNo()); // 源库位 |
| | | wrkMast.setFullPlt("Y"); // 满板:Y |
| | |
| | | if (orderDetl == null) { |
| | | orderDetl = orderDetlService.selectItem(locDto.getOrderNo(), locDto.getMatnr(), null); |
| | | } |
| | | LocDetl locDetl = locDetlService.selectOne(new EntityWrapper<LocDetl>().eq("loc_no", locDto.getLocNo()).eq("matnr", locDto.getMatnr())); |
| | | Mat mat=matService.selectOne(new EntityWrapper<Mat>().eq("matnr",locDto.getMatnr())); |
| | | WrkDetl wrkDetl = new WrkDetl(); |
| | | wrkDetl.sync(orderDetl); |
| | |
| | | wrkDetl.setBatch(locDto.getBatch()); |
| | | wrkDetl.setOrderNo(locDto.getOrderNo()); |
| | | wrkDetl.setModel(mat.getModel()); |
| | | wrkDetl.setPrice(locDetl.getAnfme());//库存数量 |
| | | wrkDetl.setAnfme(locDto.getAnfme()); // 数量 |
| | | wrkDetl.setAppeTime(now); |
| | | wrkDetl.setAppeUser(userId); |
| | |
| | | wrkMast.setStaNo(param.getOutSite()); // 目标站 |
| | | wrkMast.setCrnNo(locMast.getCrnNo()); |
| | | wrkMast.setSourceLocNo(locNo); // 源库位 |
| | | wrkMast.setIoPri(10.0+locMast.getLocAttribute());//优先级 |
| | | wrkMast.setFullPlt("N"); // 满板:Y |
| | | wrkMast.setPicking("N"); // 拣料 |
| | | wrkMast.setExitMk("N"); // 退出 |
New file |
| | |
| | | package com.zy.asrs.task; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.entity.BasCrnp; |
| | | import com.zy.asrs.entity.BasDevp; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.entity.param.GetShuttleStatusParam; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.BasCrnpService; |
| | | import com.zy.asrs.service.BasDevpService; |
| | | import com.zy.asrs.service.impl.BasDevpServiceImpl; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Component |
| | | public class GetEquipmentStatus { |
| | | private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); |
| | | @Value("${wcs.address.URL}") |
| | | private String addrs; |
| | | @Value("${wcs.address.deviceStatus}") |
| | | private String deviceStatus; |
| | | @Autowired |
| | | private BasCrnpService basCrnpService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private BasDevpService basDevpService; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void execute() { |
| | | //获取设备信息 |
| | | String response =""; |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | // .setHeaders(headParam) |
| | | .setUri(addrs) |
| | | .setPath(deviceStatus) |
| | | .build() |
| | | .doGet(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if (jsonObject.get("code").equals(200)) { |
| | | JSONObject data = JSON.parseObject(jsonObject.get("data").toString()); |
| | | List<GetShuttleStatusParam> shuttles = JSON.parseArray(data.get("basShuttle").toString(), GetShuttleStatusParam.class); |
| | | for (GetShuttleStatusParam shuttle : shuttles) { |
| | | |
| | | |
| | | BasCrnp shuttle1 = basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no", shuttle.getShuttleNo())); |
| | | shuttle1.setCrnSts(shuttle.getStatus());//小车模式 |
| | | shuttle1.setCrnErr(Long.valueOf(shuttle.getErrorCode()));//小车报警 |
| | | shuttle1.setLev1(shuttle.getChargeLine());//小车所在层 |
| | | basCrnpService.updateById(shuttle1); |
| | | } |
| | | |
| | | List<BasDevp> basDevps = JSON.parseArray(data.get("basDevp").toString(), BasDevp.class); |
| | | for (BasDevp basDevp : basDevps) { |
| | | basDevpService.updateById(basDevp); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("wms读取wcs小车状态失败"); |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task; |
| | | |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.task.handler.OutWorkHandler; |
| | | import com.zy.asrs.task.handler.WorkMastHandler; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Component |
| | | public class OutWorkScheduler { |
| | | private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); |
| | | |
| | | @Autowired |
| | | OutWorkHandler outWorkHandler; |
| | | @Autowired |
| | | WrkMastService wrkMastService; |
| | | |
| | | /** |
| | | * 出库任务下发 |
| | | */ |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void execute() { |
| | | List<WrkMast> wrkMasts=wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("wrk_sts",11) |
| | | .in("io_type",11,101,103,107,110)); |
| | | for(WrkMast wrkMast:wrkMasts){ |
| | | ReturnT<String> result = outWorkHandler.start(wrkMast); |
| | | if (!result.isSuccess()) { |
| | | log.error("wms下发出库移库任务={}给wcs下发失败", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task.handler; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.entity.param.CarryParam; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.service.impl.LocMastServiceImpl; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | | @Service |
| | | @Transactional |
| | | public class OutWorkHandler extends AbstractHandler<String> { |
| | | |
| | | @Autowired |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | @Value("${wcs.address.URL}") |
| | | private String addrs; |
| | | @Value("${wcs.address.outboundTaskSend}") |
| | | private String outboundTaskSend; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | |
| | | |
| | | public synchronized ReturnT<String> start(WrkMast wrkMast) { |
| | | //优先级 |
| | | LocMast locMast=locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", wrkMast.getSourceLocNo())); |
| | | int Priority = locMast.getLocAttribute() == null ? 0 : locMast.getLocAttribute(); |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | CarryParam carryParam = new CarryParam(); |
| | | carryParam.setBoxNo(wrkMast.getBarcode());//托盘码 |
| | | carryParam.setTaskNo(wrkMast.getWrkNo()+"");//任务号 |
| | | carryParam.setStereoscopicTaskType(2);//2.出库 |
| | | carryParam.setPriority(10+Priority);//优先级 |
| | | carryParam.setOriginalRowNo(locMast.getRow1());//源库位排 |
| | | carryParam.setOriginalColumnNo(locMast.getBay1());//源库位列 |
| | | carryParam.setOriginalFloorNo(locMast.getLev1());//源库位层 |
| | | carryParam.setStartPoint(wrkMast.getStaNo()+""+locMast.getLev1());//源站 |
| | | carryParam.setTerminalNo(wrkMast.getStaNo()+"");//目标站 |
| | | List<CarryParam> carryParamList=new ArrayList<>(); |
| | | carryParamList.add(carryParam); |
| | | map.put("TaskList",carryParamList); |
| | | |
| | | String response =""; |
| | | Boolean bool =false; |
| | | try { |
| | | log.info("wms派发任务给wcs出库={}", map); |
| | | response = new HttpHandler.Builder() |
| | | // .setHeaders(headParam) |
| | | .setUri(addrs) |
| | | .setPath(outboundTaskSend) |
| | | .setJson(JSON.toJSONString(map)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | if(jsonObject.get("Code").equals("1")){ |
| | | wrkMast.setWrkSts(12L); |
| | | wrkMastService.updateById(wrkMast); |
| | | bool = true; |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("wcs派发任务给RCS出库失败{},返回值={}", wrkMast, response); |
| | | } finally { |
| | | apiLogService.save("wcs派发任务给RCS出库" |
| | | , addrs + outboundTaskSend |
| | | , null |
| | | , "127.0.0.1" |
| | | , JSON.toJSONString(map) |
| | | , response |
| | | , bool |
| | | ); |
| | | } |
| | | return SUCCESS; |
| | | |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | // 手动入库生成单据 【 上报三方平台 】 |
| | | if (!Cools.isEmpty(wrkDetls)) { |
| | | if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) { |
| | | exceptionHandle("生成手动入库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | // if (!Cools.isEmpty(wrkDetls)) { |
| | | // if (!orderService.saveHandlerOrder(Boolean.TRUE, wrkMast, wrkDetls)) { |
| | | // exceptionHandle("生成手动入库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | // } |
| | | // } |
| | | // 拣料再入库 |
| | | } else if (wrkMast.getIoType() == 53) { |
| | | if (!Cools.isEmpty(wrkDetls)) { |
| | | if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { |
| | | exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | // if (!Cools.isEmpty(wrkDetls)) { |
| | | // if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { |
| | | // exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | // 出库 -------------------------------------------------------------------------------- |
| | | } else if (wrkMast.getWrkSts() == 15) { |
| | | if (!Cools.isEmpty(wrkDetls)) { |
| | | if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { |
| | | exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | // if (!Cools.isEmpty(wrkDetls)) { |
| | | // if (!orderService.saveHandlerOrder(Boolean.FALSE, wrkMast, wrkDetls)) { |
| | | // exceptionHandle("生成手动出库单据[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | // 保存工作主档历史档 |
| | |
| | | private WaitPakinService waitPakinService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private WrkMastLogService wrkMastLogService; |
| | | @Autowired |
| | | private WrkDetlLogService wrkDetlLogService; |
| | | |
| | | public ReturnT<String> start(WrkMast wrkMast) { |
| | | // 4.入库完成 |
| | |
| | | } |
| | | for (WrkDetl wrkDetl : wrkDetls53) { |
| | | |
| | | LocDetl locDetl = locDetlService.selectItem(locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch()); |
| | | LocDetl locDetl = new LocDetl(); |
| | | locDetl.sync(wrkDetl); |
| | | locDetl.setAnfme(wrkDetl.getPrice()-wrkDetl.getAnfme());//数量 |
| | | locDetl.setLocNo(wrkMast.getLocNo()); // 库位号 |
| | | locDetl.setZpallet(wrkDetl.getZpallet()); // 托盘条码 |
| | | locDetl.setModiTime(now); |
| | | locDetl.setAppeTime(now); |
| | | locDetl.setPrice(0.0); |
| | | if (null != locDetl) { |
| | | if (!locDetlService.updateAnfme(locDetl.getAnfme() - wrkDetl.getAnfme(), locMast.getLocNo(), wrkDetl.getMatnr(), wrkDetl.getBatch())) { |
| | | if (!locDetlService.insert(locDetl)) { |
| | | // exceptionHandle("拣料入库 ===>> 修改库存明细数量失败;[workNo={0}],[locNo={1}]", wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("拣料入库 ===>> 修改库存明细数量失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getLocNo() + "]"); |
| | |
| | | |
| | | } |
| | | // 修改库位状态 Q ====>> F |
| | | if (locMast.getLocSts().equals("Q")) { |
| | | if (locMast.getLocSts().equals("S")) { |
| | | locMast.setLocSts("F"); |
| | | locMast.setBarcode(wrkMast.getBarcode()); |
| | | locMast.setIoTime(now); |
| | |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("全板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | // 修改工作主档状态 |
| | | wrkMast.setWrkSts(15L); |
| | | } |
| | | break; |
| | | // 空板出库 |
| | |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("空板出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | // 修改工作主档状态 |
| | | wrkMast.setWrkSts(15L); |
| | | } |
| | | break; |
| | | //拣料和盘点出库 |
| | | case 103: |
| | | case 107: |
| | | if (locMast.getLocSts().equals("P")) { |
| | | locMast.setLocSts("O"); |
| | | locMast.setBarcode(""); |
| | | locMast.setModiTime(now); |
| | | locMast.setIoTime(now); |
| | | if (!locMastService.updateById(locMast)) { |
| | | // exceptionHandle("空板出库 ===>> 修改源库位状态失败;[workNo={0}],[sourceLocNo={1}]", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); |
| | | TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg("拣料和盘点出库 ===>> 修改源库位状态失败; [workNo=" + wrkMast.getWrkNo() + "],[locNo=" + wrkMast.getSourceLocNo() + "]"); |
| | | } |
| | | wrkMast.setWrkSts(16L);//等待入库 |
| | | // 保存工作主档历史档 |
| | | if (!wrkMastLogService.save(wrkMast.getWrkNo())) { |
| | | exceptionHandle("保存工作历史档[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | if(!wrkMast.getEmptyMk().equals("Y")) { |
| | | // 保存工作明细档历史档 |
| | | if (!wrkDetlLogService.save(wrkMast.getWrkNo())) { |
| | | exceptionHandle("保存工作明细历史档[workNo={0}]失败", wrkMast.getWrkNo()); |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | // 修改工作主档状态 |
| | | wrkMast.setWrkSts(15L); |
| | | |
| | | wrkMast.setModiTime(now); |
| | | if (!wrkMastService.updateById(wrkMast)) { |
| | | // exceptionHandle("更新出库完成状态失败;[workNo={0}]", wrkMast.getWrkNo()); |
| | |
| | | private LocDetlService locDetlService; |
| | | @Autowired |
| | | private BasCrnpService basCrnpService; |
| | | @PostMapping("/pakin/loc/returnWarehouse") |
| | | @ResponseBody |
| | | public synchronized StorageResult returnWarehouse(@RequestBody(required = false) SearchLocParam param) { |
| | | StorageResult storageResult=new StorageResult(); |
| | | if (Cools.isEmpty(param.getTaskNo())) { |
| | | storageResult.setReturnStatus(1); |
| | | storageResult.setErrorMessage("传入工作号为空"); |
| | | return storageResult; |
| | | } |
| | | WrkMast wrkMast =wrkMastService.selectOne(new EntityWrapper<WrkMast>() |
| | | .eq("wrk_no",param.getTaskNo()) |
| | | .in("io_type",103,107)); |
| | | if (Cools.isEmpty(wrkMast)){ |
| | | storageResult.setReturnStatus(1); |
| | | storageResult.setErrorMessage("没有找到盘点拣料任务---------"+param.getTaskNo()); |
| | | return storageResult; |
| | | } |
| | | SearchLocParam searchLocParam = new SearchLocParam(); |
| | | searchLocParam.setBoxNo(wrkMast.getBarcode()); |
| | | searchLocParam.setWcsIoType(1);//满板 |
| | | searchLocParam.setWcsSourceStaNo(wrkMast.getStaNo()); |
| | | searchLocParam.setWcsStatus(0); |
| | | return getLocNo(searchLocParam); |
| | | } |
| | | |
| | | |
| | | @PostMapping("/pakin/loc/v1") |
| | | @ResponseBody |
| | | public synchronized R getLocNo(@RequestBody(required = false) SearchLocParam param) { |
| | | public synchronized StorageResult getLocNo(@RequestBody(required = false) SearchLocParam param) { |
| | | StorageResult storageResult=new StorageResult(); |
| | | log.info("收到WCS入库接口请求====>>入参:{}", param); |
| | | if (Cools.isEmpty(param.getWcsIoType())) { |
| | | return R.error("入出库类型不能为空"); |
| | | storageResult.setReturnStatus(1); |
| | | storageResult.setErrorMessage("入出库类型不能为空"); |
| | | return storageResult; |
| | | } |
| | | if (Cools.isEmpty(param.getWcsSourceStaNo())) { |
| | | return R.error("源站编号不能为空"); |
| | | storageResult.setReturnStatus(1); |
| | | storageResult.setErrorMessage("源站编号不能为空"); |
| | | return storageResult; |
| | | } |
| | | int ioType = 0; |
| | | List<WaitPakin> waitPakins = null; |
| | | if (param.getWcsIoType() == 1) { |
| | | //拣料和盘点入库 |
| | | WrkMast wrkMast1037 =wrkMastService.selectOne(new EntityWrapper<WrkMast>() |
| | | .eq("barcode", param.getBoxNo()) |
| | | .in("io_type",103,107)); |
| | | WrkMast wrkMast537 =wrkMastService.selectOne(new EntityWrapper<WrkMast>() |
| | | .eq("barcode", param.getBoxNo()) |
| | | .in("io_type",53,57)); |
| | | if (wrkMast537 != null) { |
| | | StorageResult.Results results=new StorageResult.Results(); |
| | | results.setTaskNo(wrkMast537.getWrkNo()); |
| | | results.setShelfUnitId(wrkMast537.getLocNo()+""); |
| | | storageResult.setResults(results); |
| | | return storageResult; |
| | | } |
| | | if(Cools.isEmpty(wrkMast1037)) { |
| | | if (Cools.isEmpty(param.getBoxNo())) { |
| | | return R.error("条码不能为空"); |
| | | storageResult.setReturnStatus(1); |
| | | storageResult.setErrorMessage("条码不能为空"); |
| | | return storageResult; |
| | | } |
| | | waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("zpallet", param.getBoxNo())); |
| | | if (Cools.isEmpty(waitPakins)) { |
| | | WrkMast wrkMast = wrkMastService.selectByBarcode(param.getBoxNo()); |
| | | if (wrkMast != null && wrkMast.getIoType() == 103) { |
| | | return R.parse(CodeRes.PICK_600); |
| | | storageResult.setReturnStatus(1); |
| | | storageResult.setErrorMessage(CodeRes.PICK_600); |
| | | return storageResult; |
| | | } |
| | | return R.parse(CodeRes.NO_COMB_700); |
| | | storageResult.setReturnStatus(1); |
| | | storageResult.setErrorMessage(CodeRes.NO_COMB_700); |
| | | return storageResult; |
| | | } |
| | | int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBoxNo())); |
| | | int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBoxNo())); |
| | | if (countLoc > 0 || countWrk > 0) { |
| | | return R.error(CodeRes.EXIST_500); |
| | | storageResult.setReturnStatus(1); |
| | | storageResult.setErrorMessage(CodeRes.EXIST_500); |
| | | return storageResult; |
| | | } |
| | | }else { |
| | | ioType = wrkMast1037.getIoType(); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | switch (param.getWcsIoType()) { |
| | | case 1://满托盘入库 |
| | | assert waitPakins != null; |
| | | storageResult = startupFullPutStore(param.getWcsSourceStaNo(), param.getBoxNo(), waitPakins); |
| | | storageResult = startupFullPutStore(param.getWcsSourceStaNo(), param.getBoxNo(), waitPakins,ioType); |
| | | break; |
| | | case 2://空托盘入库 |
| | | storageResult = emptyPlateIn(param.getWcsSourceStaNo(), param.getBoxNo()); |
| | |
| | | break; |
| | | } |
| | | log.info("WCS入库接口返参:{},托盘码:{}", storageResult, param.getBoxNo()); |
| | | return R.ok().add(storageResult); |
| | | return storageResult; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 全板入库 |
| | | */ |
| | | @Transactional |
| | | public StorageResult startupFullPutStore(Integer devpNo, String barcode, List<WaitPakin> waitPakins) { |
| | | public StorageResult startupFullPutStore(Integer devpNo, String barcode, List<WaitPakin> waitPakins,Integer ioType) { |
| | | StorageResult storageResult=new StorageResult(); |
| | | Integer[] arr=arr(); |
| | | LocMast locMast1=new LocMast(); |
| | | Integer workNo = 0; |
| | | //判断是否是拣料或者是盘点 |
| | | if(ioType==103||ioType==107) { |
| | | WrkDetl wrkDetl=wrkDetlService.selectOne(new EntityWrapper<WrkDetl>().eq("zpallet", barcode)); |
| | | |
| | | int type=Cools.isEmpty(wrkDetl.getBeBatch())?1:wrkDetl.getBeBatch(); |
| | | // 检索库位 |
| | | WaitPakin waitPakin1=new WaitPakin(); |
| | | waitPakin1.sync(wrkDetl); |
| | | locMast1 =commonService.getLocNo2(waitPakin1,arr,0,type,1); |
| | | |
| | | WrkMast wrkMast=wrkMastService.selectByBarcode(barcode); |
| | | workNo = wrkMast.getWrkNo(); |
| | | int mbz=wrkMast.getStaNo()*10+Integer.valueOf(wrkMast.getSourceLocNo().substring(6)); |
| | | String ykw=wrkMast.getLocNo(); |
| | | wrkMast.setIoType(ioType-50); |
| | | wrkMast.setWrkSts(1L);//入库 |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMast.setSourceStaNo(wrkMast.getStaNo()); // 源站 |
| | | wrkMast.setStaNo(mbz); // 目标站 |
| | | wrkMast.setLocNo(locMast1.getLocNo()); // 目标库位 = 出库时的源库位 |
| | | wrkMast.setSourceLocNo(ykw); // 源库位 |
| | | wrkMastService.updateById(wrkMast); |
| | | }else{ |
| | | int type=Cools.isEmpty(waitPakins.get(0).getBeBatch())?1:waitPakins.get(0).getBeBatch(); |
| | | // 检索库位 |
| | | LocMast locMast1 =commonService.getLocNo2(waitPakins.get(0),arr,0,type,1); |
| | | int workNo = commonService.getWorkNo(0); |
| | | locMast1 =commonService.getLocNo2(waitPakins.get(0),arr,0,type,1); |
| | | |
| | | //正常入库 |
| | | workNo = commonService.getWorkNo(0); |
| | | Date now = new Date(); |
| | | // 生成工作档 |
| | | WrkMast wrkMast = new WrkMast(); |
| | |
| | | if (!waitPakinService.update(setParam, wrapper)) { |
| | | throw new CoolException("更新通知档失败"); |
| | | } |
| | | } |
| | | // 更新目标库位状态 |
| | | LocMast locMast = locMastService.selectById(locMast1.getLocNo()); |
| | | if (locMast.getLocSts().equals("O")){ |
| | | locMast.setLocSts("S"); // S.入库预约 |
| | | locMast.setModiTime(now); |
| | | locMast.setModiTime(new Date()); |
| | | if (!locMastService.updateById(locMast)){ |
| | | throw new CoolException("改变库位状态失败"); |
| | | } |
| | | } else { |
| | | throw new CoolException(locMast1.getLocNo()+"目标库位已被占用"); |
| | | } |
| | | |
| | | StorageResult.Results results=new StorageResult.Results(); |
| | | results.setTaskNo(workNo); |
| | | results.setShelfUnitId(locMast1.getLocNo()); |
| | | results.setBarcode(barcode); |
| | | storageResult.setResults(results); |
| | | return storageResult; |
| | | } |
| | |
| | | }else{ |
| | | basCrnp.setTankQty(0); |
| | | basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",basCrnp.getCrnNo())); |
| | | int xx=0; |
| | | arr[i]=basCrnp.getLev1(); |
| | | i++; |
| | | int o=basCrnp.getCrnNo(); |
| | |
| | | o=1; |
| | | } |
| | | basCrnp=basCrnpService.selectOne(new EntityWrapper<BasCrnp>().eq("crn_no",o)); |
| | | if(q==1){ |
| | | if(Cools.isEmpty(basCrnp)){ |
| | | log.error(q+"号小车没有找到"); |
| | | continue; |
| | | } |
| | | if(basCrnp.getCrnErr()>0||basCrnp.getCrnSts()!=1){ |
| | | log.error(q+"号小车报警或者在充电跳过此车"); |
| | | continue; |
| | | } |
| | | if(xx==0){ |
| | | basCrnp.setTankQty(1); |
| | | basCrnpService.update(basCrnp,new EntityWrapper<BasCrnp>().eq("crn_no",o)); |
| | | } |
| | | arr[i]=basCrnp.getLev1(); |
| | | i++; |
| | | xx++; |
| | | } |
| | | |
| | | } |
| | | for (int w=1;w<=7;w++){ |
| | | boolean boo=true; |
| | | for(int g=0;g<count;g++){ |
| | | for(int g=0;g<i;g++){ |
| | | if(arr[g]==w){ |
| | | boo=false; |
| | | break; |
| | |
| | | arr[i]=w; |
| | | i++; |
| | | } |
| | | if(i==7) break; |
| | | } |
| | | return arr; |
| | | } |
| | |
| | | @Data |
| | | public class SearchLocParam { |
| | | |
| | | @JSONField(name = "taskNo") |
| | | private Integer taskNo; |
| | | |
| | | //托盘码 |
| | | @JSONField(name = "BoxNo") |
| | | private String boxNo; |
| | |
| | | @JSONField(name = "WCSSourceStaNo") |
| | | private Integer wcsSourceStaNo; |
| | | |
| | | //空板满板 |
| | | //空板满板 1.满板 2.空板 |
| | | @JSONField(name = "WCSIoType") |
| | | private Integer wcsIoType; |
| | | |
| | |
| | | enabled: false |
| | | datasource: |
| | | driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
| | | url: jdbc:sqlserver://127.0.0.1:1433;databasename=lfdasrs-sxc |
| | | url: jdbc:sqlserver://192.168.0.17:1433;databasename=lfdasrs-sxc |
| | | username: sa |
| | | password: sa@123 |
| | | mvc: |
| | |
| | | # 一个堆垛机负责的货架排数 |
| | | groupCount: 4 |
| | | |
| | | #wcs对接 |
| | | wcs: |
| | | #地址 |
| | | address: |
| | | URL: http://127.0.0.1:9092/wcs |
| | | #出库移库任务下发 |
| | | outboundTaskSend: open/outboundTaskSend |
| | | |
| | | deviceStatus : open/deviceStatus |
| | | |
| | | #erp对接 |
| | | erp: |
| | | #地址 |
| | |
| | | and b.loc_sts = 'F' |
| | | <include refid="stockOutCondition"></include> |
| | | ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize}) |
| | | |
| | | </select> |
| | | |
| | | <select id="getStockOutPageCount" parameterType="java.util.Map" resultType="java.lang.Integer"> |
| | |
| | | where 1=1 |
| | | and b.loc_sts = 'F' |
| | | and a.matnr = #{matnr} |
| | | and b.loc_attribute = 1 |
| | | <!-- <choose>--> |
| | | <!-- <when test="batch != null and batch != ''">--> |
| | | <!-- and a.batch = #{batch}--> |
| | |
| | | </resultMap> |
| | | |
| | | <select id="selectToBeCompleteData" resultMap="BaseResultMap"> |
| | | select * from asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 103 and io_type != 104 and io_type != 107 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no |
| | | select * from asr_wrk_mast where ((wrk_sts = 4 Or wrk_sts = 14 ) and io_type != 104 ) or (wrk_sts = 2 and io_type=6) order by upd_mk,error_time,io_time,wrk_no |
| | | </select> |
| | | |
| | | <select id="selectToBeHistoryData" resultMap="BaseResultMap"> |
| | | select * from asr_wrk_mast |
| | | where wrk_sts=5 |
| | | or wrk_sts=20 |
| | | or (wrk_sts=15 and ove_mk='Y' and wrk_no not in (select wrk_no from asr_bas_devp)) |
| | | or (wrk_sts=15 and dateadd(mi,15,crn_end_time) <= getdate() and wrk_no not in (select wrk_no from asr_bas_devp)) |
| | | or (wrk_sts=15 and crn_end_time is null and wrk_no not in (select wrk_no from asr_bas_devp)) |
| | |
| | | var baseUrl = "/htwms"; |
| | | var baseUrl = "/lfdsxkwms"; |
| | | |
| | | // 详情窗口-高度 |
| | | var detailHeight = '80%'; |