| | |
| | | package com.zy.asrs.controller; |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.R; |
| | | import com.zy.asrs.entity.AgvBasDevp; |
| | | import com.zy.asrs.service.AgvBasDevpService; |
| | | import com.core.common.*; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.LocMastInitParam; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @RestController |
| | | @RequestMapping("/agv") |
| | | public class AgvBasDevpController extends BaseController { |
| | | |
| | | @Autowired |
| | | AgvBasDevpService agvBasDevpService; |
| | | @Autowired |
| | | AgvWrkMastService agvWrkMastService; |
| | | @Autowired |
| | | AgvWrkDetlService agvWrkDetlService; |
| | | @Autowired |
| | | AgvWaitPakinService agvWaitPakinService; |
| | | @Autowired |
| | | AgvWorkService agvWorkService; |
| | | |
| | | @RequestMapping(value = "/agvBasDevp/list/auth") |
| | | @RequestMapping(value = "/basDevp/list/auth") |
| | | @ManagerAuth |
| | | public R list(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | |
| | | return R.ok(agvBasDevpService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/agvBasDevp/add/auth") |
| | | @RequestMapping(value = "/basDevp/add/auth") |
| | | @ManagerAuth(memo = "站点添加") |
| | | public R add(AgvBasDevp agvBasDevp) { |
| | | agvBasDevp.setModiUser(getUserId()); |
| | |
| | | agvBasDevp.setLocSts("O"); |
| | | agvBasDevpService.insert(agvBasDevp); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basDevp/check/column/auth") |
| | | @ManagerAuth |
| | | public R query(@RequestBody JSONObject param) { |
| | | Wrapper<AgvBasDevp> wrapper = new EntityWrapper<AgvBasDevp>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); |
| | | if (null != agvBasDevpService.selectOne(wrapper)){ |
| | | return R.parse(BaseRes.REPEAT).add(getComment(BasDevp.class, String.valueOf(param.get("key")))); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basDevp/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") Long id) { |
| | | return R.ok(agvBasDevpService.selectById(String.valueOf(id))); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basDevp/update/auth") |
| | | @ManagerAuth(memo = "站点修改") |
| | | public R update(AgvBasDevp basDevp){ |
| | | if (Cools.isEmpty(basDevp) || null==basDevp.getDevNo()){ |
| | | return R.error(); |
| | | } |
| | | basDevp.setModiUser(getUserId()); |
| | | basDevp.setModiTime(new Date()); |
| | | agvBasDevpService.updateById(basDevp); |
| | | return R.ok("修改完成"); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basDevp/delete/auth") |
| | | @ManagerAuth(memo = "站点删除") |
| | | public R delete(@RequestParam String param){ |
| | | List<AgvBasDevp> list = JSONArray.parseArray(param, AgvBasDevp.class); |
| | | if (Cools.isEmpty(list)){ |
| | | return R.error(); |
| | | } |
| | | for (AgvBasDevp entity : list){ |
| | | agvBasDevpService.delete(new EntityWrapper<>(entity)); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basDevp/unbind/auth") |
| | | @ManagerAuth(memo = "站点解绑") |
| | | public R unbind(@RequestParam String param){ |
| | | AgvBasDevp agvBasDevp = JSONArray.parseObject(param,AgvBasDevp.class); |
| | | |
| | | //若当前站点货位状态不为F.在库状态,则返回错误 |
| | | if(!agvBasDevp.getLocSts().equals("F")){ |
| | | return R.error("当前站点货位状态不为在库,无法解除绑定"); |
| | | } |
| | | agvBasDevp.setLocSts("O"); |
| | | agvBasDevp.setBarcode(""); |
| | | agvBasDevpService.update(agvBasDevp,new EntityWrapper<AgvBasDevp>().eq("dev_no",agvBasDevp.getDevNo())); |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basDevp/export/auth") |
| | | @ManagerAuth(memo = "站点导出") |
| | | public R export(@RequestBody JSONObject param){ |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | EntityWrapper<AgvBasDevp> wrapper = new EntityWrapper<>(); |
| | | Map<String, Object> map = excludeTrash(param.getJSONObject("basDevp")); |
| | | convert(map, wrapper); |
| | | List<AgvBasDevp> list = agvBasDevpService.selectList(wrapper); |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basDevpQuery/auth") |
| | | @ManagerAuth |
| | | public R query(String condition) { |
| | | EntityWrapper<AgvBasDevp> wrapper = new EntityWrapper<>(); |
| | | wrapper.like("dev_no", condition); |
| | | Page<AgvBasDevp> page = agvBasDevpService.selectPage(new Page<>(0, 10), wrapper); |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (AgvBasDevp basDevp : page.getRecords()){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", basDevp.getDevNo()); |
| | | map.put("value", basDevp.getDevNo()); |
| | | result.add(map); |
| | | } |
| | | return R.ok(result); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basDevp/init/auth") |
| | | @ManagerAuth(memo = "初始化站点") |
| | | public R init(LocMastInitParam param) { |
| | | //清空原有库位 |
| | | agvBasDevpService.clearBasDevp(); |
| | | //初始化1楼3楼站点 |
| | | agvBasDevpService.initBasDevp(); |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | /* |
| | | 站点明细 |
| | | */ |
| | | @RequestMapping(value = "/basDevp/detail/list/auth") |
| | | public R basDevpDetailList(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam Map<String, Object> param){ |
| | | String devNo = param.get("devNo").toString(); |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo); |
| | | if("F".equals(agvBasDevp.getLocSts()) || "R".equals(agvBasDevp.getLocSts())){ |
| | | //先去入库通知档找明细 |
| | | Page<AgvWaitPakin> agvWaitPakinPage = agvWaitPakinService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvWaitPakin>() |
| | | .eq("supp_code", agvBasDevp.getBarcode())); |
| | | if(agvWaitPakinPage.getRecords().size()>0){ |
| | | return R.ok(agvWaitPakinPage); |
| | | }else { |
| | | //如果入库通档明细为空,则去工作档找明细 |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>() |
| | | .eq("loc_no", agvBasDevp.getDevNo()) |
| | | .or().eq("source_loc_no",agvBasDevp.getDevNo())); |
| | | |
| | | Page<AgvWrkDetl> agvWrkDetlPage = agvWrkDetlService.selectPage(new Page<>(curr, limit), new EntityWrapper<AgvWrkDetl>() |
| | | .eq("wrk_no", agvWrkMast.getWrkNo())); |
| | | |
| | | if(agvWrkDetlPage.getRecords().size()>0){ |
| | | return R.ok(agvWrkDetlPage); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basDevp/visualized/list/auth") |
| | | public R visualizedList(@RequestBody JSONObject param){ |
| | | |
| | | String stationCode = param.get("stationCode").toString(); |
| | | |
| | | Map<String, Object> result = agvBasDevpService.getAgvBasDevpDtoByStationCode(stationCode); |
| | | |
| | | return R.ok(result); |
| | | } |
| | | @RequestMapping(value = "/basDevp/visualized/list/auth/v2") |
| | | public R visualizedList(@RequestParam String stationCode){ |
| | | |
| | | Map<String, Object> result = agvBasDevpService.getAgvBasDevpDtoByStationCode(stationCode); |
| | | |
| | | return R.ok(result); |
| | | } |
| | | /* |
| | | 容器离场 |
| | | */ |
| | | @RequestMapping(value = "/basDevp/visualized/container/moveOut") |
| | | public R visualiZedContainerMoveOut(@RequestBody Map<String,Object> map) { |
| | | List<String> devNos = new ArrayList<>(); |
| | | List<AgvWrkMast> agvWrkMastList = new ArrayList<>(); |
| | | try { |
| | | devNos = (List<String>) map.get("devNo"); |
| | | agvWrkMastList = devNos.stream().map(devNo -> { |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devNo).eq("wrk_sts",205L)); |
| | | if(agvWrkMast.getIoType() != 101 && agvWrkMast.getIoType() != 110){ |
| | | throw new CoolException("工作号为" + agvWrkMast.getWrkNo() + "类型不为101.出库,无法执行容器离场任务,请重新选择站点。"); |
| | | } |
| | | return agvWrkMast; |
| | | }).collect(Collectors.toList()); |
| | | }catch (Exception e){ |
| | | String devNo = map.get("devNo").toString(); |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devNo)); |
| | | if(agvWrkMast.getIoType() != 101 && agvWrkMast.getIoType() != 110){ |
| | | throw new CoolException("工作号为" + agvWrkMast.getWrkNo() + "类型不为101.出库,无法执行容器离场任务,请重新选择站点。"); |
| | | } |
| | | agvWrkMastList.add(agvWrkMast); |
| | | |
| | | } |
| | | |
| | | // List<AgvWrkMast> agvWrkMastList = devNos.stream().map(devNo -> { |
| | | // AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devNo)); |
| | | // if(agvWrkMast.getIoType() != 101 && agvWrkMast.getIoType() != 110){ |
| | | // throw new CoolException("工作号为" + agvWrkMast.getWrkNo() + "类型不为101.出库,无法执行容器离场任务,请重新选择站点。"); |
| | | // } |
| | | // return agvWrkMast; |
| | | // }).collect(Collectors.toList()); |
| | | |
| | | try { |
| | | int code = agvWrkMastService.containerMoveOut(agvWrkMastList); |
| | | if(code == 0){ |
| | | //将工作党状态改为容器离场 |
| | | agvWrkMastList.forEach(agvWrkMast -> { |
| | | agvWrkMast.setWrkSts(206L); |
| | | agvWrkMastService.updateById(agvWrkMast); |
| | | }); |
| | | //修改站点状态 |
| | | devNos.forEach(devNo -> { |
| | | AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo); |
| | | agvBasDevp.setBarcode(""); |
| | | agvBasDevp.setLocSts("O"); |
| | | agvBasDevpService.updateById(agvBasDevp); |
| | | }); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | return R.error("容器离场失败"); |
| | | } |
| | | |
| | | return R.ok("容器离场成功"); |
| | | } |
| | | |
| | | /* |
| | | 拣料/盘点入库 |
| | | */ |
| | | @RequestMapping(value = "/basDevp/visualized/container/pickIn") |
| | | public R visualiZedPickIn(@RequestBody Map<String,Object> map){ |
| | | List<String> devNos = new ArrayList<>(); |
| | | List<AgvWrkMast> agvWrkMastList = new ArrayList<>(); |
| | | try { |
| | | devNos = (List<String>) map.get("devNo"); |
| | | agvWrkMastList = devNos.stream().map(devNo -> { |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devNo).eq("wrk_sts",205L)); |
| | | if(agvWrkMast.getIoType() == 101){ |
| | | throw new CoolException("工作号为" + agvWrkMast.getWrkNo() + "类型为101.出库,无法执行拣料入库任务,请重新选择站点。"); |
| | | } |
| | | return agvWrkMast; |
| | | }).collect(Collectors.toList()); |
| | | }catch (Exception e){ |
| | | String devNo = map.get("devNo").toString(); |
| | | AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devNo).eq("wrk_sts",205L)); |
| | | if (agvWrkMast != null) { |
| | | if(agvWrkMast.getIoType() == 101){ |
| | | throw new CoolException("工作号为" + agvWrkMast.getWrkNo() + "类型为101.出库,无法执行拣料入库任务,请重新选择站点。"); |
| | | } |
| | | agvWrkMastList.add(agvWrkMast); |
| | | } |
| | | } |
| | | |
| | | // List<String> devNos = (List<String>) map.get("devNo"); |
| | | // List<AgvWrkMast> agvWrkMastList = devNos.stream().map(devNo -> { |
| | | // AgvWrkMast agvWrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", devNo)); |
| | | // if(agvWrkMast.getIoType() == 101){ |
| | | // throw new CoolException("工作号为" + agvWrkMast.getWrkNo() + "类型为101.出库,无法执行拣料入库任务,请重新选择站点。"); |
| | | // } |
| | | // return agvWrkMast; |
| | | // }).collect(Collectors.toList()); |
| | | |
| | | agvWorkService.pickIn(agvWrkMastList); |
| | | |
| | | return R.ok("生成拣料出库任务成功"); |
| | | } |
| | | |
| | | private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |