201个文件已删除
43个文件已添加
21个文件已修改
| New file |
| | |
| | | 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.common.DateUtils; |
| | | import com.zy.asrs.entity.BasCrnp; |
| | | import com.zy.asrs.service.BasCrnpService; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | |
| | | @RestController |
| | | public class BasCrnpController extends BaseController { |
| | | |
| | | @Autowired |
| | | private BasCrnpService basCrnpService; |
| | | |
| | | @RequestMapping(value = "/basCrnp/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") String id) { |
| | | return R.ok(basCrnpService.selectById(String.valueOf(id))); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnp/list/auth") |
| | | @ManagerAuth |
| | | public R list(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam(required = false)String orderByField, |
| | | @RequestParam(required = false)String orderByType, |
| | | @RequestParam(required = false)String condition, |
| | | @RequestParam Map<String, Object> param){ |
| | | EntityWrapper<BasCrnp> wrapper = new EntityWrapper<>(); |
| | | excludeTrash(param); |
| | | convert(param, wrapper); |
| | | allLike(BasCrnp.class, param.keySet(), wrapper, condition); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | return R.ok(basCrnpService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | | private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ |
| | | for (Map.Entry<String, Object> entry : map.entrySet()){ |
| | | String val = String.valueOf(entry.getValue()); |
| | | if (val.contains(RANGE_TIME_LINK)){ |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); |
| | | wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); |
| | | } else { |
| | | wrapper.like(entry.getKey(), val); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnp/add/auth") |
| | | @ManagerAuth |
| | | public R add(BasCrnp basCrnp) { |
| | | basCrnpService.insert(basCrnp); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnp/update/auth") |
| | | @ManagerAuth |
| | | public R update(BasCrnp basCrnp){ |
| | | if (Cools.isEmpty(basCrnp) || null==basCrnp.getCrnNo()){ |
| | | return R.error(); |
| | | } |
| | | basCrnpService.updateById(basCrnp); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnp/delete/auth") |
| | | @ManagerAuth |
| | | public R delete(@RequestParam(value="ids[]") Integer[] ids){ |
| | | for (Integer id : ids){ |
| | | basCrnpService.deleteById(id); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnp/export/auth") |
| | | @ManagerAuth |
| | | public R export(@RequestBody JSONObject param){ |
| | | EntityWrapper<BasCrnp> wrapper = new EntityWrapper<>(); |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | Map<String, Object> map = excludeTrash(param.getJSONObject("basCrnp")); |
| | | convert(map, wrapper); |
| | | List<BasCrnp> list = basCrnpService.selectList(wrapper); |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpQuery/auth") |
| | | @ManagerAuth |
| | | public R query(String condition) { |
| | | EntityWrapper<BasCrnp> wrapper = new EntityWrapper<>(); |
| | | wrapper.like("crn_no", condition); |
| | | Page<BasCrnp> page = basCrnpService.selectPage(new Page<>(0, 10), wrapper); |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (BasCrnp basCrnp : page.getRecords()){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", basCrnp.getCrnNo()); |
| | | map.put("value", basCrnp.getCrnNo()); |
| | | result.add(map); |
| | | } |
| | | return R.ok(result); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnp/check/column/auth") |
| | | @ManagerAuth |
| | | public R query(@RequestBody JSONObject param) { |
| | | Wrapper<BasCrnp> wrapper = new EntityWrapper<BasCrnp>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); |
| | | if (null != basCrnpService.selectOne(wrapper)){ |
| | | return R.parse(BaseRes.REPEAT).add(getComment(BasCrnp.class, String.valueOf(param.get("key")))); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | 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.common.DateUtils; |
| | | import com.zy.asrs.entity.BasCrnpErr; |
| | | import com.zy.asrs.service.BasCrnpErrService; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | |
| | | @RestController |
| | | public class BasCrnpErrController extends BaseController { |
| | | |
| | | @Autowired |
| | | private BasCrnpErrService basCrnpErrService; |
| | | |
| | | @RequestMapping(value = "/basCrnpErr/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") String id) { |
| | | return R.ok(basCrnpErrService.selectById(String.valueOf(id))); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErr/list/auth") |
| | | @ManagerAuth |
| | | public R list(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam(required = false)String orderByField, |
| | | @RequestParam(required = false)String orderByType, |
| | | @RequestParam(required = false)String condition, |
| | | @RequestParam Map<String, Object> param){ |
| | | EntityWrapper<BasCrnpErr> wrapper = new EntityWrapper<>(); |
| | | excludeTrash(param); |
| | | convert(param, wrapper); |
| | | allLike(BasCrnpErr.class, param.keySet(), wrapper, condition); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | return R.ok(basCrnpErrService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | | private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ |
| | | for (Map.Entry<String, Object> entry : map.entrySet()){ |
| | | String val = String.valueOf(entry.getValue()); |
| | | if (val.contains(RANGE_TIME_LINK)){ |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); |
| | | wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); |
| | | } else { |
| | | wrapper.like(entry.getKey(), val); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErr/add/auth") |
| | | @ManagerAuth |
| | | public R add(BasCrnpErr basCrnpErr) { |
| | | basCrnpErrService.insert(basCrnpErr); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErr/update/auth") |
| | | @ManagerAuth |
| | | public R update(BasCrnpErr basCrnpErr){ |
| | | if (Cools.isEmpty(basCrnpErr) || null==basCrnpErr.getId()){ |
| | | return R.error(); |
| | | } |
| | | basCrnpErrService.updateById(basCrnpErr); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErr/delete/auth") |
| | | @ManagerAuth |
| | | public R delete(@RequestParam(value="ids[]") Integer[] ids){ |
| | | for (Integer id : ids){ |
| | | basCrnpErrService.deleteById(id); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErr/export/auth") |
| | | @ManagerAuth |
| | | public R export(@RequestBody JSONObject param){ |
| | | EntityWrapper<BasCrnpErr> wrapper = new EntityWrapper<>(); |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | Map<String, Object> map = excludeTrash(param.getJSONObject("basCrnpErr")); |
| | | convert(map, wrapper); |
| | | List<BasCrnpErr> list = basCrnpErrService.selectList(wrapper); |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErrQuery/auth") |
| | | @ManagerAuth |
| | | public R query(String condition) { |
| | | EntityWrapper<BasCrnpErr> wrapper = new EntityWrapper<>(); |
| | | wrapper.like("id", condition); |
| | | Page<BasCrnpErr> page = basCrnpErrService.selectPage(new Page<>(0, 10), wrapper); |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (BasCrnpErr basCrnpErr : page.getRecords()){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", basCrnpErr.getId()); |
| | | map.put("value", basCrnpErr.getId()); |
| | | result.add(map); |
| | | } |
| | | return R.ok(result); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErr/check/column/auth") |
| | | @ManagerAuth |
| | | public R query(@RequestBody JSONObject param) { |
| | | Wrapper<BasCrnpErr> wrapper = new EntityWrapper<BasCrnpErr>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); |
| | | if (null != basCrnpErrService.selectOne(wrapper)){ |
| | | return R.parse(BaseRes.REPEAT).add(getComment(BasCrnpErr.class, String.valueOf(param.get("key")))); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | 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.common.DateUtils; |
| | | import com.zy.asrs.entity.BasCrnpErrLog; |
| | | import com.zy.asrs.service.BasCrnpErrLogService; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | |
| | | @RestController |
| | | public class BasCrnpErrLogController extends BaseController { |
| | | |
| | | @Autowired |
| | | private BasCrnpErrLogService basCrnpErrLogService; |
| | | |
| | | @RequestMapping(value = "/basCrnpErrLog/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") String id) { |
| | | return R.ok(basCrnpErrLogService.selectById(String.valueOf(id))); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErrLog/list/auth") |
| | | @ManagerAuth |
| | | public R list(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam(required = false)String orderByField, |
| | | @RequestParam(required = false)String orderByType, |
| | | @RequestParam(required = false)String condition, |
| | | @RequestParam Map<String, Object> param){ |
| | | EntityWrapper<BasCrnpErrLog> wrapper = new EntityWrapper<>(); |
| | | excludeTrash(param); |
| | | convert(param, wrapper); |
| | | allLike(BasCrnpErrLog.class, param.keySet(), wrapper, condition); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | return R.ok(basCrnpErrLogService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | | private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ |
| | | for (Map.Entry<String, Object> entry : map.entrySet()){ |
| | | String val = String.valueOf(entry.getValue()); |
| | | if (val.contains(RANGE_TIME_LINK)){ |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); |
| | | wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); |
| | | } else { |
| | | wrapper.like(entry.getKey(), val); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErrLog/add/auth") |
| | | @ManagerAuth |
| | | public R add(BasCrnpErrLog basCrnpErrLog) { |
| | | basCrnpErrLogService.insert(basCrnpErrLog); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErrLog/update/auth") |
| | | @ManagerAuth |
| | | public R update(BasCrnpErrLog basCrnpErrLog){ |
| | | if (Cools.isEmpty(basCrnpErrLog) || null==basCrnpErrLog.getId()){ |
| | | return R.error(); |
| | | } |
| | | basCrnpErrLogService.updateById(basCrnpErrLog); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErrLog/delete/auth") |
| | | @ManagerAuth |
| | | public R delete(@RequestParam(value="ids[]") Integer[] ids){ |
| | | for (Integer id : ids){ |
| | | basCrnpErrLogService.deleteById(id); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErrLog/export/auth") |
| | | @ManagerAuth |
| | | public R export(@RequestBody JSONObject param){ |
| | | EntityWrapper<BasCrnpErrLog> wrapper = new EntityWrapper<>(); |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | Map<String, Object> map = excludeTrash(param.getJSONObject("basCrnpErrLog")); |
| | | convert(map, wrapper); |
| | | List<BasCrnpErrLog> list = basCrnpErrLogService.selectList(wrapper); |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErrLogQuery/auth") |
| | | @ManagerAuth |
| | | public R query(String condition) { |
| | | EntityWrapper<BasCrnpErrLog> wrapper = new EntityWrapper<>(); |
| | | wrapper.like("id", condition); |
| | | Page<BasCrnpErrLog> page = basCrnpErrLogService.selectPage(new Page<>(0, 10), wrapper); |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (BasCrnpErrLog basCrnpErrLog : page.getRecords()){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", basCrnpErrLog.getId()); |
| | | map.put("value", basCrnpErrLog.getId()); |
| | | result.add(map); |
| | | } |
| | | return R.ok(result); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpErrLog/check/column/auth") |
| | | @ManagerAuth |
| | | public R query(@RequestBody JSONObject param) { |
| | | Wrapper<BasCrnpErrLog> wrapper = new EntityWrapper<BasCrnpErrLog>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); |
| | | if (null != basCrnpErrLogService.selectOne(wrapper)){ |
| | | return R.parse(BaseRes.REPEAT).add(getComment(BasCrnpErrLog.class, String.valueOf(param.get("key")))); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | 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.common.DateUtils; |
| | | import com.zy.asrs.entity.BasCrnpOpt; |
| | | import com.zy.asrs.service.BasCrnpOptService; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | |
| | | @RestController |
| | | public class BasCrnpOptController extends BaseController { |
| | | |
| | | @Autowired |
| | | private BasCrnpOptService basCrnpOptService; |
| | | |
| | | @RequestMapping(value = "/basCrnpOpt/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") String id) { |
| | | return R.ok(basCrnpOptService.selectById(String.valueOf(id))); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpOpt/list/auth") |
| | | @ManagerAuth |
| | | public R list(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam(required = false)String orderByField, |
| | | @RequestParam(required = false)String orderByType, |
| | | @RequestParam(required = false)String condition, |
| | | @RequestParam Map<String, Object> param){ |
| | | EntityWrapper<BasCrnpOpt> wrapper = new EntityWrapper<>(); |
| | | excludeTrash(param); |
| | | convert(param, wrapper); |
| | | allLike(BasCrnpOpt.class, param.keySet(), wrapper, condition); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | return R.ok(basCrnpOptService.selectPage(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | | private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ |
| | | for (Map.Entry<String, Object> entry : map.entrySet()){ |
| | | String val = String.valueOf(entry.getValue()); |
| | | if (val.contains(RANGE_TIME_LINK)){ |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); |
| | | wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); |
| | | } else { |
| | | wrapper.like(entry.getKey(), val); |
| | | } |
| | | } |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpOpt/add/auth") |
| | | @ManagerAuth |
| | | public R add(BasCrnpOpt basCrnpOpt) { |
| | | basCrnpOptService.insert(basCrnpOpt); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpOpt/update/auth") |
| | | @ManagerAuth |
| | | public R update(BasCrnpOpt basCrnpOpt){ |
| | | if (Cools.isEmpty(basCrnpOpt) || null==basCrnpOpt.getId()){ |
| | | return R.error(); |
| | | } |
| | | basCrnpOptService.updateById(basCrnpOpt); |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpOpt/delete/auth") |
| | | @ManagerAuth |
| | | public R delete(@RequestParam(value="ids[]") Integer[] ids){ |
| | | for (Integer id : ids) { |
| | | basCrnpOptService.deleteById(id); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpOpt/export/auth") |
| | | @ManagerAuth |
| | | public R export(@RequestBody JSONObject param){ |
| | | EntityWrapper<BasCrnpOpt> wrapper = new EntityWrapper<>(); |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | Map<String, Object> map = excludeTrash(param.getJSONObject("basCrnpOpt")); |
| | | convert(map, wrapper); |
| | | List<BasCrnpOpt> list = basCrnpOptService.selectList(wrapper); |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpOptQuery/auth") |
| | | @ManagerAuth |
| | | public R query(String condition) { |
| | | EntityWrapper<BasCrnpOpt> wrapper = new EntityWrapper<>(); |
| | | wrapper.like("id", condition); |
| | | Page<BasCrnpOpt> page = basCrnpOptService.selectPage(new Page<>(0, 10), wrapper); |
| | | List<Map<String, Object>> result = new ArrayList<>(); |
| | | for (BasCrnpOpt basCrnpOpt : page.getRecords()){ |
| | | Map<String, Object> map = new HashMap<>(); |
| | | map.put("id", basCrnpOpt.getId()); |
| | | map.put("value", basCrnpOpt.getId()); |
| | | result.add(map); |
| | | } |
| | | return R.ok(result); |
| | | } |
| | | |
| | | @RequestMapping(value = "/basCrnpOpt/check/column/auth") |
| | | @ManagerAuth |
| | | public R query(@RequestBody JSONObject param) { |
| | | Wrapper<BasCrnpOpt> wrapper = new EntityWrapper<BasCrnpOpt>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); |
| | | if (null != basCrnpOptService.selectOne(wrapper)){ |
| | | return R.parse(BaseRes.REPEAT).add(getComment(BasCrnpOpt.class, String.valueOf(param.get("key")))); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.alibaba.fastjson.serializer.SerializerFeature; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.core.common.DateUtils; |
| | | import com.zy.asrs.entity.BasMap; |
| | | import com.zy.asrs.entity.BasShuttleCharge; |
| | | import com.zy.asrs.service.BasMapService; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.asrs.service.BasShuttleChargeService; |
| | | import com.zy.asrs.utils.MapExcelUtils; |
| | | import com.zy.common.model.MapNode; |
| | | import com.zy.common.utils.RedisUtil; |
| | | import com.zy.common.web.BaseController; |
| | | import com.zy.core.enums.RedisKeyType; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.xssf.usermodel.XSSFColor; |
| | | import org.apache.poi.xssf.usermodel.XSSFWorkbook; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private BasMapService basMapService; |
| | | @Autowired |
| | | private BasShuttleChargeService basShuttleChargeService; |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private MapExcelUtils mapExcelUtils; |
| | | |
| | | @PostMapping("/basMap/upload") |
| | | public R uploadExcel(@RequestParam("file") MultipartFile file) throws IOException { |
| | | // ä¿åä¸ä¼ çæä»¶å°ä¸´æ¶ä½ç½® |
| | | String tempFilePath = System.getProperty("java.io.tmpdir") + file.getOriginalFilename(); |
| | | file.transferTo(new File(tempFilePath)); |
| | | |
| | | HashMap<Integer, List<List<HashMap<String, Object>>>> dataMap = mapExcelUtils.readExcel(tempFilePath); |
| | | HashMap<Integer, List<List<MapNode>>> levMap = mapExcelUtils.processExcelData(dataMap); |
| | | |
| | | // å é¤ä¸´æ¶æä»¶ |
| | | new File(tempFilePath).delete(); |
| | | |
| | | basMapService.delete(new EntityWrapper<>()); |
| | | |
| | | for (Map.Entry<Integer, List<List<MapNode>>> entry : levMap.entrySet()) { |
| | | Integer lev = entry.getKey(); |
| | | List<List<MapNode>> map = entry.getValue(); |
| | | |
| | | Date now = new Date(); |
| | | BasMap basMap = new BasMap(); |
| | | basMap.setLev(lev); |
| | | basMap.setOriginData(JSON.toJSONString(map, SerializerFeature.DisableCircularReferenceDetect)); |
| | | basMap.setCreateTime(now); |
| | | basMap.setUpdateTime(now); |
| | | basMapService.insert(basMap); |
| | | |
| | | redisUtil.del(RedisKeyType.MAP.key + lev); |
| | | } |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PostMapping("/basMap/crn/upload") |
| | | public R uploadExcel2(@RequestParam("file") MultipartFile file) throws IOException { |
| | |
| | | package com.zy.asrs.controller; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.asrs.domain.param.SystemSwitchParam; |
| | | import com.zy.asrs.entity.BasMap; |
| | | import com.zy.asrs.entity.DeviceConfig; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.service.BasMapService; |
| | | import com.zy.asrs.service.DeviceConfigService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.model.MapNode; |
| | | import com.zy.common.model.NavigateNode; |
| | | import com.zy.common.model.enums.NavigationMapType; |
| | | import com.zy.common.utils.NavigateMapData; |
| | | import com.zy.common.utils.RedisUtil; |
| | | import com.zy.core.cache.SlaveConnection; |
| | | import com.zy.core.enums.RedisKeyType; |
| | | import com.zy.core.enums.SlaveType; |
| | | import com.zy.core.model.command.ShuttleRedisCommand; |
| | | import com.zy.core.model.protocol.ShuttleProtocol; |
| | | import com.zy.core.properties.SystemProperties; |
| | | import com.zy.core.thread.ShuttleThread; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 主æ§å¾æ¥å£ |
| | |
| | | @RestController |
| | | @RequestMapping("/console") |
| | | public class ConsoleController { |
| | | |
| | | @Autowired |
| | | private BasMapService basMapService; |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | @Autowired |
| | | private NavigateMapData navigateMapData; |
| | | @Autowired |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | | private DeviceConfigService deviceConfigService; |
| | | |
| | | @PostMapping("/system/running/status") |
| | | @ManagerAuth(memo = "ç³»ç»è¿è¡ç¶æ") |
| | |
| | | Thread.sleep(200L); |
| | | SystemProperties.WCS_RUNNING_STATUS.set(param.getOperatorType()==1?Boolean.TRUE:Boolean.FALSE); |
| | | return R.ok().add(Cools.add("status", SystemProperties.WCS_RUNNING_STATUS.get())); |
| | | } |
| | | |
| | | /** |
| | | * è·åå°å¾æ¥¼å±æ°æ® |
| | | */ |
| | | @GetMapping("/map/lev/list") |
| | | @ManagerAuth |
| | | public R getMapLevList() { |
| | | List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true)); |
| | | ArrayList<Integer> levList = new ArrayList<>(); |
| | | for (BasMap basMap : basMaps) { |
| | | levList.add(basMap.getLev()); |
| | | } |
| | | return R.ok().add(levList); |
| | | } |
| | | |
| | | /** |
| | | * è·åå°å¾æ°æ® |
| | | */ |
| | | @GetMapping("/map/{lev}/auth") |
| | | @ManagerAuth |
| | | public R getMapFromRedis(@PathVariable Integer lev) { |
| | | Object data = redisUtil.get(RedisKeyType.MAP.key + lev); |
| | | if (data == null) { |
| | | return R.error(); |
| | | } |
| | | |
| | | List<List<MapNode>> arrayList = (List<List<MapNode>>) data; |
| | | List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.getMapTypes(NavigationMapType.NONE, NavigationMapType.PATH_LOCK), arrayList, lev, null, null);//è¿æ»¤å°å¾æ°æ® |
| | | return R.ok().add(lists); |
| | | } |
| | | |
| | | /** |
| | | * è·ååºä½å°å¾æ°æ® |
| | | */ |
| | | @GetMapping("/locMap/{lev}/auth") |
| | | @ManagerAuth |
| | | public R getLocMap(@PathVariable Integer lev) { |
| | | Object data = redisUtil.get(RedisKeyType.MAP.key + lev); |
| | | if (data == null) { |
| | | return R.error(); |
| | | } |
| | | |
| | | List<List<MapNode>> arrayList = (List<List<MapNode>>) data; |
| | | List<List<MapNode>> lists = navigateMapData.filterMap(NavigationMapType.getMapTypes(NavigationMapType.NONE), arrayList, lev, null, null);//è¿æ»¤å°å¾æ°æ® |
| | | |
| | | //è·åå½å楼å±åºä½æ°æ® |
| | | List<LocMast> locMasts = locMastService.selectLocByLev(lev); |
| | | for (LocMast locMast : locMasts) { |
| | | Integer row = locMast.getRow1(); |
| | | Integer bay = locMast.getBay1(); |
| | | |
| | | List<MapNode> list = lists.get(row); |
| | | MapNode mapNode = list.get(bay); |
| | | |
| | | mapNode.setLocSts(locMast.getLocSts()); |
| | | mapNode.setLocNo(locMast.getLocNo()); |
| | | |
| | | //æ´æ°list |
| | | list.set(bay, mapNode); |
| | | lists.set(row, list); |
| | | } |
| | | return R.ok().add(lists); |
| | | } |
| | | |
| | | /** |
| | | * éç½®redisä¸çå°å¾ï¼å°å ç¨çåºä½å
¨é¨è§£é¤ |
| | | */ |
| | | @GetMapping("/map/resetMap/auth") |
| | | @ManagerAuth |
| | | public R resetMapToRedis() { |
| | | List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true)); |
| | | for (BasMap basMap : basMaps) { |
| | | Integer lev = basMap.getLev(); |
| | | redisUtil.del(RedisKeyType.MAP.key + lev); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * éç½®redisä¸çå°å¾ï¼å°å ç¨çåºä½å
¨é¨è§£é¤ |
| | | */ |
| | | @GetMapping("/map/resetMap/{lev}") |
| | | @ManagerAuth(memo = "éç½®Rediså°å¾") |
| | | public R resetMapToRedisByLev(@PathVariable Integer lev, HttpServletRequest request) { |
| | | redisUtil.del(RedisKeyType.MAP.key + lev); |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * è·åé¢è®¡è·¯å¾ |
| | | */ |
| | | @GetMapping("/getMoveAdvancePath/{lev}/auth") |
| | | @ManagerAuth |
| | | public R getMoveAdvancePath(@PathVariable Integer lev) { |
| | | HashMap<String, Object> pathMap = new HashMap<>(); |
| | | |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig deviceConfig : shuttleList) { |
| | | // è·åååç©¿æ¢è½¦ä¿¡æ¯ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, deviceConfig.getDeviceNo()); |
| | | if (shuttleThread == null) { |
| | | continue; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null || shuttleProtocol.getShuttleNo()==null) { |
| | | continue; |
| | | } |
| | | |
| | | if (shuttleProtocol.getCurrentLocNo() == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != lev) { |
| | | continue; |
| | | } |
| | | |
| | | if (shuttleProtocol.getTaskNo() == 0) { |
| | | |
| | | } |
| | | |
| | | //åå¨ä»»å¡ï¼è·åæä»¤ |
| | | Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo()); |
| | | if (object != null) { |
| | | ShuttleRedisCommand redisCommand = JSON.parseObject(object.toString(), ShuttleRedisCommand.class); |
| | | List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//ç©¿æ¢è½¦é¢è®¡è·¯å¾ |
| | | |
| | | for (NavigateNode node : nodes) { |
| | | String locNo = Utils.getLocNo(node.getX(), node.getY(), node.getZ()); |
| | | |
| | | List<Integer> shuttleNoList = new ArrayList<>(); |
| | | Object tmp = pathMap.get(locNo); |
| | | if(tmp != null) { |
| | | shuttleNoList = (List<Integer>) tmp; |
| | | } |
| | | |
| | | if (!shuttleNoList.contains(shuttleProtocol.getShuttleNo())) { |
| | | shuttleNoList.add(shuttleProtocol.getShuttleNo()); |
| | | } |
| | | |
| | | pathMap.put(locNo, shuttleNoList); |
| | | } |
| | | } |
| | | } |
| | | |
| | | List<HashMap<String, Object>> pathList = new ArrayList<>(); |
| | | for (Map.Entry<String, Object> entry : pathMap.entrySet()) { |
| | | String locNo = entry.getKey(); |
| | | Object shuttleNoList = entry.getValue(); |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("locNo", locNo); |
| | | map.put("x", Utils.getRow(locNo)); |
| | | map.put("y", Utils.getBay(locNo)); |
| | | map.put("z", Utils.getLev(locNo)); |
| | | map.put("shuttleNoList", shuttleNoList); |
| | | pathList.add(map); |
| | | } |
| | | return R.ok().add(pathList); |
| | | } |
| | | |
| | | /** |
| | | * è·åéå®è·¯å¾ |
| | | */ |
| | | @GetMapping("/getLockPath/{lev}/auth") |
| | | @ManagerAuth |
| | | public R getLockPath(@PathVariable Integer lev) { |
| | | HashMap<String, Object> lockMap = new HashMap<>(); |
| | | Object o = redisUtil.get(RedisKeyType.LOCK_MAP_NODES.key + lev); |
| | | if (o != null) { |
| | | lockMap = (HashMap<String, Object>) o; |
| | | } |
| | | |
| | | List<HashMap<String, Object>> lockList = new ArrayList<>(); |
| | | for (Map.Entry<String, Object> entry : lockMap.entrySet()) { |
| | | String locNo = entry.getKey(); |
| | | Object shuttleNo = entry.getValue(); |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("locNo", locNo); |
| | | map.put("x", Utils.getRow(locNo)); |
| | | map.put("y", Utils.getBay(locNo)); |
| | | map.put("z", Utils.getLev(locNo)); |
| | | map.put("shuttleNo", shuttleNo); |
| | | lockList.add(map); |
| | | } |
| | | return R.ok().add(lockList); |
| | | } |
| | | |
| | | } |
| | |
| | | package com.zy.asrs.controller; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.R; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.BasMap; |
| | | import com.zy.asrs.entity.BasShuttleCharge; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.service.BasMapService; |
| | | import com.zy.asrs.service.BasShuttleChargeService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.model.MapNode; |
| | | import com.zy.common.model.NavigateNode; |
| | | import com.zy.common.model.enums.NavigationMapType; |
| | | import com.zy.common.utils.NavigateMapData; |
| | | import com.zy.common.web.BaseController; |
| | | import com.zy.core.enums.LocStsType; |
| | | import com.zy.core.enums.MapNodeType; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | |
| | | public class LocMastController extends BaseController { |
| | | |
| | | @Autowired |
| | | private NavigateMapData navigateMapData; |
| | | @Autowired |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | | private BasMapService basMapService; |
| | | @Autowired |
| | | private BasShuttleChargeService basShuttleChargeService; |
| | | |
| | | @RequestMapping(value = "/locMast/{id}/auth") |
| | | @ManagerAuth |
| | |
| | | @ManagerAuth(memo = "åå§ååºä½") |
| | | @Transactional |
| | | public R locMastInit() { |
| | | List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true)); |
| | | basShuttleChargeService.delete(new EntityWrapper<>()); |
| | | int chargeNo = 1; |
| | | for (BasMap basMap : basMaps) { |
| | | Integer lev = basMap.getLev(); |
| | | locMastService.delete(new EntityWrapper<>(new LocMast()) |
| | | .eq("lev1", lev)); |
| | | List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//è·å宿´å°å¾(å
æ¬å
¥åºåºåº) |
| | | for (int row = 0; row < lists.size(); row++) { |
| | | List<MapNode> nodeList = lists.get(row); |
| | | for (int bay = 0; bay < nodeList.size(); bay++) { |
| | | MapNode mapNode = nodeList.get(bay); |
| | | |
| | | if (mapNode.getValue() == MapNodeType.DISABLE.id) { |
| | | continue; |
| | | } |
| | | |
| | | String locNo = Utils.getLocNo(row, bay, lev); |
| | | LocMast locMast = new LocMast(); |
| | | locMast.setLocNo(locNo); |
| | | locMast.setRow1(row); |
| | | locMast.setBay1(bay); |
| | | locMast.setLev1(lev); |
| | | locMast.setStatus(1); |
| | | |
| | | if (mapNode.getValue() == MapNodeType.NORMAL_PATH.id) { |
| | | locMast.setLocSts(LocStsType.O.toString()); |
| | | } else if (mapNode.getValue() == MapNodeType.MAIN_PATH.id) { |
| | | locMast.setLocSts(LocStsType.W.toString()); |
| | | } else if (mapNode.getValue() == MapNodeType.CHARGE.id) { |
| | | locMast.setLocSts(LocStsType.C.toString()); |
| | | |
| | | BasShuttleCharge basShuttleCharge = new BasShuttleCharge(); |
| | | basShuttleCharge.setChargeId(chargeNo++); |
| | | basShuttleCharge.setLocNo(locNo); |
| | | basShuttleCharge.setWaitLocNo(locNo); |
| | | basShuttleCharge.setStatus(1); |
| | | basShuttleCharge.setCreateTime(new Date()); |
| | | basShuttleCharge.setUpdateTime(new Date()); |
| | | basShuttleChargeService.insert(basShuttleCharge); |
| | | } else if (mapNode.getValue() == MapNodeType.CONVEYOR.id) { |
| | | locMast.setLocSts(LocStsType.E.toString()); |
| | | } else if (mapNode.getValue() == MapNodeType.LIFT.id) { |
| | | locMast.setLocSts(LocStsType.E.toString()); |
| | | } |
| | | |
| | | locMastService.insert(locMast); |
| | | } |
| | | } |
| | | |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("lev1", lev).orderBy("row1", false)); |
| | | Integer rowMax = locMast.getRow1(); |
| | | LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("lev1", lev).orderBy("bay1", false)); |
| | | Integer bayMax = locMast2.getBay1(); |
| | | |
| | | Integer baseRow = basMap.getBaseRow(); |
| | | Integer baseRowCode = basMap.getBaseRowCode(); |
| | | |
| | | if (baseRow > 0) { |
| | | for (int i = baseRow; i <= rowMax; i++) { |
| | | Integer baseBayCode = basMap.getBaseBayCode(); |
| | | if (basMap.getBaseBay() > 0) { |
| | | for (int j = basMap.getBaseBay(); j <= bayMax; j++) { |
| | | String locNo = Utils.getLocNo(i, j, lev); |
| | | |
| | | LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | .eq("loc_no", locNo)); |
| | | if (locMast1 != null) { |
| | | HashMap<String, Object> point = new HashMap<>(); |
| | | point.put("y", baseRowCode); |
| | | point.put("x", baseBayCode); |
| | | point.put("z", lev); |
| | | locMast1.setQrCodeValue(JSON.toJSONString(point)); |
| | | locMastService.updateById(locMast1); |
| | | } |
| | | baseBayCode += 1; |
| | | } |
| | | }else { |
| | | int baseBay = basMap.getBaseBay() * -1; |
| | | for (int j = baseBay; j > 0; j--) { |
| | | String locNo = Utils.getLocNo(i, j, lev); |
| | | |
| | | LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | .eq("loc_no", locNo)); |
| | | if (locMast1 != null) { |
| | | HashMap<String, Object> point = new HashMap<>(); |
| | | point.put("y", baseRowCode); |
| | | point.put("x", baseBayCode); |
| | | point.put("z", lev); |
| | | locMast1.setQrCodeValue(JSON.toJSONString(point)); |
| | | locMastService.updateById(locMast1); |
| | | } |
| | | baseBayCode += 1; |
| | | } |
| | | } |
| | | baseRowCode += 1; |
| | | } |
| | | }else { |
| | | baseRow = baseRow * -1; |
| | | for (int i = baseRow; i > 0; i--) { |
| | | Integer baseBayCode = basMap.getBaseBayCode(); |
| | | if (basMap.getBaseBay() > 0) { |
| | | for (int j = basMap.getBaseBay(); j <= bayMax; j++) { |
| | | String locNo = Utils.getLocNo(i, j, lev); |
| | | |
| | | LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | .eq("loc_no", locNo)); |
| | | if (locMast1 != null) { |
| | | HashMap<String, Object> point = new HashMap<>(); |
| | | point.put("y", baseRowCode); |
| | | point.put("x", baseBayCode); |
| | | point.put("z", lev); |
| | | locMast1.setQrCodeValue(JSON.toJSONString(point)); |
| | | locMastService.updateById(locMast1); |
| | | } |
| | | baseBayCode += 1; |
| | | } |
| | | }else { |
| | | int baseBay = basMap.getBaseBay() * -1; |
| | | for (int j = baseBay; j > 0; j--) { |
| | | String locNo = Utils.getLocNo(i, j, lev); |
| | | |
| | | LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | .eq("loc_no", locNo)); |
| | | if (locMast1 != null) { |
| | | HashMap<String, Object> point = new HashMap<>(); |
| | | point.put("y", baseRowCode); |
| | | point.put("x", baseBayCode); |
| | | point.put("z", lev); |
| | | locMast1.setQrCodeValue(JSON.toJSONString(point)); |
| | | locMastService.updateById(locMast1); |
| | | } |
| | | baseBayCode += 1; |
| | | } |
| | | } |
| | | baseRowCode += 1; |
| | | } |
| | | } |
| | | } |
| | | // List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true)); |
| | | // basShuttleChargeService.delete(new EntityWrapper<>()); |
| | | // int chargeNo = 1; |
| | | // for (BasMap basMap : basMaps) { |
| | | // Integer lev = basMap.getLev(); |
| | | // locMastService.delete(new EntityWrapper<>(new LocMast()) |
| | | // .eq("lev1", lev)); |
| | | // List<List<MapNode>> lists = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//è·å宿´å°å¾(å
æ¬å
¥åºåºåº) |
| | | // for (int row = 0; row < lists.size(); row++) { |
| | | // List<MapNode> nodeList = lists.get(row); |
| | | // for (int bay = 0; bay < nodeList.size(); bay++) { |
| | | // MapNode mapNode = nodeList.get(bay); |
| | | // |
| | | // if (mapNode.getValue() == MapNodeType.DISABLE.id) { |
| | | // continue; |
| | | // } |
| | | // |
| | | // String locNo = Utils.getLocNo(row, bay, lev); |
| | | // LocMast locMast = new LocMast(); |
| | | // locMast.setLocNo(locNo); |
| | | // locMast.setRow1(row); |
| | | // locMast.setBay1(bay); |
| | | // locMast.setLev1(lev); |
| | | // locMast.setStatus(1); |
| | | // |
| | | // if (mapNode.getValue() == MapNodeType.NORMAL_PATH.id) { |
| | | // locMast.setLocSts(LocStsType.O.toString()); |
| | | // } else if (mapNode.getValue() == MapNodeType.MAIN_PATH.id) { |
| | | // locMast.setLocSts(LocStsType.W.toString()); |
| | | // } else if (mapNode.getValue() == MapNodeType.CHARGE.id) { |
| | | // locMast.setLocSts(LocStsType.C.toString()); |
| | | // |
| | | // BasShuttleCharge basShuttleCharge = new BasShuttleCharge(); |
| | | // basShuttleCharge.setChargeId(chargeNo++); |
| | | // basShuttleCharge.setLocNo(locNo); |
| | | // basShuttleCharge.setWaitLocNo(locNo); |
| | | // basShuttleCharge.setStatus(1); |
| | | // basShuttleCharge.setCreateTime(new Date()); |
| | | // basShuttleCharge.setUpdateTime(new Date()); |
| | | // basShuttleChargeService.insert(basShuttleCharge); |
| | | // } else if (mapNode.getValue() == MapNodeType.CONVEYOR.id) { |
| | | // locMast.setLocSts(LocStsType.E.toString()); |
| | | // } else if (mapNode.getValue() == MapNodeType.LIFT.id) { |
| | | // locMast.setLocSts(LocStsType.E.toString()); |
| | | // } |
| | | // |
| | | // locMastService.insert(locMast); |
| | | // } |
| | | // } |
| | | // |
| | | // LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("lev1", lev).orderBy("row1", false)); |
| | | // Integer rowMax = locMast.getRow1(); |
| | | // LocMast locMast2 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("lev1", lev).orderBy("bay1", false)); |
| | | // Integer bayMax = locMast2.getBay1(); |
| | | // |
| | | // Integer baseRow = basMap.getBaseRow(); |
| | | // Integer baseRowCode = basMap.getBaseRowCode(); |
| | | // |
| | | // if (baseRow > 0) { |
| | | // for (int i = baseRow; i <= rowMax; i++) { |
| | | // Integer baseBayCode = basMap.getBaseBayCode(); |
| | | // if (basMap.getBaseBay() > 0) { |
| | | // for (int j = basMap.getBaseBay(); j <= bayMax; j++) { |
| | | // String locNo = Utils.getLocNo(i, j, lev); |
| | | // |
| | | // LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | // .eq("loc_no", locNo)); |
| | | // if (locMast1 != null) { |
| | | // HashMap<String, Object> point = new HashMap<>(); |
| | | // point.put("y", baseRowCode); |
| | | // point.put("x", baseBayCode); |
| | | // point.put("z", lev); |
| | | // locMast1.setQrCodeValue(JSON.toJSONString(point)); |
| | | // locMastService.updateById(locMast1); |
| | | // } |
| | | // baseBayCode += 1; |
| | | // } |
| | | // }else { |
| | | // int baseBay = basMap.getBaseBay() * -1; |
| | | // for (int j = baseBay; j > 0; j--) { |
| | | // String locNo = Utils.getLocNo(i, j, lev); |
| | | // |
| | | // LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | // .eq("loc_no", locNo)); |
| | | // if (locMast1 != null) { |
| | | // HashMap<String, Object> point = new HashMap<>(); |
| | | // point.put("y", baseRowCode); |
| | | // point.put("x", baseBayCode); |
| | | // point.put("z", lev); |
| | | // locMast1.setQrCodeValue(JSON.toJSONString(point)); |
| | | // locMastService.updateById(locMast1); |
| | | // } |
| | | // baseBayCode += 1; |
| | | // } |
| | | // } |
| | | // baseRowCode += 1; |
| | | // } |
| | | // }else { |
| | | // baseRow = baseRow * -1; |
| | | // for (int i = baseRow; i > 0; i--) { |
| | | // Integer baseBayCode = basMap.getBaseBayCode(); |
| | | // if (basMap.getBaseBay() > 0) { |
| | | // for (int j = basMap.getBaseBay(); j <= bayMax; j++) { |
| | | // String locNo = Utils.getLocNo(i, j, lev); |
| | | // |
| | | // LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | // .eq("loc_no", locNo)); |
| | | // if (locMast1 != null) { |
| | | // HashMap<String, Object> point = new HashMap<>(); |
| | | // point.put("y", baseRowCode); |
| | | // point.put("x", baseBayCode); |
| | | // point.put("z", lev); |
| | | // locMast1.setQrCodeValue(JSON.toJSONString(point)); |
| | | // locMastService.updateById(locMast1); |
| | | // } |
| | | // baseBayCode += 1; |
| | | // } |
| | | // }else { |
| | | // int baseBay = basMap.getBaseBay() * -1; |
| | | // for (int j = baseBay; j > 0; j--) { |
| | | // String locNo = Utils.getLocNo(i, j, lev); |
| | | // |
| | | // LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | // .eq("loc_no", locNo)); |
| | | // if (locMast1 != null) { |
| | | // HashMap<String, Object> point = new HashMap<>(); |
| | | // point.put("y", baseRowCode); |
| | | // point.put("x", baseBayCode); |
| | | // point.put("z", lev); |
| | | // locMast1.setQrCodeValue(JSON.toJSONString(point)); |
| | | // locMastService.updateById(locMast1); |
| | | // } |
| | | // baseBayCode += 1; |
| | | // } |
| | | // } |
| | | // baseRowCode += 1; |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | return R.ok(); |
| | | } |
| | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.R; |
| | | import com.zy.asrs.domain.ShuttleGatherResult; |
| | | import com.zy.asrs.domain.enums.NotifyMsgType; |
| | | import com.zy.asrs.domain.param.*; |
| | | import com.zy.asrs.entity.ApiLog; |
| | | import com.zy.asrs.entity.DeviceConfig; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.DeviceConfigService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.asrs.utils.NotifyUtils; |
| | | import com.zy.common.annotations.OpenApiLog; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.core.cache.SlaveConnection; |
| | | import com.zy.core.dispatcher.ShuttleDispatchUtils; |
| | | import com.zy.core.enums.SlaveType; |
| | | import com.zy.core.enums.WrkIoType; |
| | | import com.zy.core.model.protocol.ForkLiftProtocol; |
| | | import com.zy.core.model.protocol.LiftProtocol; |
| | | import com.zy.core.model.protocol.ShuttleProtocol; |
| | | import com.zy.core.thread.ForkLiftThread; |
| | | import com.zy.core.thread.LiftThread; |
| | | import com.zy.core.thread.ShuttleThread; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | |
| | | @Autowired |
| | | private CommonService commonService; |
| | | @Autowired |
| | | private ShuttleDispatchUtils shuttleDispatchUtils; |
| | | @Autowired |
| | | private NotifyUtils notifyUtils; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | | private DeviceConfigService deviceConfigService; |
| | | |
| | | @PostMapping("/createMoveTask") |
| | | @OpenApiLog(memo = "å°è½¦ç§»å¨ä»»å¡") |
| | | public R createMoveTask(@RequestBody CreateMoveTaskParam param) { |
| | | if (param == null) { |
| | | return R.error("åæ°ä¸è½ä¸ºç©º"); |
| | | } |
| | | boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(null, param.getLocNo(), param.getShuttleNo()); |
| | | apiLogService.insert(new ApiLog( |
| | | null |
| | | , "å°è½¦ç§»å¨ä»»å¡" |
| | | , "/createMoveTask" |
| | | , null |
| | | , null |
| | | , null |
| | | , JSON.toJSONString(param) |
| | | , null |
| | | , null |
| | | , dispatchShuttle ? 1 : 0 |
| | | , 1 |
| | | , new Date() |
| | | , null |
| | | , null |
| | | )); |
| | | if (dispatchShuttle) { |
| | | return R.ok(); |
| | | } |
| | | return R.error("çæå¤±è´¥"); |
| | | } |
| | | |
| | | //ç§»åºä»»å¡ |
| | | @PostMapping("/createLocMoveTask") |
| | |
| | | // @OpenApiLog(memo = "è·å设å¤ç¶æ") |
| | | public R getDeviceStatus() { |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | //è·åå°è½¦æ°æ® |
| | | ArrayList<ShuttleProtocol> shuttleProtocols = new ArrayList<>(); |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig device : shuttleList) { |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); |
| | | if (shuttleThread == null) { |
| | | continue; |
| | | } |
| | | |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | continue; |
| | | } |
| | | shuttleProtocols.add(shuttleProtocol); |
| | | } |
| | | |
| | | //è·åè´§åæåæºæ°æ® |
| | | ArrayList<ForkLiftProtocol> forkLiftProtocols = new ArrayList<>(); |
| | | List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.ForkLift))); |
| | | for (DeviceConfig device : forkLiftList) { |
| | | ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo()); |
| | | if (forkLiftThread == null) { |
| | | continue; |
| | | } |
| | | |
| | | ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); |
| | | if (forkLiftProtocol == null) { |
| | | continue; |
| | | } |
| | | forkLiftProtocols.add(forkLiftProtocol); |
| | | } |
| | | |
| | | //è·åæåæºæ°æ® |
| | | ArrayList<LiftProtocol> liftProtocols = new ArrayList<>(); |
| | | List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Lift))); |
| | | for (DeviceConfig device : liftList) { |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo()); |
| | | if (liftThread == null) { |
| | | continue; |
| | | } |
| | | |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null) { |
| | | continue; |
| | | } |
| | | liftProtocols.add(liftProtocol); |
| | | } |
| | | |
| | | map.put("shuttle", shuttleProtocols); |
| | | map.put("forkLift", forkLiftProtocols); |
| | | map.put("lift", liftProtocols); |
| | | |
| | | return R.ok().add(map); |
| | | } |
| | | |
| | | @RequestMapping("/liftDeviceOriginData") |
| | | public R getLiftDeviceOriginData() { |
| | | HashMap<Integer, String> map = new HashMap<>(); |
| | | |
| | | //è·åæåæºæ°æ® |
| | | List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Lift))); |
| | | for (DeviceConfig device : liftList) { |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo()); |
| | | if (liftThread == null) { |
| | | continue; |
| | | } |
| | | |
| | | map.put(device.getDeviceNo(), liftThread.getRealtimeOriginData()); |
| | | } |
| | | // //è·åå°è½¦æ°æ® |
| | | // ArrayList<ShuttleProtocol> shuttleProtocols = new ArrayList<>(); |
| | | // List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | // .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | // for (DeviceConfig device : shuttleList) { |
| | | // ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); |
| | | // if (shuttleThread == null) { |
| | | // continue; |
| | | // } |
| | | // |
| | | // ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | // if (shuttleProtocol == null) { |
| | | // continue; |
| | | // } |
| | | // shuttleProtocols.add(shuttleProtocol); |
| | | // } |
| | | // |
| | | // //è·åè´§åæåæºæ°æ® |
| | | // ArrayList<ForkLiftProtocol> forkLiftProtocols = new ArrayList<>(); |
| | | // List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | // .eq("device_type", String.valueOf(SlaveType.ForkLift))); |
| | | // for (DeviceConfig device : forkLiftList) { |
| | | // ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, device.getDeviceNo()); |
| | | // if (forkLiftThread == null) { |
| | | // continue; |
| | | // } |
| | | // |
| | | // ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); |
| | | // if (forkLiftProtocol == null) { |
| | | // continue; |
| | | // } |
| | | // forkLiftProtocols.add(forkLiftProtocol); |
| | | // } |
| | | // |
| | | // //è·åæåæºæ°æ® |
| | | // ArrayList<LiftProtocol> liftProtocols = new ArrayList<>(); |
| | | // List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | // .eq("device_type", String.valueOf(SlaveType.Lift))); |
| | | // for (DeviceConfig device : liftList) { |
| | | // LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo()); |
| | | // if (liftThread == null) { |
| | | // continue; |
| | | // } |
| | | // |
| | | // LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | // if (liftProtocol == null) { |
| | | // continue; |
| | | // } |
| | | // liftProtocols.add(liftProtocol); |
| | | // } |
| | | // |
| | | // map.put("shuttle", shuttleProtocols); |
| | | // map.put("forkLift", forkLiftProtocols); |
| | | // map.put("lift", liftProtocols); |
| | | |
| | | return R.ok().add(map); |
| | | } |
| | |
| | | return R.ok().add(list); |
| | | } |
| | | |
| | | @PostMapping("/shuttleGather") |
| | | @OpenApiLog(memo = "å°è½¦éå") |
| | | public R shuttleGather(@RequestBody ShuttleGatherParam param) { |
| | | List<ShuttleGatherResult> shuttleGather = shuttleDispatchUtils.shuttleGather(param); |
| | | |
| | | apiLogService.insert(new ApiLog( |
| | | null |
| | | , "å°è½¦éå" |
| | | , "/shuttleGather" |
| | | , null |
| | | , null |
| | | , null |
| | | , JSON.toJSONString(param) |
| | | , JSON.toJSONString(shuttleGather) |
| | | , null |
| | | , null |
| | | , 1 |
| | | , new Date() |
| | | , null |
| | | , null |
| | | )); |
| | | |
| | | return R.ok().add(shuttleGather); |
| | | } |
| | | |
| | | @PostMapping("/shuttleDemo") |
| | | @OpenApiLog(memo = "å°è½¦æ¼ç¤º") |
| | | public R shuttleDemo(@RequestBody ShuttleDemoParam param) { |
| | | shuttleDispatchUtils.shuttleDemo(param); |
| | | |
| | | apiLogService.insert(new ApiLog( |
| | | null |
| | | , "å°è½¦æ¼ç¤º" |
| | | , "/shuttleDemo" |
| | | , null |
| | | , null |
| | | , null |
| | | , JSON.toJSONString(param) |
| | | , null |
| | | , null |
| | | , null |
| | | , 1 |
| | | , new Date() |
| | | , null |
| | | , null |
| | | )); |
| | | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @PostMapping("/queryTask") |
| | | @OpenApiLog(memo = "æ¥è¯¢ä»»å¡") |
| | | public R queryTask(@RequestBody QueryTaskParam param) { |
| | |
| | | |
| | | @GetMapping("/systemStatus") |
| | | public R systemStatus() { |
| | | return R.ok(); |
| | | } |
| | | |
| | | @GetMapping("/test") |
| | | public R test() { |
| | | notifyUtils.notify("task", 1, "9999", "W9999", NotifyMsgType.SHUTTLE_MOVING, "data"); |
| | | notifyUtils.notify(String.valueOf(SlaveType.Shuttle), 2, "9999", "W9999", NotifyMsgType.SHUTTLE_MOVE_COMPLETE); |
| | | return R.ok(); |
| | | } |
| | | |
| New file |
| | |
| | | package com.zy.asrs.entity; |
| | | |
| | | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import java.io.Serializable; |
| | | |
| | | @Data |
| | | @TableName("asr_bas_crnp") |
| | | public class BasCrnp implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * ç¼å· |
| | | */ |
| | | @ApiModelProperty(value= "ç¼å·") |
| | | @TableId(value = "crn_no", type = IdType.AUTO) |
| | | @TableField("crn_no") |
| | | private Integer crnNo; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | private Integer status; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @TableField("wrk_no") |
| | | private Integer wrkNo; |
| | | |
| | | /** |
| | | * å¯å
¥(checkBox) |
| | | */ |
| | | @ApiModelProperty(value= "å¯å
¥(checkBox)") |
| | | @TableField("in_enable") |
| | | private String inEnable; |
| | | |
| | | /** |
| | | * å¯åº(checkBox) |
| | | */ |
| | | @ApiModelProperty(value= "å¯åº(checkBox)") |
| | | @TableField("out_enable") |
| | | private String outEnable; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @TableField("create_by") |
| | | private Long createBy; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @TableField("create_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date createTime; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @TableField("update_by") |
| | | private Long updateBy; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | @TableField("update_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date updateTime; |
| | | |
| | | @ApiModelProperty(value= "") |
| | | private String memo; |
| | | |
| | | public BasCrnp() {} |
| | | |
| | | public BasCrnp(Integer status,Integer wrkNo,String inEnable,String outEnable,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { |
| | | this.status = status; |
| | | this.wrkNo = wrkNo; |
| | | this.inEnable = inEnable; |
| | | this.outEnable = outEnable; |
| | | this.createBy = createBy; |
| | | this.createTime = createTime; |
| | | this.updateBy = updateBy; |
| | | this.updateTime = updateTime; |
| | | this.memo = memo; |
| | | } |
| | | |
| | | // BasCrnp basCrnp = new BasCrnp( |
| | | // null, // |
| | | // null, // |
| | | // null, // å¯å
¥(checkBox) |
| | | // null, // å¯åº(checkBox) |
| | | // null, // |
| | | // null, // |
| | | // null, // |
| | | // null, // |
| | | // null // |
| | | // ); |
| | | |
| | | public String getCreateTime$(){ |
| | | if (Cools.isEmpty(this.createTime)){ |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); |
| | | } |
| | | |
| | | public String getUpdateTime$(){ |
| | | if (Cools.isEmpty(this.updateTime)){ |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); |
| | | } |
| | | |
| | | public String getStatus$(){ |
| | | if (Cools.isEmpty(this.status)){ |
| | | return ""; |
| | | } |
| | | return this.status == 1 ? "æ£å¸¸" : "ç¦ç¨"; |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.entity; |
| | | |
| | | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.system.service.UserService; |
| | | import com.zy.system.entity.User; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.system.service.UserService; |
| | | import com.zy.system.entity.User; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import java.io.Serializable; |
| | | |
| | | @Data |
| | | @TableName("asr_bas_crnp_err") |
| | | public class BasCrnpErr implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * ç¼å· |
| | | */ |
| | | @ApiModelProperty(value= "ç¼å·") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Integer id; |
| | | |
| | | /** |
| | | * å¼å¸¸ç |
| | | */ |
| | | @ApiModelProperty(value= "å¼å¸¸ç ") |
| | | @TableField("error_code") |
| | | private Long errorCode; |
| | | |
| | | /** |
| | | * å¼å¸¸ |
| | | */ |
| | | @ApiModelProperty(value= "å¼å¸¸") |
| | | @TableField("err_name") |
| | | private String errName; |
| | | |
| | | /** |
| | | * ä¿®æ¹äººå |
| | | */ |
| | | @ApiModelProperty(value= "ä¿®æ¹äººå") |
| | | @TableField("modi_user") |
| | | private Long modiUser; |
| | | |
| | | /** |
| | | * ä¿®æ¹æ¶é´ |
| | | */ |
| | | @ApiModelProperty(value= "ä¿®æ¹æ¶é´") |
| | | @TableField("modi_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date modiTime; |
| | | |
| | | /** |
| | | * æ·»å 人å |
| | | */ |
| | | @ApiModelProperty(value= "æ·»å 人å") |
| | | @TableField("appe_user") |
| | | private Long appeUser; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | */ |
| | | @ApiModelProperty(value= "æ·»å æ¶é´") |
| | | @TableField("appe_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date appeTime; |
| | | |
| | | public BasCrnpErr() {} |
| | | |
| | | public BasCrnpErr(Long errorCode,String errName,Long modiUser,Date modiTime,Long appeUser,Date appeTime) { |
| | | this.errorCode = errorCode; |
| | | this.errName = errName; |
| | | this.modiUser = modiUser; |
| | | this.modiTime = modiTime; |
| | | this.appeUser = appeUser; |
| | | this.appeTime = appeTime; |
| | | } |
| | | |
| | | // BasCrnpErr basCrnpErr = new BasCrnpErr( |
| | | // null, // å¼å¸¸ç |
| | | // null, // å¼å¸¸ |
| | | // null, // ä¿®æ¹äººå |
| | | // null, // ä¿®æ¹æ¶é´ |
| | | // null, // æ·»å 人å |
| | | // null // æ·»å æ¶é´ |
| | | // ); |
| | | |
| | | public String getModiUser$(){ |
| | | UserService service = SpringUtils.getBean(UserService.class); |
| | | User user = service.selectById(this.modiUser); |
| | | if (!Cools.isEmpty(user)){ |
| | | return String.valueOf(user.getId()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public String getModiTime$(){ |
| | | if (Cools.isEmpty(this.modiTime)){ |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.modiTime); |
| | | } |
| | | |
| | | public String getAppeUser$(){ |
| | | UserService service = SpringUtils.getBean(UserService.class); |
| | | User user = service.selectById(this.appeUser); |
| | | if (!Cools.isEmpty(user)){ |
| | | return String.valueOf(user.getId()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public String getAppeTime$(){ |
| | | if (Cools.isEmpty(this.appeTime)){ |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.appeTime); |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.entity; |
| | | |
| | | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.asrs.service.BasWrkStatusService; |
| | | import com.zy.asrs.entity.BasWrkStatus; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.asrs.service.BasWrkIotypeService; |
| | | import com.zy.asrs.entity.BasWrkIotype; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.system.service.UserService; |
| | | import com.zy.system.entity.User; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.system.service.UserService; |
| | | import com.zy.system.entity.User; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import java.io.Serializable; |
| | | |
| | | @Data |
| | | @TableName("asr_bas_crnp_err_log") |
| | | public class BasCrnpErrLog implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * ç¼å· |
| | | */ |
| | | @ApiModelProperty(value= "ç¼å·") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | /** |
| | | * å·¥ä½å· |
| | | */ |
| | | @ApiModelProperty(value= "å·¥ä½å·") |
| | | @TableField("wrk_no") |
| | | private Integer wrkNo; |
| | | |
| | | /** |
| | | * åçæ¶é´ |
| | | */ |
| | | @ApiModelProperty(value= "åçæ¶é´") |
| | | @TableField("start_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date startTime; |
| | | |
| | | /** |
| | | * ç»ææ¶é´ |
| | | */ |
| | | @ApiModelProperty(value= "ç»ææ¶é´") |
| | | @TableField("end_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date endTime; |
| | | |
| | | /** |
| | | * å·¥ä½ç¶æ |
| | | */ |
| | | @ApiModelProperty(value= "å·¥ä½ç¶æ") |
| | | @TableField("wrk_sts") |
| | | private Long wrkSts; |
| | | |
| | | /** |
| | | * å
¥åºåºç±»å |
| | | */ |
| | | @ApiModelProperty(value= "å
¥åºåºç±»å") |
| | | @TableField("io_type") |
| | | private Integer ioType; |
| | | |
| | | /** |
| | | * å åæºå· |
| | | */ |
| | | @ApiModelProperty(value= "å åæºå·") |
| | | @TableField("crn_no") |
| | | private Integer crnNo; |
| | | |
| | | /** |
| | | * ç®æ åºä½ |
| | | */ |
| | | @ApiModelProperty(value= "ç®æ åºä½") |
| | | @TableField("loc_no") |
| | | private String locNo; |
| | | |
| | | /** |
| | | * ç®æ ç« |
| | | */ |
| | | @ApiModelProperty(value= "ç®æ ç«") |
| | | @TableField("sta_no") |
| | | private Integer staNo; |
| | | |
| | | /** |
| | | * æºç« |
| | | */ |
| | | @ApiModelProperty(value= "æºç«") |
| | | @TableField("source_sta_no") |
| | | private Integer sourceStaNo; |
| | | |
| | | /** |
| | | * æºåºä½ |
| | | */ |
| | | @ApiModelProperty(value= "æºåºä½") |
| | | @TableField("source_loc_no") |
| | | private String sourceLocNo; |
| | | |
| | | /** |
| | | * æ¡ç |
| | | */ |
| | | @ApiModelProperty(value= "æ¡ç ") |
| | | private String barcode; |
| | | |
| | | /** |
| | | * å¼å¸¸ç |
| | | */ |
| | | @ApiModelProperty(value= "å¼å¸¸ç ") |
| | | @TableField("err_code") |
| | | private Integer errCode; |
| | | |
| | | /** |
| | | * å¼å¸¸ |
| | | */ |
| | | @ApiModelProperty(value= "å¼å¸¸") |
| | | private String error; |
| | | |
| | | /** |
| | | * å¼å¸¸æ
åµ 1: æªå¤ç 2: å·²ä¿®å¤ |
| | | */ |
| | | @ApiModelProperty(value= "å¼å¸¸æ
åµ 1: æªå¤ç 2: å·²ä¿®å¤ ") |
| | | private Integer status; |
| | | |
| | | /** |
| | | * æ·»å æ¶é´ |
| | | */ |
| | | @ApiModelProperty(value= "æ·»å æ¶é´") |
| | | @TableField("create_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date createTime; |
| | | |
| | | /** |
| | | * æ·»å 人å |
| | | */ |
| | | @ApiModelProperty(value= "æ·»å 人å") |
| | | @TableField("create_by") |
| | | private Long createBy; |
| | | |
| | | /** |
| | | * ä¿®æ¹æ¶é´ |
| | | */ |
| | | @ApiModelProperty(value= "ä¿®æ¹æ¶é´") |
| | | @TableField("update_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * ä¿®æ¹äººå |
| | | */ |
| | | @ApiModelProperty(value= "ä¿®æ¹äººå") |
| | | @TableField("update_by") |
| | | private Long updateBy; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @ApiModelProperty(value= "夿³¨") |
| | | private String memo; |
| | | |
| | | /** |
| | | * ç³»ç»ç¶ææ°æ® |
| | | */ |
| | | @ApiModelProperty(value= "ç³»ç»ç¶ææ°æ®") |
| | | @TableField("system_status") |
| | | private String systemStatus; |
| | | |
| | | public BasCrnpErrLog() {} |
| | | |
| | | public BasCrnpErrLog(Integer wrkNo,Date startTime,Date endTime,Long wrkSts,Integer ioType,Integer crnNo,String locNo,Integer staNo,Integer sourceStaNo,String sourceLocNo,String barcode,Integer errCode,String error,Integer status,Date createTime,Long createBy,Date updateTime,Long updateBy,String memo,String systemStatus) { |
| | | this.wrkNo = wrkNo; |
| | | this.startTime = startTime; |
| | | this.endTime = endTime; |
| | | this.wrkSts = wrkSts; |
| | | this.ioType = ioType; |
| | | this.crnNo = crnNo; |
| | | this.locNo = locNo; |
| | | this.staNo = staNo; |
| | | this.sourceStaNo = sourceStaNo; |
| | | this.sourceLocNo = sourceLocNo; |
| | | this.barcode = barcode; |
| | | this.errCode = errCode; |
| | | this.error = error; |
| | | this.status = status; |
| | | this.createTime = createTime; |
| | | this.createBy = createBy; |
| | | this.updateTime = updateTime; |
| | | this.updateBy = updateBy; |
| | | this.memo = memo; |
| | | this.systemStatus = systemStatus; |
| | | } |
| | | |
| | | // BasCrnpErrLog basCrnpErrLog = new BasCrnpErrLog( |
| | | // null, // å·¥ä½å· |
| | | // null, // åçæ¶é´ |
| | | // null, // ç»ææ¶é´ |
| | | // null, // å·¥ä½ç¶æ |
| | | // null, // å
¥åºåºç±»å |
| | | // null, // å åæºå· |
| | | // null, // ç®æ åºä½ |
| | | // null, // ç®æ ç« |
| | | // null, // æºç« |
| | | // null, // æºåºä½ |
| | | // null, // æ¡ç |
| | | // null, // å¼å¸¸ç |
| | | // null, // å¼å¸¸ |
| | | // null, // å¼å¸¸æ
åµ |
| | | // null, // æ·»å æ¶é´ |
| | | // null, // æ·»å 人å |
| | | // null, // ä¿®æ¹æ¶é´ |
| | | // null, // ä¿®æ¹äººå |
| | | // null, // 夿³¨ |
| | | // null // ç³»ç»ç¶ææ°æ® |
| | | // ); |
| | | |
| | | public String getStartTime$(){ |
| | | if (Cools.isEmpty(this.startTime)){ |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.startTime); |
| | | } |
| | | |
| | | public String getEndTime$(){ |
| | | if (Cools.isEmpty(this.endTime)){ |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.endTime); |
| | | } |
| | | |
| | | public String getWrkSts$(){ |
| | | BasWrkStatusService service = SpringUtils.getBean(BasWrkStatusService.class); |
| | | BasWrkStatus basWrkStatus = service.selectById(this.wrkSts); |
| | | if (!Cools.isEmpty(basWrkStatus)){ |
| | | return String.valueOf(basWrkStatus.getWrkDesc()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public String getIoType$(){ |
| | | BasWrkIotypeService service = SpringUtils.getBean(BasWrkIotypeService.class); |
| | | BasWrkIotype basWrkIotype = service.selectById(this.ioType); |
| | | if (!Cools.isEmpty(basWrkIotype)){ |
| | | return String.valueOf(basWrkIotype.getIoDesc()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public String getStatus$(){ |
| | | if (null == this.status){ return null; } |
| | | switch (this.status){ |
| | | case 1: |
| | | return "æªå¤ç"; |
| | | case 2: |
| | | return "已修å¤"; |
| | | default: |
| | | return String.valueOf(this.status); |
| | | } |
| | | } |
| | | |
| | | public String getCreateTime$(){ |
| | | if (Cools.isEmpty(this.createTime)){ |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime); |
| | | } |
| | | |
| | | public String getCreateBy$(){ |
| | | UserService service = SpringUtils.getBean(UserService.class); |
| | | User user = service.selectById(this.createBy); |
| | | if (!Cools.isEmpty(user)){ |
| | | return String.valueOf(user.getId()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public String getUpdateTime$(){ |
| | | if (Cools.isEmpty(this.updateTime)){ |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); |
| | | } |
| | | |
| | | public String getUpdateBy$(){ |
| | | UserService service = SpringUtils.getBean(UserService.class); |
| | | User user = service.selectById(this.updateBy); |
| | | if (!Cools.isEmpty(user)){ |
| | | return String.valueOf(user.getId()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.entity; |
| | | |
| | | import com.core.common.Cools;import com.baomidou.mybatisplus.annotations.TableId; |
| | | import com.baomidou.mybatisplus.enums.IdType; |
| | | import com.baomidou.mybatisplus.annotations.TableField; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.system.service.UserService; |
| | | import com.zy.system.entity.User; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import com.baomidou.mybatisplus.annotations.TableName; |
| | | import java.io.Serializable; |
| | | |
| | | @Data |
| | | @TableName("asr_bas_crnp_opt") |
| | | public class BasCrnpOpt implements Serializable { |
| | | |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /** |
| | | * ç¼å· |
| | | */ |
| | | @ApiModelProperty(value= "ç¼å·") |
| | | @TableId(value = "id", type = IdType.AUTO) |
| | | private Long id; |
| | | |
| | | /** |
| | | * å·¥ä½å· |
| | | */ |
| | | @ApiModelProperty(value= "å·¥ä½å·") |
| | | @TableField("wrk_no") |
| | | private Integer wrkNo; |
| | | |
| | | /** |
| | | * å åæºå· |
| | | */ |
| | | @ApiModelProperty(value= "å åæºå·") |
| | | @TableField("crn_no") |
| | | private Integer crnNo; |
| | | |
| | | /** |
| | | * ä¸åæ¶é´ |
| | | */ |
| | | @ApiModelProperty(value= "ä¸åæ¶é´") |
| | | @TableField("send_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date sendTime; |
| | | |
| | | /** |
| | | * ä½ä¸ |
| | | */ |
| | | @ApiModelProperty(value= "ä½ä¸") |
| | | private String mode; |
| | | |
| | | /** |
| | | * èµ·ç¹åºä½ |
| | | */ |
| | | @ApiModelProperty(value= "èµ·ç¹åºä½") |
| | | @TableField("source_loc_no") |
| | | private String sourceLocNo; |
| | | |
| | | /** |
| | | * ç®æ åºä½ |
| | | */ |
| | | @ApiModelProperty(value= "ç®æ åºä½") |
| | | @TableField("target_loc_no") |
| | | private String targetLocNo; |
| | | |
| | | /** |
| | | * ä¿®æ¹æ¶é´ |
| | | */ |
| | | @ApiModelProperty(value= "ä¿®æ¹æ¶é´") |
| | | @TableField("update_time") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date updateTime; |
| | | |
| | | /** |
| | | * ä¿®æ¹äººå |
| | | */ |
| | | @ApiModelProperty(value= "ä¿®æ¹äººå") |
| | | @TableField("update_by") |
| | | private Long updateBy; |
| | | |
| | | /** |
| | | * 夿³¨ |
| | | */ |
| | | @ApiModelProperty(value= "夿³¨") |
| | | private String memo; |
| | | |
| | | /** |
| | | * å½ä»¤ |
| | | */ |
| | | @ApiModelProperty(value= "å½ä»¤") |
| | | private String command; |
| | | |
| | | /** |
| | | * ç³»ç»ç¶æ |
| | | */ |
| | | @ApiModelProperty(value= "ç³»ç»ç¶æ") |
| | | @TableField("system_status") |
| | | private String systemStatus; |
| | | |
| | | /** |
| | | * ä¸åç¶æ 0: æªä¸å 1: å·²ä¸å |
| | | */ |
| | | @ApiModelProperty(value= "ä¸åç¶æ 0: æªä¸å 1: å·²ä¸å ") |
| | | private Integer send; |
| | | |
| | | /** |
| | | * 请æ±ååº |
| | | */ |
| | | @ApiModelProperty(value= "请æ±ååº") |
| | | private String response; |
| | | |
| | | public BasCrnpOpt() {} |
| | | |
| | | public BasCrnpOpt(Integer wrkNo,Integer crnNo,Date sendTime,String mode,String sourceLocNo,String targetLocNo,Date updateTime,Long updateBy,String memo,String command,String systemStatus,Integer send,String response) { |
| | | this.wrkNo = wrkNo; |
| | | this.crnNo = crnNo; |
| | | this.sendTime = sendTime; |
| | | this.mode = mode; |
| | | this.sourceLocNo = sourceLocNo; |
| | | this.targetLocNo = targetLocNo; |
| | | this.updateTime = updateTime; |
| | | this.updateBy = updateBy; |
| | | this.memo = memo; |
| | | this.command = command; |
| | | this.systemStatus = systemStatus; |
| | | this.send = send; |
| | | this.response = response; |
| | | } |
| | | |
| | | // BasCrnpOpt basCrnpOpt = new BasCrnpOpt( |
| | | // null, // å·¥ä½å· |
| | | // null, // å åæºå· |
| | | // null, // ä¸åæ¶é´ |
| | | // null, // ä½ä¸ |
| | | // null, // èµ·ç¹åºä½ |
| | | // null, // ç®æ åºä½ |
| | | // null, // ä¿®æ¹æ¶é´ |
| | | // null, // ä¿®æ¹äººå |
| | | // null, // 夿³¨ |
| | | // null, // å½ä»¤ |
| | | // null, // ç³»ç»ç¶æ |
| | | // null, // ä¸åç¶æ |
| | | // null // 请æ±ååº |
| | | // ); |
| | | |
| | | public String getSendTime$(){ |
| | | if (Cools.isEmpty(this.sendTime)){ |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.sendTime); |
| | | } |
| | | |
| | | public String getUpdateTime$(){ |
| | | if (Cools.isEmpty(this.updateTime)){ |
| | | return ""; |
| | | } |
| | | return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime); |
| | | } |
| | | |
| | | public String getUpdateBy$(){ |
| | | UserService service = SpringUtils.getBean(UserService.class); |
| | | User user = service.selectById(this.updateBy); |
| | | if (!Cools.isEmpty(user)){ |
| | | return String.valueOf(user.getId()); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public String getSend$(){ |
| | | if (null == this.send){ return null; } |
| | | switch (this.send){ |
| | | case 0: |
| | | return "æªä¸å"; |
| | | case 1: |
| | | return "å·²ä¸å"; |
| | | default: |
| | | return String.valueOf(this.send); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.mapper; |
| | | |
| | | import com.zy.asrs.entity.BasCrnpErrLog; |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface BasCrnpErrLogMapper extends BaseMapper<BasCrnpErrLog> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.mapper; |
| | | |
| | | import com.zy.asrs.entity.BasCrnpErr; |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface BasCrnpErrMapper extends BaseMapper<BasCrnpErr> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.mapper; |
| | | |
| | | import com.zy.asrs.entity.BasCrnp; |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface BasCrnpMapper extends BaseMapper<BasCrnp> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.mapper; |
| | | |
| | | import com.zy.asrs.entity.BasCrnpOpt; |
| | | import com.baomidou.mybatisplus.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Mapper; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | @Mapper |
| | | @Repository |
| | | public interface BasCrnpOptMapper extends BaseMapper<BasCrnpOpt> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service; |
| | | |
| | | import com.zy.asrs.entity.BasCrnpErrLog; |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | |
| | | public interface BasCrnpErrLogService extends IService<BasCrnpErrLog> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service; |
| | | |
| | | import com.zy.asrs.entity.BasCrnpErr; |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | |
| | | public interface BasCrnpErrService extends IService<BasCrnpErr> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service; |
| | | |
| | | import com.zy.asrs.entity.BasCrnpOpt; |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | |
| | | public interface BasCrnpOptService extends IService<BasCrnpOpt> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service; |
| | | |
| | | import com.zy.asrs.entity.BasCrnp; |
| | | import com.baomidou.mybatisplus.service.IService; |
| | | |
| | | public interface BasCrnpService extends IService<BasCrnp> { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.zy.asrs.mapper.BasCrnpErrLogMapper; |
| | | import com.zy.asrs.entity.BasCrnpErrLog; |
| | | import com.zy.asrs.service.BasCrnpErrLogService; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service("basCrnpErrLogService") |
| | | public class BasCrnpErrLogServiceImpl extends ServiceImpl<BasCrnpErrLogMapper, BasCrnpErrLog> implements BasCrnpErrLogService { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.zy.asrs.mapper.BasCrnpErrMapper; |
| | | import com.zy.asrs.entity.BasCrnpErr; |
| | | import com.zy.asrs.service.BasCrnpErrService; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service("basCrnpErrService") |
| | | public class BasCrnpErrServiceImpl extends ServiceImpl<BasCrnpErrMapper, BasCrnpErr> implements BasCrnpErrService { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.zy.asrs.mapper.BasCrnpOptMapper; |
| | | import com.zy.asrs.entity.BasCrnpOpt; |
| | | import com.zy.asrs.service.BasCrnpOptService; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service("basCrnpOptService") |
| | | public class BasCrnpOptServiceImpl extends ServiceImpl<BasCrnpOptMapper, BasCrnpOpt> implements BasCrnpOptService { |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.zy.asrs.mapper.BasCrnpMapper; |
| | | import com.zy.asrs.entity.BasCrnp; |
| | | import com.zy.asrs.service.BasCrnpService; |
| | | import com.baomidou.mybatisplus.service.impl.ServiceImpl; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | @Service("basCrnpService") |
| | | public class BasCrnpServiceImpl extends ServiceImpl<BasCrnpMapper, BasCrnp> implements BasCrnpService { |
| | | |
| | | } |
| | |
| | | package com.zy.asrs.service.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.zy.asrs.domain.enums.NotifyMsgType; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.utils.NotifyUtils; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.model.*; |
| | | import com.zy.common.model.enums.NavigationMapType; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.utils.*; |
| | | import com.zy.core.News; |
| | | import com.zy.core.action.LiftAction; |
| | | import com.zy.core.action.ShuttleAction; |
| | | import com.zy.core.cache.SlaveConnection; |
| | | import com.zy.core.dispatcher.LiftDispatchUtils; |
| | | import com.zy.core.dispatcher.ShuttleDispatchUtils; |
| | | import com.zy.core.enums.*; |
| | | import com.zy.core.model.command.*; |
| | | import com.zy.core.model.protocol.*; |
| | | import com.zy.core.thread.*; |
| | | import com.zy.system.entity.Config; |
| | | import com.zy.system.service.ConfigService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * ç«ä½ä»åºWCSç³»ç»ä¸»æµç¨ä¸å¡ |
| | |
| | | @Slf4j |
| | | @Service("mainService") |
| | | public class MainServiceImpl { |
| | | |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | @Autowired |
| | | private BasShuttleErrLogService basShuttleErrLogService; |
| | | @Autowired |
| | | private BasLiftErrLogService basLiftErrLogService; |
| | | @Autowired |
| | | private BasShuttleErrService basShuttleErrService; |
| | | @Autowired |
| | | private BasLiftErrService basLiftErrService; |
| | | @Autowired |
| | | private CommonService commonService; |
| | | @Autowired |
| | | private BasMapService basMapService; |
| | | @Autowired |
| | | private ShuttleDispatchUtils shuttleDispatchUtils; |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | @Autowired |
| | | private ConfigService configService; |
| | | @Autowired |
| | | private NavigateMapData navigateMapData; |
| | | @Autowired |
| | | private NavigateUtils navigateUtils; |
| | | @Autowired |
| | | private ShuttleOperaUtils shuttleOperaUtils; |
| | | @Autowired |
| | | private ShuttleAction shuttleAction; |
| | | @Autowired |
| | | private LiftAction liftAction; |
| | | @Autowired |
| | | private NotifyUtils notifyUtils; |
| | | @Autowired |
| | | private BasShuttleChargeService basShuttleChargeService; |
| | | @Autowired |
| | | private DeviceConfigService deviceConfigService; |
| | | @Autowired |
| | | private LiftDispatchUtils liftDispatchUtils; |
| | | @Autowired |
| | | private BasShuttleService basShuttleService; |
| | | |
| | | /** |
| | | * åå§å宿¶å°å¾ |
| | | */ |
| | | public synchronized void initRealtimeBasMap() { |
| | | try { |
| | | |
| | | List<BasMap> basMaps = basMapService.selectList(new EntityWrapper<BasMap>().orderBy("lev", true)); |
| | | for (BasMap basMap : basMaps) { |
| | | Integer lev = basMap.getLev(); |
| | | Object data = redisUtil.get(RedisKeyType.MAP.key + lev); |
| | | if (data == null) {//rediså°å¾æ°æ®ä¸ºç©º |
| | | //è½½å
¥å°å¾ |
| | | List<List<MapNode>> lists = navigateMapData.getJsonOriginData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null);//è·å宿´å°å¾(å
æ¬å
¥åºåºåº) |
| | | |
| | | //åå
¥æ°æ®åº |
| | | basMap.setData(JSON.toJSONString(lists)); |
| | | basMap.setCreateTime(new Date()); |
| | | basMap.setUpdateTime(new Date()); |
| | | if (!basMapService.updateById(basMap)) { |
| | | log.info("å°å¾æ°æ®åå¨å¤±è´¥"); |
| | | } |
| | | |
| | | //å°æ°æ®åºå°å¾æ°æ®åå
¥redis |
| | | redisUtil.set(RedisKeyType.MAP.key + lev, lists); |
| | | } |
| | | |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å
¥åº ===>> ååç©¿æ¢è½¦å
¥åºä½ä¸ä¸å |
| | | */ |
| | | public synchronized void shuttleInExecute() { |
| | | try { |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .in("wrk_sts" |
| | | , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts |
| | | ) |
| | | .orderBy("io_pri", false) |
| | | .orderBy("appe_time", true) |
| | | ); |
| | | for (WrkMast wrkMast : wrkMasts) { |
| | | boolean step1 = this.shuttleInExecuteStep1(wrkMast);//å°è½¦æ¬å
¥åºä¸ |
| | | Thread.sleep(100); |
| | | if (!step1) { |
| | | continue; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å
¥åº-å°è½¦æ¬å
¥åºä¸ |
| | | * å¦éä¸»æ¹æ³æ§è¡continueï¼è¯·è¿åfalse |
| | | * ps:è¿åå¼trueå¹¶ä¸ä»£è¡¨è¯¥æ¹æ³æ§è¡æåï¼è¿åå¼ä»
åæ è®°ç¨äºä¸»æ¹æ³æ¯å¦æ§è¡continue |
| | | */ |
| | | public synchronized boolean shuttleInExecuteStep1(WrkMast wrkMast) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts) { |
| | | //è·åç®æ ç« |
| | | LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); |
| | | if (liftSta == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ç¼ºå°ç«ç¹ä¿¡æ¯ï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | if (wrkMast.getShuttleNo() == null) {//没æç»å®å°è½¦ï¼è¿è¡è°åº¦ |
| | | boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftSta.getLocNo());//è°åº¦å°è½¦å°è´§ç©æå¨è¾éç«ç¹è¿è¡åè´§ |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼è°åº¦å°è½¦{}ç³»ç»çå¾
ä¸", wrkMast.getWrkNo(), result ? "æå" : "失败"); |
| | | return false; |
| | | } |
| | | |
| | | //è·åååç©¿æ¢è½¦çº¿ç¨ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | if (!shuttleThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦å¿ç¢ä¸", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | //夿å°è½¦æ¯å¦åå¨ç§»å¨ä»»å¡ |
| | | WrkMast hasMoveWorking = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo()); |
| | | if (hasMoveWorking != null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}å·å°è½¦ï¼åå¨ç§»å¨ä»»å¡ï¼ç¦æ¢æ´¾åä»»å¡", wrkMast.getShuttleNo()); |
| | | return false;//åå¨ç§»å¨ä»»å¡ï¼ç¦æ¢æ§è¡å
¥åºä»»å¡ |
| | | } |
| | | |
| | | //夿å°è½¦æ¯å¦å°è¾¾è¾éç«ç¹åºä½ |
| | | if (!shuttleProtocol.getCurrentLocNo().equals(liftSta.getLocNo())) { |
| | | //å°è½¦ä¸å¨è¾éç«ç¹ä½ç½® |
| | | shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), liftSta.getLocNo(), wrkMast.getShuttleNo());//è°åº¦å°è½¦å°è´§ç©æå¨è¾éç«ç¹è¿è¡åè´§ |
| | | News.info("{}ä»»å¡ï¼{}å°è½¦ï¼æªå°è¾¾è¾éç«ç¹ï¼ç³»ç»çå¾
ä¸", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | //æ£æµéç¢ç©è½¦ |
| | | int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{ |
| | | add(shuttleProtocol.getShuttleNo()); |
| | | }}, new ArrayList<>()); |
| | | if (checkObstacle > 0) { |
| | | News.info("{}ä»»å¡ï¼é¿éèå´æå°è½¦ï¼çå¾
éç¢å°è½¦è°ç¦»ä¸", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // ååç©¿æ¢è½¦ç¼å· |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//å°è½¦ç§»åºä»»å¡ |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//ä»»å¡å· |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//æºåºä½ |
| | | assignCommand.setLocNo(wrkMast.getLocNo());//ç®æ åºä½ |
| | | assignCommand.setAuto(true);//èªå¨æ¨¡å¼ |
| | | |
| | | //è·åå°è½¦å°ç®æ åºä½å½ä»¤ |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(liftSta.getLocNo(), wrkMast.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼è·¯å¾è®¡ç®å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true); |
| | | if (liftCommand == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦è·åé¡¶åå½ä»¤å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false); |
| | | if (liftCommand2 == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦è·åä¸éå½ä»¤å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | commands.add(0, liftCommand.get(0)); |
| | | commands.add(liftCommand2.get(0)); |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.INBOUND_SHUTTLE_RUN.sts);//å°è½¦æ¬è¿ä¸ 4.æåæºæ¬è¿å®æ ==> 5.å°è½¦æ¬è¿ä¸ |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | //触åéç¥ |
| | | notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT); |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * åºåº ===>> ååç©¿æ¢è½¦åºåºä½ä¸ä¸å |
| | | */ |
| | | public synchronized void shuttleOutExecute() { |
| | | try { |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .in("wrk_sts" |
| | | , WrkStsType.NEW_OUTBOUND.sts |
| | | ) |
| | | .orderBy("io_pri", false) |
| | | .orderBy("appe_time", true) |
| | | ); |
| | | for (WrkMast wrkMast : wrkMasts) { |
| | | boolean step1 = this.shuttleOutExecuteStep1(wrkMast);//å°è½¦æ¬åºåºä¸ |
| | | Thread.sleep(100); |
| | | if (!step1) { |
| | | continue; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * åºåº-å°è½¦æ¬åºåºä¸ |
| | | * å¦éä¸»æ¹æ³æ§è¡continueï¼è¯·è¿åfalse |
| | | * ps:è¿åå¼trueå¹¶ä¸ä»£è¡¨è¯¥æ¹æ³æ§è¡æåï¼è¿åå¼ä»
åæ è®°ç¨äºä¸»æ¹æ³æ¯å¦æ§è¡continue |
| | | */ |
| | | public synchronized boolean shuttleOutExecuteStep1(WrkMast wrkMast) { |
| | | //101.çæåºåºä»»å¡ => 102.å°è½¦æ¬è¿ä¸ |
| | | if (wrkMast.getWrkSts() == WrkStsType.NEW_OUTBOUND.sts) { |
| | | Integer liftNo = wrkMast.getLiftNo(); |
| | | if (liftNo == null) { |
| | | //éè¿è¾é线ç«å·è·åæåæºå· |
| | | liftNo = LiftUtils.getConveyorBindLiftNo(wrkMast.getStaNo()); |
| | | if (liftNo == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æªæ¾å°å¹é
çæåæº", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo); |
| | | if (liftThread == null) { |
| | | return false; |
| | | } |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | //夿æåæºæ¯å¦å¤äºåºåºæ¨¡å¼ |
| | | if (!liftProtocol.getIOModeType().equals(LiftIoModeType.OUT)) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æåæºä¸å¤äºåºåºæ¨¡å¼ï¼ç¦æ¢åºåº", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //è·åæºç« |
| | | LiftStaProtocol liftSta = LiftUtils.getLiftStaByLev(liftNo, Utils.getLev(wrkMast.getSourceLocNo())); |
| | | if (liftSta == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ç¼ºå°ç«ç¹ä¿¡æ¯ï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | if (liftSta.getHasCar()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}ç«ç¹åå¨å°è½¦ï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo(), liftSta.getSiteId()); |
| | | return false; |
| | | } |
| | | |
| | | if (liftSta.getHasTray()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}ç«ç¹ææçï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo(), liftSta.getSiteId()); |
| | | return false; |
| | | } |
| | | |
| | | List<WrkMast> shuttleMoveList = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .eq("io_type", 200) |
| | | ); |
| | | for (WrkMast moveWrkMast : shuttleMoveList) { |
| | | if(Utils.getLev(moveWrkMast.getLocNo()) != Utils.getLev(wrkMast.getSourceLocNo())) { |
| | | continue; |
| | | } |
| | | |
| | | if(Utils.getLev(moveWrkMast.getLocNo()) == Utils.getLev(moveWrkMast.getSourceLocNo())) { |
| | | continue; |
| | | } |
| | | |
| | | //å卿¢å±ä»»å¡ï¼åºåºä»»å¡ææ¶ä¸æ§è¡ |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼å卿¢å±ä»»å¡ï¼åºåºä»»å¡çå¾
ä¸", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), liftSta.getLocNo()); |
| | | if(!checkLocPathIsAvailable) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æªè®¡ç®å°å¯æ§è¡è·¯å¾ï¼çå¾
ä¸", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | if (wrkMast.getShuttleNo() == null) {//没æç»å®å°è½¦ï¼è¿è¡è°åº¦ |
| | | //强å¶é¢çä¸å°å°è½¦ç»å
¥åºä»»å¡ |
| | | int lev = Utils.getLev(wrkMast.getSourceLocNo()); |
| | | //è·åå½åæ¥¼å±æå å°å¯ç¨å°è½¦ |
| | | int shuttleCount = shuttleDispatchUtils.getShuttleEnableUseCountByLev(lev); |
| | | if (shuttleCount >= 2) {//åªæå¯ç¨å°è½¦æ°é大äº2ï¼æè¿è¡å
¥åºä»»å¡é¢çå°è½¦ |
| | | int shuttleWrkInObligateCount = 1;//é¢çå°è½¦æ°é |
| | | Config config = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleWrkInObligateCount").eq("status", 1)); |
| | | if (config != null) { |
| | | shuttleWrkInObligateCount = Integer.parseInt(config.getValue()); |
| | | } |
| | | //å¯ç¨åºåºå°è½¦æ°é(ç»å
¥åºä»»å¡é¢çä¸å°è½¦) |
| | | int useShuttleCount = shuttleCount - shuttleWrkInObligateCount; |
| | | //æ¥è¯¢æ¥¼å±å·²åé
车è¾çåºåºä»»å¡æ°é |
| | | List<WrkMast> wrkMasts = wrkMastService.selectShuttleOutWrkByLev(lev); |
| | | if (wrkMasts.size() >= useShuttleCount) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼å½å楼å±å¯ç¨å°è½¦{}å°ï¼åºåºä»»å¡å·²åé
{}å°ï¼ç³»ç»çå¾
ä¸ã", wrkMast.getWrkNo(), useShuttleCount, wrkMasts.size()); |
| | | return false; |
| | | } |
| | | } |
| | | boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//è°åº¦å°è½¦å°è´§ç©æå¨åºä½è¿è¡åè´§ |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼è°åº¦å°è½¦{}ç³»ç»çå¾
ä¸ã", wrkMast.getWrkNo(), result ? "æå" : "失败"); |
| | | return false; |
| | | } |
| | | |
| | | //è·åååç©¿æ¢è½¦çº¿ç¨ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | if (!shuttleThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼å¿ç¢ä¸", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | //夿å°è½¦æ¯å¦å°è¾¾è´§ç©åºä½ |
| | | if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { |
| | | //æ£æµéç¢ç©è½¦ |
| | | int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getSourceLocNo(), new ArrayList<Integer>() {{ |
| | | add(shuttleProtocol.getShuttleNo()); |
| | | }}, new ArrayList<>()); |
| | | if (checkObstacle > 0) { |
| | | News.info("{}ä»»å¡ï¼é¿éèå´æå°è½¦ï¼çå¾
éç¢å°è½¦è°ç¦»ä¸", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦ä¸å¨è¾éç«ç¹ä½ç½® |
| | | shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//è°åº¦å°è½¦å°è´§ç©æå¨åºä½è¿è¡åè´§ |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼æªå°è¾¾è¾éç«ç¹ï¼ç³»ç»çå¾
ä¸", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | //æ£æµæ¯å¦åå¨ç§»å¨ä»»å¡ |
| | | WrkMast moveWorking = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo()); |
| | | if (moveWorking != null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼å°è½¦åå¨ç§»å¨ä»»å¡", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // ååç©¿æ¢è½¦ç¼å· |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//å°è½¦ç§»åºä»»å¡ |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//ä»»å¡å· |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//æºåºä½ |
| | | assignCommand.setLocNo(liftSta.getLocNo());//ç®æ åºä½ |
| | | assignCommand.setAuto(true);//èªå¨æ¨¡å¼ |
| | | |
| | | //è·åå°è½¦å°è¾éç«ç¹è¡èµ°å½ä»¤ |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), liftSta.getLocNo(), NavigationMapType.getDfxWithDevice(), assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼è·¯å¾è®¡ç®å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true); |
| | | if (liftCommand == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦è·åé¡¶åå½ä»¤å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false); |
| | | if (liftCommand2 == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦è·åä¸éå½ä»¤å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | commands.add(0, liftCommand.get(0)); |
| | | commands.add(liftCommand2.get(0)); |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.OUTBOUND_SHUTTLE_RUN.sts);//å°è½¦æ¬è¿ä¸ 101.çæåºåºä»»å¡ ==> 102.å°è½¦æ¬è¿ä¸ |
| | | wrkMast.setSourceStaNo(liftSta.getSiteId()); |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | //触åéç¥ |
| | | notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_TRANSPORT); |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * æ§è¡ç§»åºä»»å¡ |
| | | */ |
| | | public synchronized void shuttleLocMoveExecute() { |
| | | try { |
| | | //æ¥è¯¢ç§»åºä»»å¡ |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .in("wrk_sts", WrkStsType.NEW_LOC_MOVE.sts) |
| | | .orderBy("io_pri", false) |
| | | .orderBy("appe_time", true) |
| | | ); |
| | | for (WrkMast wrkMast : wrkMasts) { |
| | | boolean stepToTarget = this.shuttleLocMoveExecuteToTarget(wrkMast);//ç§»åºä»»å¡-å°è½¦å»ç®æ ç¹ |
| | | if (!stepToTarget) { |
| | | continue; |
| | | } |
| | | |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * ç§»åºä»»å¡-å°è½¦å»ç®æ ç¹ |
| | | * å¦éä¸»æ¹æ³æ§è¡continueï¼è¯·è¿åfalse |
| | | * ps:è¿åå¼trueå¹¶ä¸ä»£è¡¨è¯¥æ¹æ³æ§è¡æåï¼è¿åå¼ä»
åæ è®°ç¨äºä¸»æ¹æ³æ¯å¦æ§è¡continue |
| | | */ |
| | | private boolean shuttleLocMoveExecuteToTarget(WrkMast wrkMast) { |
| | | //--------------------------------------å°è½¦ç§»å¨è³ç«ç¹-----------------------------------------// |
| | | Date now = new Date(); |
| | | |
| | | //å°è½¦ç§»å¨è³ç«ç¹ 501.çæç§»åºä»»å¡ ==> 502.å°è½¦æ¬è¿ä¸ |
| | | if (wrkMast.getWrkSts() == WrkStsType.NEW_LOC_MOVE.sts) { |
| | | boolean checkLocPathIsAvailable = navigateUtils.checkLocPathIsAvailable(wrkMast.getSourceLocNo(), wrkMast.getLocNo()); |
| | | if(!checkLocPathIsAvailable) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æªè®¡ç®å°å¯æ§è¡è·¯å¾ï¼çå¾
ä¸", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | if (wrkMast.getShuttleNo() == null) {//没æç»å®å°è½¦ï¼è¿è¡è°åº¦ |
| | | boolean result = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo());//è°åº¦å°è½¦å°è´§ç©ç¹è¿è¡åè´§ |
| | | News.info("{}ä»»å¡ï¼è°åº¦å°è½¦{}ç³»ç»çå¾
ä¸", wrkMast.getWrkNo(), result ? "æå" : "失败"); |
| | | return false; |
| | | } |
| | | |
| | | //è·åååç©¿æ¢è½¦çº¿ç¨ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (shuttleProtocol.getCurrentLocNo() == null) { |
| | | return false; |
| | | } |
| | | |
| | | //夿å°è½¦æ¯å¦å°è¾¾è´§ç©åºä½ |
| | | if (!shuttleProtocol.getCurrentLocNo().equals(wrkMast.getSourceLocNo())) { |
| | | //ä»»å¡è¢«é¿éåæ¶ |
| | | Object cancelLock = redisUtil.get(RedisKeyType.TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK_LOCK.key + wrkMast.getShuttleNo()); |
| | | if(cancelLock != null) { |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦æªå°è¾¾åè´§ä½ç½® |
| | | shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getSourceLocNo(), wrkMast.getShuttleNo());//è°åº¦å°è½¦å°è´§ç©æå¨åºä½è¿è¡åè´§ |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼å°è½¦æªå°è¾¾åè´§ä½ç½®", wrkMast.getWrkNo(), wrkMast.getSourceLocNo()); |
| | | return false; |
| | | } |
| | | |
| | | //æ£æµæ¯å¦åå¨ç§»å¨ä»»å¡ |
| | | WrkMast moveWorking = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo()); |
| | | if (moveWorking != null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼å°è½¦åå¨ç§»å¨ä»»å¡", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //æ£æµéç¢ç©è½¦ |
| | | int checkObstacle = shuttleOperaUtils.checkObstacle(wrkMast.getLocNo(), new ArrayList<Integer>() {{ |
| | | add(shuttleProtocol.getShuttleNo()); |
| | | }}, new ArrayList<>()); |
| | | if (checkObstacle > 0) { |
| | | News.info("{}ä»»å¡ï¼é¿éèå´æå°è½¦ï¼çå¾
éç¢å°è½¦è°ç¦»ä¸", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // ååç©¿æ¢è½¦ç¼å· |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.TRANSPORT.id);//å°è½¦ç§»åºä»»å¡ |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//ä»»å¡å· |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//æºåºä½ |
| | | assignCommand.setLocNo(wrkMast.getLocNo());//ç®æ åºä½ |
| | | assignCommand.setAuto(true);//èªå¨æ¨¡å¼ |
| | | |
| | | //è·åå°è½¦å°è¾éç«ç¹è¡èµ°å½ä»¤ |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(wrkMast.getSourceLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.DFX), assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼è·¯å¾è®¡ç®å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | List<ShuttleCommand> liftCommand = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, true); |
| | | if (liftCommand == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦è·åé¡¶åå½ä»¤å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | List<ShuttleCommand> liftCommand2 = shuttleOperaUtils.getShuttleLiftCommand(assignCommand, shuttleThread, false); |
| | | if (liftCommand2 == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦è·åä¸éå½ä»¤å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | commands.add(0, liftCommand.get(0)); |
| | | commands.add(liftCommand2.get(0)); |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.LOC_MOVE_SHUTTLE_RUN.sts);//å°è½¦æ¬è¿ä¸ 501.çæç§»åºä»»å¡ ==> 502.å°è½¦æ¬è¿ä¸ |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | //触åéç¥ |
| | | notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING); |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * æåæºä»»å¡ |
| | | */ |
| | | public synchronized void liftIoExecute() { |
| | | try { |
| | | //æç´¢æ¯å¦æå¾
å¤ççä»»å¡ |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .in("wrk_sts", WrkStsType.NEW_INBOUND.sts, WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts)); |
| | | if (wrkMasts.isEmpty()) { |
| | | return; |
| | | } |
| | | |
| | | for (WrkMast wrkMast : wrkMasts) { |
| | | boolean stepIn = this.liftIoExecuteStepIn(wrkMast);//æåæºå
¥åº |
| | | if (!stepIn) { |
| | | continue; |
| | | } |
| | | |
| | | boolean stepOut = this.liftIoExecuteStepOut(wrkMast);//æåæºåºåº |
| | | if (!stepOut) { |
| | | continue; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æåæºå
¥åº |
| | | * å¦éä¸»æ¹æ³æ§è¡continueï¼è¯·è¿åfalse |
| | | * ps:è¿åå¼trueå¹¶ä¸ä»£è¡¨è¯¥æ¹æ³æ§è¡æåï¼è¿åå¼ä»
åæ è®°ç¨äºä¸»æ¹æ³æ¯å¦æ§è¡continue |
| | | */ |
| | | private boolean liftIoExecuteStepIn(WrkMast wrkMast) { |
| | | //--------------------------------------æåæºå
¥åº-----------------------------------------// |
| | | Date now = new Date(); |
| | | |
| | | //1.çæå
¥åºä»»å¡ ==> 3.æåæºæ¬è¿ä¸ |
| | | if (wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) { |
| | | //è·åæºè¾éç« |
| | | LiftStaProtocol sourceLiftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); |
| | | if (sourceLiftSta == null) { |
| | | return false;//æ¾ä¸å°ç«ç¹ |
| | | } |
| | | |
| | | if (!sourceLiftSta.getHasTray()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æºç«æ æç", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //è·åç®æ è¾éç« |
| | | LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); |
| | | if (liftSta == null) { |
| | | return false;//æ¾ä¸å°ç«ç¹ |
| | | } |
| | | |
| | | if (liftSta.getHasTray()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ç®æ ç«å卿ç", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //æ£æµæ¥¼å±æ¯å¦æå¯ç¨ç©¿æ¢è½¦ |
| | | boolean checkLevHasShuttle = Utils.checkLevHasShuttle(liftSta.getLev()); |
| | | if (!checkLevHasShuttle) { |
| | | if (wrkMast.getShuttleNo() != null) { |
| | | return false; |
| | | } |
| | | |
| | | String targetLocNo = navigateUtils.calcEndLocation(wrkMast.getLocNo(), liftSta.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 2); |
| | | if (targetLocNo == null) {//åºè¾é线ç«ç¹è®¡ç®å¤±è´¥ |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼è°åº¦å°è½¦å»å
¥åºå±è¿ç¹è®¡ç®å¤±è´¥", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //è°åº¦å°è½¦å»å¾
æºä½ |
| | | boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), targetLocNo); |
| | | if (!dispatchShuttle) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼è°åº¦å°è½¦å»å
¥åºå±å¤±è´¥", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | Integer liftNo = wrkMast.getLiftNo(); |
| | | if (liftNo == null) { |
| | | //æªåé
æåæº |
| | | Integer staNo = wrkMast.getSourceStaNo(); |
| | | liftNo = LiftUtils.getConveyorBindLiftNo(staNo); |
| | | if(liftNo == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æªæ¾å°å¹é
çæåæº", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //ç³è¯·æåæºèµæº |
| | | boolean applyLift = liftAction.applyLift(liftNo, wrkMast.getWrkNo()); |
| | | if(!applyLift) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ç³è¯·æåæºèµæºå¤±è´¥ï¼ç¦æ¢å
¥åº", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo); |
| | | if (liftThread == null) { |
| | | return false; |
| | | } |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null) { |
| | | return false; |
| | | } |
| | | if (!liftThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å·æåæºï¼å¿ç¢ä¸", wrkMast.getWrkNo(), liftSta.getLiftNo()); |
| | | return false; |
| | | } |
| | | |
| | | //夿æåæºæ¯å¦å¤äºå
¥åºæ¨¡å¼ |
| | | if (!liftProtocol.getIOModeType().equals(LiftIoModeType.IN)) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æåæºä¸å¤äºå
¥åºæ¨¡å¼ï¼ç¦æ¢å
¥åº", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //请æ±ä¸çº§ç³»ç»ï¼æ¯å¦å
许å
¥åº |
| | | boolean inMission = LiftUtils.queryInMission(wrkMast.getSourceStaNo(), liftSta.getLiftNo(), wrkMast.getWmsWrkNo()); |
| | | if (!inMission) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ä¸çº§ç³»ç»ä¸å
许å
¥åº", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //è·åæåæºå½ä»¤ |
| | | LiftCommand liftCommand = liftThread.getPickAndPutCommand(wrkMast.getWrkNo(), wrkMast.getSourceStaNo(), liftSta.getSiteId()); |
| | | ArrayList<LiftCommand> commands = new ArrayList<>(); |
| | | commands.add(liftCommand); |
| | | |
| | | //æäº¤å°çº¿ç¨å»å·¥ä½ |
| | | LiftAssignCommand assignCommand = new LiftAssignCommand(); |
| | | assignCommand.setCommands(commands); |
| | | assignCommand.setLiftNo(liftNo); |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo()); |
| | | assignCommand.setTaskMode(LiftTaskModeType.PICK_PUT.id); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN.sts);//æåæºæ¬è¿ä¸ 1.çæå
¥åºä»»å¡ ==> 3.æåæºæ¬è¿ä¸ |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | liftAction.assignWork(wrkMast.getLiftNo(), assignCommand); |
| | | } |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * æåæºåºåº |
| | | * å¦éä¸»æ¹æ³æ§è¡continueï¼è¯·è¿åfalse |
| | | * ps:è¿åå¼trueå¹¶ä¸ä»£è¡¨è¯¥æ¹æ³æ§è¡æåï¼è¿åå¼ä»
åæ è®°ç¨äºä¸»æ¹æ³æ¯å¦æ§è¡continue |
| | | */ |
| | | private boolean liftIoExecuteStepOut(WrkMast wrkMast) { |
| | | //--------------------------------------æåæºåºåº-----------------------------------------// |
| | | //103.å°è½¦æ¬è¿å®æ ==> 104.æåæºæ¬è¿ä¸ |
| | | if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts) { |
| | | //è·åæºç« |
| | | LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); |
| | | if (liftSta == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æ¾ä¸å°ç«ç¹ï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo()); |
| | | return false;//æ¾ä¸å°ç«ç¹ |
| | | } |
| | | |
| | | if(wrkMast.getShuttleNo() != null) { |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if(shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (shuttleProtocol.getCurrentLocNo().equals(liftSta.getLocNo())) { |
| | | //å°è½¦è¿å¨è¾éç«ç¹ |
| | | //å°è½¦åºæåæºè¿ç¹è·ç¦» |
| | | int shuttleOutLiftLocationDistance = 2; |
| | | Config shuttleOutLiftLocationDistanceConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleOutLiftLocationDistance")); |
| | | if (shuttleOutLiftLocationDistanceConfig != null) { |
| | | shuttleOutLiftLocationDistance = Integer.parseInt(shuttleOutLiftLocationDistanceConfig.getValue()); |
| | | } |
| | | |
| | | String targetLocNo = navigateUtils.calcFirstLocation(shuttleProtocol.getCurrentLocNo(), wrkMast.getSourceLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, shuttleOutLiftLocationDistance); |
| | | if (targetLocNo == null) {//åºè¾é线ç«ç¹è®¡ç®å¤±è´¥ |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼åºè¾é线ç«ç¹è®¡ç®å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | //è°åº¦å°è½¦å»å¾
æºä½ |
| | | boolean dispatchShuttle = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), targetLocNo, wrkMast.getShuttleNo()); |
| | | if (!dispatchShuttle) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼å°è½¦å¨è¾éç«ç¹è°åº¦å°è½¦é¿è®©å¤±è´¥", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | } else { |
| | | //å°è½¦å·²ä¸å¨è¾éç«ç¹ä½ç½®ï¼éæ¾å°è½¦ |
| | | wrkMast.setShuttleNo(null);//éæ¾å°è½¦ |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMastService.updateById(wrkMast); |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | if (!liftSta.getHasTray()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}ç«ç¹æ æçï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo(), liftSta.getSiteId()); |
| | | return false; |
| | | } |
| | | |
| | | Integer liftNo = wrkMast.getLiftNo(); |
| | | if (liftNo == null) { |
| | | //æªåé
æåæº |
| | | Integer staNo = wrkMast.getStaNo(); |
| | | liftNo = LiftUtils.getConveyorBindLiftNo(staNo); |
| | | if(liftNo == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æªæ¾å°å¹é
çæåæº", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | //ç³è¯·æåæºèµæº |
| | | boolean applyLift = liftAction.applyLift(liftSta.getLiftNo(), wrkMast.getWrkNo()); |
| | | if(!applyLift) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ç³è¯·æåæºèµæºå¤±è´¥ï¼ç¦æ¢æ§è¡åºåº", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo); |
| | | if (liftThread == null) { |
| | | return false; |
| | | } |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null) { |
| | | return false; |
| | | } |
| | | if (!liftThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å·æåæºï¼å¿ç¢ä¸", wrkMast.getWrkNo(), liftSta.getLiftNo()); |
| | | return false; |
| | | } |
| | | |
| | | //夿æåæºæ¯å¦å¤äºåºåºæ¨¡å¼ |
| | | if (!liftProtocol.getIOModeType().equals(LiftIoModeType.OUT)) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æåæºä¸å¤äºåºåºæ¨¡å¼ï¼ç¦æ¢åºåº", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //请æ±ä¸çº§ç³»ç»ï¼æ¯å¦å
许åºåº |
| | | boolean outMission = LiftUtils.queryOutMission(wrkMast.getStaNo()); |
| | | if (!outMission) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ä¸çº§ç³»ç»ä¸å
许åºåº", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //è·åæåæºå½ä»¤ |
| | | LiftCommand liftCommand = liftThread.getPickAndPutCommand(wrkMast.getWrkNo(), liftSta.getSiteId(), wrkMast.getStaNo()); |
| | | ArrayList<LiftCommand> commands = new ArrayList<>(); |
| | | commands.add(liftCommand); |
| | | |
| | | //æäº¤å°çº¿ç¨å»å·¥ä½ |
| | | LiftAssignCommand assignCommand = new LiftAssignCommand(); |
| | | assignCommand.setCommands(commands); |
| | | assignCommand.setLiftNo(liftNo); |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo()); |
| | | assignCommand.setTaskMode(LiftTaskModeType.PICK_PUT.id); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.OUTBOUND_LIFT_RUN.sts);//æåæºæ¬è¿ä¸ 103.çæå
¥åºä»»å¡ ==> 104.æåæºæ¬è¿ä¸ |
| | | wrkMast.setShuttleNo(null);//éæ¾å°è½¦ |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | wrkMast.setModiTime(new Date()); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | liftAction.assignWork(wrkMast.getLiftNo(), assignCommand); |
| | | } |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * æåæºä»»å¡å®æ |
| | | */ |
| | | public synchronized void liftFinished() { |
| | | try { |
| | | List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Lift))); |
| | | for (DeviceConfig device : liftList) { |
| | | //è·åæåæºä¿¡æ¯ |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo()); |
| | | if(liftThread == null) { |
| | | continue; |
| | | } |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (!liftThread.isDeviceIdle()) { |
| | | continue; |
| | | } |
| | | |
| | | //æåæºä¸ºçå¾
确认ä¸ç©ºé² |
| | | if (liftProtocol.getProtocolStatus() == LiftProtocolStatusType.WAITING.id |
| | | && liftProtocol.getTaskNo() != 0 |
| | | ) { |
| | | //å°ä»»å¡æ¡£æ è®°ä¸ºå®æ |
| | | WrkMast wrkMast = wrkMastService.selectByWorkNo(liftProtocol.getTaskNo()); |
| | | if (wrkMast != null) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.INBOUND_LIFT_RUN.sts) { |
| | | //3.æåæºæ¬è¿ä¸ ==> 4.æåæºæ¬è¿å®æ |
| | | wrkMast.setWrkSts(WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts); |
| | | wrkMast.setLiftNo(null);//éæ¾æåæº |
| | | }else if (wrkMast.getWrkSts() == WrkStsType.MOVE_NEARBY_COMPLETE.sts) { |
| | | //303.å°è½¦ç§»å¨è³è¿ç¹å®æ -- è°åº¦æåæºå°å°è½¦å± |
| | | } else if (wrkMast.getWrkSts() == WrkStsType.OUTBOUND_LIFT_RUN.sts) { |
| | | //304.æåæºæ¬è¿ä¸ ==> 109.åºåºå®æ |
| | | wrkMast.setWrkSts(WrkStsType.COMPLETE_OUTBOUND.sts); |
| | | wrkMast.setLiftNo(null);//éæ¾æåæº |
| | | } else if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN.sts) { |
| | | //306.æåæºæ¬è¿ä¸ ==> 307.æåæºæ¬è¿å®æ |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts); |
| | | } else { |
| | | News.error("æåæºç¡®è®¤å¤±è´¥ï¼æåæºå·={}ï¼å·¥ä½å·={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); |
| | | return; |
| | | } |
| | | |
| | | wrkMast.setModiTime(new Date()); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | liftThread.reset(); |
| | | News.info("æåæºå·²ç¡®è®¤ä¸ä»»å¡å®æç¶æãæåæºå·={}", liftProtocol.getLiftNo()); |
| | | } else { |
| | | News.error("æåæºå·²ç¡®è®¤ä¸ä»»å¡å®æç¶æ,å¤ä½å¤±è´¥ï¼ä½æªæ¾å°å·¥ä½æ¡£ãæåæºå·={}ï¼å·¥ä½å·={}", liftProtocol.getLiftNo(), liftProtocol.getTaskNo()); |
| | | } |
| | | }else { |
| | | boolean checkPreviewDispatchLift = commonService.checkWorkNoContainMk(liftProtocol.getTaskNo(), WrkIoType.PREVIEW_LIFT_MOVE.id); |
| | | if (checkPreviewDispatchLift) { |
| | | //å±äºæåæºé¢è°åº¦ç§»å¨ä»»å¡ |
| | | //æ 工使¡£æ¯æï¼ç´æ¥ç¡®è®¤å®æ |
| | | liftThread.setSyncTaskNo(0); |
| | | liftThread.reset(); |
| | | News.info("已确认æåæºé¢è°åº¦ç§»å¨ä»»å¡ãæåæºå·={}", liftProtocol.getLiftNo()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å¼å¸¸ä¿¡æ¯è®°å½ |
| | | */ |
| | | public void recErr() { |
| | | try { |
| | | this.recShuttleErr(); |
| | | this.recLiftErr(); |
| | | } catch (Exception e) { |
| | | News.error("recErr fail", e); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * ååç©¿æ¢è½¦å¼å¸¸ä¿¡æ¯è®°å½ |
| | | */ |
| | | private void recShuttleErr() { |
| | | Date now = new Date(); |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig device : shuttleList) { |
| | | // è·åååç©¿æ¢è½¦ä¿¡æ¯ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); |
| | | if (shuttleThread == null) { |
| | | continue; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (shuttleProtocol.getTaskNo() != 0) { |
| | | //æä»»å¡ |
| | | BasShuttleErrLog latest = basShuttleErrLogService.findLatestByTaskNo(device.getDeviceNo(), shuttleProtocol.getTaskNo()); |
| | | // æå¼å¸¸ |
| | | if (latest == null) { |
| | | if (shuttleProtocol.getErrorCode() != null && Integer.parseInt(shuttleProtocol.getErrorCode()) != 0) { |
| | | WrkMast wrkMast = wrkMastService.selectByWorkNo(shuttleProtocol.getTaskNo()); |
| | | if (wrkMast == null) { |
| | | continue; |
| | | } |
| | | int errorCode = Integer.parseInt(shuttleProtocol.getErrorCode()); |
| | | BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(errorCode); |
| | | String errName = basShuttleErr==null? "æªç¥å¼å¸¸":basShuttleErr.getErrName(); |
| | | BasShuttleErrLog basShuttleErrLog = new BasShuttleErrLog( |
| | | null, // ç¼å· |
| | | wrkMast.getWrkNo(), // å·¥ä½å· |
| | | now, // åçæ¶é´ |
| | | null, // ç»ææ¶é´ |
| | | wrkMast.getWrkSts(), // å·¥ä½ç¶æ |
| | | wrkMast.getIoType(), // å
¥åºåºç±»å |
| | | device.getDeviceNo(), // ååç©¿æ¢è½¦ |
| | | null, // plc |
| | | wrkMast.getLocNo(), // ç®æ åºä½ |
| | | wrkMast.getStaNo(), // ç®æ ç« |
| | | wrkMast.getSourceStaNo(), // æºç« |
| | | wrkMast.getSourceLocNo(), // æºåºä½ |
| | | wrkMast.getBarcode(), // æ¡ç |
| | | errorCode, // å¼å¸¸ç |
| | | errName, // å¼å¸¸ |
| | | 1, // å¼å¸¸æ
åµ |
| | | now, // æ·»å æ¶é´ |
| | | null, // æ·»å 人å |
| | | now, // ä¿®æ¹æ¶é´ |
| | | null, // ä¿®æ¹äººå |
| | | "ä»»å¡ä¸å¼å¸¸", // 夿³¨ |
| | | JSON.toJSONString(shuttleProtocol) // ç³»ç»ç¶ææ°æ® |
| | | ); |
| | | if (!basShuttleErrLogService.insert(basShuttleErrLog)) { |
| | | News.error("ååç©¿æ¢è½¦plcå¼å¸¸è®°å½å¤±è´¥ ===>> [id:{}] [error:{}]", device.getDeviceNo(), errName); |
| | | } |
| | | } |
| | | } else { |
| | | // å¼å¸¸ä¿®å¤ |
| | | if (shuttleProtocol.getErrorCode() == null || Integer.parseInt(shuttleProtocol.getErrorCode()) == 0) { |
| | | latest.setEndTime(now); |
| | | latest.setUpdateTime(now); |
| | | latest.setStatus(2); |
| | | if (!basShuttleErrLogService.updateById(latest)) { |
| | | News.error("ååç©¿æ¢è½¦plcå¼å¸¸è®°å½ä¿®å¤å¤±è´¥ ===>> [id:{}] [errLogId:{}]", device.getDeviceNo(), latest.getId()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æåæºå¼å¸¸ä¿¡æ¯è®°å½ |
| | | */ |
| | | private void recLiftErr() { |
| | | Date now = new Date(); |
| | | List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Lift))); |
| | | for (DeviceConfig device : liftList) { |
| | | // è·åæåæºä¿¡æ¯ |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, device.getDeviceNo()); |
| | | if (liftThread == null) { |
| | | continue; |
| | | } |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (liftProtocol.getTaskNo() != 0) { |
| | | //æä»»å¡ |
| | | BasLiftErrLog latest = basLiftErrLogService.findLatestByTaskNo(device.getDeviceNo(), liftProtocol.getTaskNo()); |
| | | // æå¼å¸¸ |
| | | if (latest == null) { |
| | | if (liftProtocol.getErrorCode() != null && liftProtocol.getErrorCode() != 0) { |
| | | WrkMast wrkMast = wrkMastService.selectByWorkNo(liftProtocol.getTaskNo()); |
| | | if (wrkMast == null) { |
| | | continue; |
| | | } |
| | | |
| | | BasLiftErr basLiftErr = basLiftErrService.queryByCode(liftProtocol.getErrorCode()); |
| | | String errName = basLiftErr==null? "æªç¥å¼å¸¸":basLiftErr.getErrName(); |
| | | |
| | | BasLiftErrLog basLiftErrLog = new BasLiftErrLog( |
| | | null, // ç¼å· |
| | | wrkMast.getWrkNo(), // å·¥ä½å· |
| | | now, // åçæ¶é´ |
| | | null, // ç»ææ¶é´ |
| | | wrkMast.getWrkSts(), // å·¥ä½ç¶æ |
| | | wrkMast.getIoType(), // å
¥åºåºç±»å |
| | | device.getDeviceNo(), // æåæº |
| | | null, // plc |
| | | wrkMast.getLocNo(), // ç®æ åºä½ |
| | | wrkMast.getStaNo(), // ç®æ ç« |
| | | wrkMast.getSourceStaNo(), // æºç« |
| | | wrkMast.getSourceLocNo(), // æºåºä½ |
| | | wrkMast.getBarcode(), // æ¡ç |
| | | null, // å¼å¸¸ç |
| | | errName, // å¼å¸¸ |
| | | 1, // å¼å¸¸æ
åµ |
| | | now, // æ·»å æ¶é´ |
| | | null, // æ·»å 人å |
| | | now, // ä¿®æ¹æ¶é´ |
| | | null, // ä¿®æ¹äººå |
| | | "ä»»å¡ä¸å¼å¸¸", // 夿³¨ |
| | | JSON.toJSONString(liftProtocol) // ç³»ç»ç¶ææ°æ® |
| | | ); |
| | | if (!basLiftErrLogService.insert(basLiftErrLog)) { |
| | | News.error("æåæºplcå¼å¸¸è®°å½å¤±è´¥ ===>> [id:{}] [error:{}]", device.getDeviceNo(), errName); |
| | | } |
| | | } |
| | | } else { |
| | | // å¼å¸¸ä¿®å¤ |
| | | if (liftProtocol.getErrorCode() == null || liftProtocol.getErrorCode() == 0) { |
| | | latest.setEndTime(now); |
| | | latest.setUpdateTime(now); |
| | | latest.setStatus(2); |
| | | if (!basLiftErrLogService.updateById(latest)) { |
| | | News.error("æåæºplcå¼å¸¸è®°å½ä¿®å¤å¤±è´¥ ===>> [id:{}] [errLogId:{}]", device.getDeviceNo(), latest.getId()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * ååç©¿æ¢è½¦çµéæ£æµ ===>> åèµ·å
çµ |
| | | */ |
| | | public synchronized void loopShuttleCharge() { |
| | | try { |
| | | |
| | | List<BasShuttleCharge> charges = basShuttleChargeService.selectList(new EntityWrapper<BasShuttleCharge>().orderBy("charge_id", true)); |
| | | if (charges.isEmpty()) { |
| | | return;//æ å
çµæ¡© |
| | | } |
| | | |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig device : shuttleList) { |
| | | //è·åååç©¿æ¢è½¦çº¿ç¨ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | continue; |
| | | } |
| | | |
| | | //夿å½åå°è½¦æ¯å¦æ»¡è¶³éè¦å
çµè¦æ± |
| | | if (shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.NONE)) { |
| | | continue;//æ éå
çµ |
| | | } |
| | | |
| | | boolean forceCharge = true; |
| | | if (shuttleThread.isRequireCharge().equals(ShuttleRequireChargeType.SUGGEST_CHARGE)) { |
| | | BasShuttle basShuttle = basShuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", device.getDeviceNo())); |
| | | if (basShuttle != null) { |
| | | Integer suggestChargeLine = basShuttle.getSuggestChargeLine(); |
| | | boolean chargeSuggestResult = Integer.parseInt(shuttleProtocol.getBatteryPower()) < suggestChargeLine; |
| | | if (chargeSuggestResult) { |
| | | //æ£æµç³»ç»æ¯å¦æä»»å¡ |
| | | List<WrkMast> wrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>().in("io_type", 1, 101, 201)); |
| | | if (wrkMasts.isEmpty()) { |
| | | forceCharge = false; |
| | | }else { |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | WrkMast wrkMast1 = wrkMastService.selectShuttleWorking(shuttleProtocol.getShuttleNo()); |
| | | if (wrkMast1 != null) { |
| | | continue; |
| | | } |
| | | |
| | | WrkMast wrkMast2 = wrkMastService.selectShuttleHasMoveWorking(shuttleProtocol.getShuttleNo()); |
| | | if (wrkMast2 != null) { |
| | | continue; |
| | | } |
| | | |
| | | WrkMast wrkMast = wrkMastService.selectChargeWorking(shuttleProtocol.getShuttleNo()); |
| | | if (wrkMast != null) {//å·²æå
çµä»»å¡ |
| | | continue; |
| | | } |
| | | |
| | | //å°è½¦æå¨æ¥¼å± |
| | | int lev = Utils.getLev(shuttleProtocol.getCurrentLocNo()); |
| | | BasShuttleCharge shuttleCharge = null; |
| | | |
| | | //æç´¢å°è½¦æå¨æ¥¼å±ææ²¡æå
çµæ¡© |
| | | for (BasShuttleCharge charge : charges) { |
| | | if (lev != Utils.getLev(charge.getLocNo())) { |
| | | continue;//å°è½¦åå
çµæ¡©ä¸å¨åä¸å± |
| | | } |
| | | |
| | | if (charge.getStatus() == 0) { |
| | | continue;//å
çµæ¡©è¢«ç¦ç¨ |
| | | } |
| | | |
| | | //å°è½¦åå
çµæ¡©å¨åä¸å± |
| | | if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) { |
| | | shuttleCharge = charge; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (shuttleCharge == null) { |
| | | //忥¼å±æ²¡ææ¾å°å
çµæ¡©ï¼æ¾å¯ç¨å
çµæ¡© |
| | | //å°è½¦åæ¥¼å±æ²¡æå
çµæ¡©ï¼åªè¦å
çµæ¡©å¯ç¨å°±çæå
çµä»»å¡ |
| | | for (BasShuttleCharge charge : charges) { |
| | | if (wrkMastService.selectChargeWorkingByChargeSta(charge.getChargeId()) == null) { |
| | | //夿å½åå
çµæ¡©æ¯å¦æå°è½¦ï¼å¦æå°è½¦ï¼ä¸åé
该å
çµæ¡© |
| | | ArrayList<String> locs = new ArrayList<>(); |
| | | locs.add(charge.getLocNo()); |
| | | Integer checkHasShuttle = Utils.checkGroupLocHasShuttle(locs); |
| | | if(checkHasShuttle != null) { |
| | | //å½åå
çµæ¡©æç©¿æ¢è½¦ï¼ä¸åé
该å
çµæ¡© |
| | | continue; |
| | | } |
| | | |
| | | if (charge.getStatus() == 0) { |
| | | continue;//å
çµæ¡©è¢«ç¦ç¨ |
| | | } |
| | | |
| | | shuttleCharge = charge; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (shuttleCharge == null) { |
| | | continue; |
| | | } |
| | | |
| | | String chargeLocNo = shuttleCharge.getLocNo(); |
| | | wrkMast = new WrkMast(); |
| | | wrkMast.setMk(String.valueOf(shuttleCharge.getChargeId())); |
| | | wrkMast.setWrkNo(commonService.getWorkNo(WrkIoType.SHUTTLE_CHARGE.id)); |
| | | wrkMast.setWrkSts(WrkStsType.NEW_CHARGE.sts); |
| | | wrkMast.setIoType(WrkIoType.SHUTTLE_CHARGE.id);//300.å
çµ |
| | | wrkMast.setIoPri((double) 999); |
| | | wrkMast.setLocNo(chargeLocNo); |
| | | wrkMast.setShuttleNo(device.getDeviceNo()); |
| | | wrkMast.setMemo(forceCharge ? "forceCharge" : "suggestCharge"); |
| | | wrkMast.setAppeTime(new Date()); |
| | | if (!wrkMastService.insert(wrkMast)) { |
| | | News.error("ä¿å{}å·ååç©¿æ¢è½¦å
çµä»»å¡å¤±è´¥!!!", device.getDeviceNo()); |
| | | continue; |
| | | } |
| | | |
| | | News.info("ä¿å{}å·ååç©¿æ¢è½¦å
çµä»»å¡æå!!!", device.getDeviceNo()); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * æ§è¡ååç©¿æ¢è½¦å
çµä»»å¡ |
| | | */ |
| | | public synchronized void executeShuttleCharge() { |
| | | try { |
| | | //æ¥è¯¢å°è½¦å
çµä»»å¡ |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig device : shuttleList) { |
| | | WrkMast wrkMast = wrkMastService.selectChargeWorking(device.getDeviceNo()); |
| | | if(wrkMast == null) { |
| | | continue; |
| | | } |
| | | |
| | | boolean result1 = this.executeShuttleChargeStepGoToChargeSta(wrkMast);//å°è½¦çå¾
å
çµæ¡© |
| | | if (!result1) { |
| | | continue; |
| | | } |
| | | |
| | | boolean result2 = this.executeShuttleChargeStepArrivalChargeSta(wrkMast);//å°è½¦å°è¾¾å
çµæ¡© |
| | | if (!result2) { |
| | | continue; |
| | | } |
| | | |
| | | boolean result3 = this.executeShuttleChargeStepStartCharge(wrkMast);//å°è½¦å¼å§å
çµ |
| | | if (!result3) { |
| | | continue; |
| | | } |
| | | |
| | | boolean result4 = this.executeShuttleChargeStepStopCharge(wrkMast);//å°è½¦åæ¢å
çµ |
| | | if (!result4) { |
| | | continue; |
| | | } |
| | | |
| | | boolean result5 = this.executeShuttleChargeStepLeaveCharge(wrkMast);//å°è½¦ç¦»å¼å
çµæ¡© |
| | | if (!result5) { |
| | | continue; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å°è½¦åå¾å
çµæ¡© |
| | | */ |
| | | private synchronized boolean executeShuttleChargeStepGoToChargeSta(WrkMast wrkMast) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.NEW_CHARGE.sts) { |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (wrkMast.getLocNo().equals(shuttleProtocol.getCurrentLocNo())) { |
| | | //å°è½¦å¨å
çµæ¡©ä½ç½® |
| | | wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts); |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMastService.updateById(wrkMast); |
| | | return false; |
| | | } |
| | | |
| | | //è°åº¦å°è½¦å»å
çµæ¡© |
| | | boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), wrkMast.getLocNo(), wrkMast.getShuttleNo()); |
| | | if (!dispatched) { |
| | | return false; |
| | | } |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN.sts);//å°è½¦åå¾å
çµæ¡© |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMastService.updateById(wrkMast); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * å°è½¦å°è¾¾å
çµæ¡© |
| | | */ |
| | | private synchronized boolean executeShuttleChargeStepArrivalChargeSta(WrkMast wrkMast) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_RUN.sts) { |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | //夿æ¯å¦å卿ªå®æçç§»å¨ä»»å¡ |
| | | WrkMast moveWrk = wrkMastService.selectShuttleHasMoveWorking(wrkMast.getShuttleNo()); |
| | | if(moveWrk != null) { |
| | | return false; |
| | | } |
| | | |
| | | if (!wrkMast.getLocNo().equals(shuttleProtocol.getCurrentLocNo())) { |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦å¨å
çµæ¡©ä½ç½® |
| | | wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts);//å°è½¦å°è¾¾å
çµæ¡© |
| | | wrkMast.setModiTime(new Date()); |
| | | wrkMastService.updateById(wrkMast); |
| | | |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | //å°è½¦å¼å§å
çµ |
| | | private synchronized boolean executeShuttleChargeStepStartCharge(WrkMast wrkMast) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_RUN_COMPLETE.sts) { |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦å·²ç»å¨å
çµæ¡©ä½ç½®ï¼ä¸åå
çµå½ä»¤ |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//ååç©¿æ¢è½¦å· |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//ä»»å¡å· |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_ON.id);//å
çµå¼ |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//æºåºä½(å°è½¦å½åä½ç½®) |
| | | |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, true); |
| | | assignCommand.setCommands(commands);//è¿è¡å½ä»¤ |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.CHARGE_SHUTTLE_START_CHARGING.sts); |
| | | wrkMast.setModiTime(new Date()); |
| | | if (!wrkMastService.updateById(wrkMast)) { |
| | | return false; |
| | | } |
| | | |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | |
| | | notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_POWER_START);//触åéç¥ |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | //å°è½¦åæ¢å
çµ |
| | | private synchronized boolean executeShuttleChargeStepStopCharge(WrkMast wrkMast) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_CHARGING.sts) { |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | boolean stopCharge = false; |
| | | if (wrkMast.getMemo().equals("suggestChargeTaskStop")) { |
| | | stopCharge = true; |
| | | }else { |
| | | if (shuttleThread.isChargingCompleted()) { |
| | | stopCharge = true; |
| | | } |
| | | } |
| | | |
| | | if (!stopCharge) { |
| | | return false; |
| | | } |
| | | |
| | | Object limitObj = redisUtil.get(RedisKeyType.TASK_RUN_LIMIT.key + wrkMast.getWrkNo()); |
| | | if (limitObj != null) { |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦å·²ç»å¨å
çµæ¡©ä½ç½®ï¼ä¸å忢å
çµå½ä»¤ |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo());//ååç©¿æ¢è½¦å· |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//ä»»å¡å· |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.CHARGE_OFF.id);//å
çµå
³ |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//æºåºä½(å°è½¦å½åä½ç½®) |
| | | |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getShuttleChargeCommand(assignCommand, shuttleThread, false); |
| | | assignCommand.setCommands(commands);//è¿è¡å½ä»¤ |
| | | |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | redisUtil.set(RedisKeyType.TASK_RUN_LIMIT.key + wrkMast.getWrkNo(), "limit", 10); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | //å°è½¦ç¦»å¼å
çµæ¡© |
| | | private synchronized boolean executeShuttleChargeStepLeaveCharge(WrkMast wrkMast) { |
| | | if (wrkMast.getWrkSts() == WrkStsType.CHARGE_SHUTTLE_CHARGING_COMPLETE.sts) { |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | BasShuttleCharge basShuttleCharge = basShuttleChargeService.selectOne(new EntityWrapper<BasShuttleCharge>().eq("charge_id", wrkMast.getMk())); |
| | | if(basShuttleCharge == null) { |
| | | return false; |
| | | } |
| | | |
| | | //æ£æµéç¢ç©è½¦ |
| | | int checkObstacle = shuttleOperaUtils.checkObstacle(basShuttleCharge.getWaitLocNo(), new ArrayList<Integer>() {{ |
| | | add(shuttleProtocol.getShuttleNo()); |
| | | }}, new ArrayList<>()); |
| | | if (checkObstacle > 0) { |
| | | News.info("{}ä»»å¡ï¼é¿éèå´æå°è½¦ï¼çå¾
éç¢å°è½¦è°ç¦»ä¸", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //è°åº¦å°è½¦å»å¾
æºä½ |
| | | boolean dispatched = shuttleDispatchUtils.dispatchShuttle(wrkMast.getWrkNo(), basShuttleCharge.getWaitLocNo(), wrkMast.getShuttleNo()); |
| | | if (!dispatched) { |
| | | return false; |
| | | } |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.COMPLETE_CHARGE.sts); |
| | | wrkMast.setModiTime(new Date()); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * æ§è¡å°è½¦ç§»åºä»»å¡ |
| | | */ |
| | | public synchronized void shuttleMoveExecute() { |
| | | try { |
| | | //æ¥è¯¢å°è½¦ç§»åºä»»å¡ |
| | | List<WrkMast> wrkMasts = wrkMastService.selectShuttleMoveWrk(); |
| | | for (WrkMast wrkMast : wrkMasts) { |
| | | boolean stepMoveNearby = this.shuttleMoveExecuteStepMoveNearby(wrkMast);//å°è½¦ç§»å¨å°è¿ç¹ |
| | | if (!stepMoveNearby) { |
| | | continue; |
| | | } |
| | | |
| | | boolean stepMoveInLift = this.shuttleMoveExecuteStepMoveInLift(wrkMast);//å°è½¦è¿å
¥æåæºä¸ |
| | | if (!stepMoveInLift) { |
| | | continue; |
| | | } |
| | | |
| | | boolean stepLiftMove = this.shuttleMoveExecuteStepLiftMove(wrkMast);//æåæºæ¬è¿ä¸ |
| | | if (!stepLiftMove) { |
| | | continue; |
| | | } |
| | | |
| | | boolean updateShuttleLocation = this.shuttleMoveExecuteStepUpdateShuttleLocation(wrkMast);//æåæºæ¬è¿å®ææ´æ°å°è½¦åæ |
| | | if (!updateShuttleLocation) { |
| | | continue; |
| | | } |
| | | |
| | | boolean stepMoveLoc = this.shuttleMoveExecuteStepMoveLoc(wrkMast);//å°è½¦ç§»å¨å°ç®æ åºä½ä¸ |
| | | if (!stepMoveLoc) { |
| | | continue; |
| | | } |
| | | |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * å°è½¦è¿ç§»-å°è½¦ç§»å¨å°è¿ç¹ä¸ |
| | | * å¦éä¸»æ¹æ³æ§è¡continueï¼è¯·è¿åfalse |
| | | * ps:è¿åå¼trueå¹¶ä¸ä»£è¡¨è¯¥æ¹æ³æ§è¡æåï¼è¿åå¼ä»
åæ è®°ç¨äºä¸»æ¹æ³æ¯å¦æ§è¡continue |
| | | */ |
| | | private boolean shuttleMoveExecuteStepMoveNearby(WrkMast wrkMast) { |
| | | //--------------------------------------å°è½¦ç§»å¨å°è¿ç¹ä¸-----------------------------------------// |
| | | Date now = new Date(); |
| | | |
| | | //å°è½¦ç§»å¨å°è¿ç¹ 301.çæå°è½¦ç§»åºä»»å¡ ==> 302.å°è½¦ç§»å¨è³ç«ç¹ä¸ |
| | | if (wrkMast.getWrkSts() == WrkStsType.NEW_MOVE.sts) { |
| | | //è·åååç©¿æ¢è½¦çº¿ç¨ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦å¤äºç©ºé²ç¶æ |
| | | if (!shuttleThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼å°è½¦å¿ç¢ä¸", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | if (Utils.getLev(wrkMast.getLocNo()) == Utils.getLev(shuttleProtocol.getCurrentLocNo())) { |
| | | //ç®æ åºä½åå°è½¦åºä½å¤äºå䏿¥¼å±ï¼ä¸éè¦éè¿æåæºè°åº¦ |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts);// 309.å°è½¦è¿åºæåæºå®æ ==> 310.å°è½¦ç§»å¨ä¸ |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | return true;//ç´æ¥è¿å
¥309.å°è½¦è¿åºæåæºå®æ ==> 310.å°è½¦ç§»å¨ä¸ |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | //æç´¢æè¿ä¸æ æ
éæåæº |
| | | LiftStaProtocol recentLiftStation = liftDispatchUtils.getRecentLiftStation(shuttleProtocol.getShuttleNo(), Utils.getLev(shuttleProtocol.getCurrentLocNo())); |
| | | if(recentLiftStation == null) { |
| | | News.info("{}å·å°è½¦ï¼{}ç®æ åºä½ï¼æ²¡æå¯ç¨ç©ºé²è¾éç«ç¹", shuttleProtocol.getShuttleNo(), wrkMast.getLocNo()); |
| | | return false; |
| | | } |
| | | |
| | | LiftStaProtocol targetLiftSta = LiftUtils.getLiftStaByLev(recentLiftStation.getLiftNo(), Utils.getLev(wrkMast.getLocNo())); |
| | | if(targetLiftSta == null) { |
| | | return false; |
| | | } |
| | | |
| | | //计ç®è¿ç¹ä½ç½® |
| | | String endLocation = navigateUtils.calcEndLocation(shuttleProtocol.getCurrentLocNo(), recentLiftStation.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, 1); |
| | | if (endLocation == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼å°è½¦è¿ç¹ä½ç½®è®¡ç®å¤±è´¥", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦å·²å¨è¿ç¹ä½ç½®æ éåå¾ |
| | | if (shuttleProtocol.getCurrentLocNo().equals(endLocation)) { |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY_COMPLETE.sts);//å°è½¦ç§»å¨å°æåæºä¸ 301.çæå°è½¦ç§»åºä»»å¡ ==> 303.å°è½¦ç§»å¨è³è¿ç¹å®æ |
| | | wrkMast.setSourceStaNo(recentLiftStation.getSiteId()); |
| | | wrkMast.setStaNo(targetLiftSta.getSiteId()); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | wrkMastService.updateById(wrkMast); |
| | | return true; |
| | | } |
| | | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // ååç©¿æ¢è½¦ç¼å· |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//å°è½¦ç§»åºä»»å¡ |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//ä»»å¡å· |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//æºåºä½ |
| | | assignCommand.setLocNo(endLocation); |
| | | assignCommand.setAuto(true);//èªå¨æ¨¡å¼ |
| | | |
| | | //è·åå°è½¦å°è¿ç¹è¡èµ°å½ä»¤ |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), endLocation, NavigationMapType.getMapTypes(NavigationMapType.NORMAL, NavigationMapType.SHUTTLE), assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼è·¯å¾è®¡ç®å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false;//è·¯å¾è§£é失败 |
| | | } |
| | | |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_NEARBY.sts);//å°è½¦ç§»å¨å°æåæºä¸ 301.çæå°è½¦ç§»åºä»»å¡ ==> 302.å°è½¦ç§»å¨è³è¿ç¹ä¸ |
| | | wrkMast.setSourceStaNo(recentLiftStation.getSiteId()); |
| | | wrkMast.setStaNo(targetLiftSta.getSiteId()); |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING); |
| | | //触åéç¥ |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * å°è½¦è¿ç§»-å°è½¦è¿å
¥æåæºä¸ |
| | | * å¦éä¸»æ¹æ³æ§è¡continueï¼è¯·è¿åfalse |
| | | * ps:è¿åå¼trueå¹¶ä¸ä»£è¡¨è¯¥æ¹æ³æ§è¡æåï¼è¿åå¼ä»
åæ è®°ç¨äºä¸»æ¹æ³æ¯å¦æ§è¡continue |
| | | */ |
| | | private boolean shuttleMoveExecuteStepMoveInLift(WrkMast wrkMast) { |
| | | //--------------------------------------å°è½¦è¿å
¥æåæºä¸-----------------------------------------// |
| | | Date now = new Date(); |
| | | |
| | | //å°è½¦è¿å
¥æåæº 303.å°è½¦ç§»å¨è³è¿ç¹å®æ ==> 304.å°è½¦è¿å
¥æåæºä¸ |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_NEARBY_COMPLETE.sts) { |
| | | //è·åååç©¿æ¢è½¦çº¿ç¨ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦å¤äºç©ºé²ç¶æ |
| | | if (!shuttleThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼å°è½¦å¿ç¢ä¸", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | //è·åæºè¾éç« |
| | | LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); |
| | | if (liftSta == null) { |
| | | return false;//æ¾ä¸å°ç«ç¹ |
| | | } |
| | | |
| | | if (liftSta.getHasCar()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼æºç«åå¨å°è½¦", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | //è·åç®æ è¾éç« |
| | | LiftStaProtocol liftStaTarget = LiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); |
| | | if (liftStaTarget == null) { |
| | | return false;//æ¾ä¸å°ç«ç¹ |
| | | } |
| | | |
| | | if (liftStaTarget.getHasCar()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ç®æ ç«åå¨å°è½¦", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | |
| | | if (wrkMast.getLiftNo() == null) { |
| | | //ç³è¯·æåæºèµæº |
| | | boolean applyLift = liftAction.applyLift(liftSta.getLiftNo(), wrkMast.getWrkNo()); |
| | | if(!applyLift) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ç³è¯·æåæºèµæºå¤±è´¥ï¼ç¦æ¢ç§»å¨", wrkMast.getWrkNo()); |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); |
| | | if (liftThread == null) { |
| | | return false; |
| | | } |
| | | |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (!liftThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å·æåæºï¼æåæºå¿ç¢ä¸ï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false; |
| | | } |
| | | |
| | | Object object = redisUtil.get(RedisKeyType.LIFT_MOVE_TO_SHUTTLE_LIMIT.key + wrkMast.getWrkNo()); |
| | | int targetLev = Utils.getLev(shuttleProtocol.getCurrentLocNo()); |
| | | if (object == null || liftProtocol.getLev() != targetLev) { |
| | | //è·åæåæºå½ä»¤ |
| | | LiftStaProtocol startSta = LiftUtils.getLiftStaByLev(liftProtocol.getLiftNo(), liftProtocol.getLev()); |
| | | LiftStaProtocol targetSta = LiftUtils.getLiftStaByLev(liftProtocol.getLiftNo(), targetLev); |
| | | if (startSta == null || targetSta == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å·æåæºï¼ç«ç¹æ°æ®ä¸åå¨", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false; |
| | | } |
| | | LiftCommand liftCommand = liftThread.getMoveCommand(commonService.getWorkNo(WrkIoType.PREVIEW_LIFT_MOVE.id), startSta.getSiteId(), targetSta.getSiteId()); |
| | | ArrayList<LiftCommand> commands = new ArrayList<>(); |
| | | commands.add(liftCommand); |
| | | |
| | | //æäº¤å°çº¿ç¨å»å·¥ä½ |
| | | LiftAssignCommand assignCommand = new LiftAssignCommand(); |
| | | assignCommand.setCommands(commands); |
| | | assignCommand.setLiftNo(wrkMast.getLiftNo()); |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo()); |
| | | assignCommand.setTaskMode(LiftTaskModeType.MOVE.id); |
| | | //ä¸åä»»å¡ |
| | | liftAction.assignWork(wrkMast.getLiftNo(), assignCommand); |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å·æåæºå¨{}å±ï¼æåæºä¸å¨å°è½¦å±ï¼è°åº¦ç§»å¨ä¸", wrkMast.getWrkNo(), liftProtocol.getLev(), wrkMast.getLiftNo()); |
| | | redisUtil.set(RedisKeyType.LIFT_MOVE_TO_SHUTTLE_LIMIT.key + wrkMast.getWrkNo(), "lift_moving", 60 * 3); |
| | | redisUtil.set(RedisKeyType.TASK_RUN_LIMIT.key + wrkMast.getWrkNo(), "lock", 8); |
| | | return false; |
| | | } |
| | | |
| | | Object limitObj = redisUtil.get(RedisKeyType.TASK_RUN_LIMIT.key + wrkMast.getWrkNo()); |
| | | if (limitObj != null) { |
| | | return false; |
| | | } |
| | | |
| | | String liftLocNo = liftThread.getCurrentLocNo(); |
| | | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // ååç©¿æ¢è½¦ç¼å· |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//å°è½¦ç§»åºä»»å¡ |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//ä»»å¡å· |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//æºåºä½ |
| | | assignCommand.setLocNo(liftLocNo); |
| | | assignCommand.setAuto(true);//èªå¨æ¨¡å¼ |
| | | |
| | | //è·åå°è½¦å°æåæºè¡èµ°å½ä»¤ |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftLocNo, NavigationMapType.getMapTypes(NavigationMapType.NORMAL), assignCommand, shuttleThread, "inLift"); |
| | | if (commands == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼è·¯å¾è®¡ç®å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false;//è·¯å¾è§£é失败 |
| | | } |
| | | |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_IN_LIFT.sts);//303.å°è½¦ç§»å¨è³è¿ç¹å®æ ==> 304.å°è½¦è¿å
¥æåæºä¸ |
| | | wrkMast.setModiTime(now); |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | notifyUtils.notify(String.valueOf(SlaveType.Shuttle), shuttleProtocol.getShuttleNo(), String.valueOf(wrkMast.getWrkNo()), wrkMast.getWmsWrkNo(), NotifyMsgType.SHUTTLE_MOVING); |
| | | //触åéç¥ |
| | | return false; |
| | | } |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * å°è½¦è¿ç§»-æåæºæ¬è¿ä¸ |
| | | * å¦éä¸»æ¹æ³æ§è¡continueï¼è¯·è¿åfalse |
| | | * ps:è¿åå¼trueå¹¶ä¸ä»£è¡¨è¯¥æ¹æ³æ§è¡æåï¼è¿åå¼ä»
åæ è®°ç¨äºä¸»æ¹æ³æ¯å¦æ§è¡continue |
| | | */ |
| | | private boolean shuttleMoveExecuteStepLiftMove(WrkMast wrkMast) { |
| | | //--------------------------------------æåæºæ¬è¿ä¸-----------------------------------------// |
| | | Date now = new Date(); |
| | | |
| | | //æåæºæ¬è¿ä¸ 305.å°è½¦è¿å
¥æåæºå®æ ==> 306.æåæºæ¬è¿ä¸ |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_IN_LIFT_COMPLETE.sts) { |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, wrkMast.getLiftNo()); |
| | | if (liftThread == null) { |
| | | return false; |
| | | } |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null) { |
| | | return false; |
| | | } |
| | | if (!liftThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å·æåæºï¼æåæºå¿ç¢ä¸ï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo(), wrkMast.getLiftNo()); |
| | | return false; |
| | | } |
| | | |
| | | //è·åæºç« |
| | | LiftStaProtocol sourceLiftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getSourceStaNo()); |
| | | //è·åç®æ ç« |
| | | LiftStaProtocol liftSta = LiftUtils.getLiftStaByStaNo(wrkMast.getStaNo()); |
| | | if (sourceLiftSta == null || liftSta == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ç¼ºå°ç«ç¹ä¿¡æ¯ï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo()); |
| | | return false;//缺å°ç«ç¹ä¿¡æ¯ |
| | | } |
| | | |
| | | if (liftSta.getHasCar()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼ç®æ ç«åå¨å°è½¦ï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo()); |
| | | return false;//ææçè·³è¿ |
| | | } |
| | | |
| | | //è·åæåæºå½ä»¤ |
| | | LiftCommand liftCommand = liftThread.getShuttleSwitchCommand(wrkMast.getWrkNo(), sourceLiftSta.getSiteId(), liftSta.getSiteId()); |
| | | ArrayList<LiftCommand> commands = new ArrayList<>(); |
| | | commands.add(liftCommand); |
| | | |
| | | //æäº¤å°çº¿ç¨å»å·¥ä½ |
| | | LiftAssignCommand assignCommand = new LiftAssignCommand(); |
| | | assignCommand.setCommands(commands); |
| | | assignCommand.setLiftNo(wrkMast.getLiftNo()); |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo()); |
| | | assignCommand.setTaskMode(LiftTaskModeType.SHUTTLE_SWITCH.id); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_LIFT_RUN.sts);//æåæºæ¬è¿ä¸ 305.å°è½¦è¿å
¥æåæºå®æ ==> 306.æåæºæ¬è¿ä¸ |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | liftAction.assignWork(wrkMast.getLiftNo(), assignCommand); |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * å°è½¦è¿ç§»-æåæºæ¬è¿å®ææ´æ°å°è½¦åæ |
| | | * å¦éä¸»æ¹æ³æ§è¡continueï¼è¯·è¿åfalse |
| | | * ps:è¿åå¼trueå¹¶ä¸ä»£è¡¨è¯¥æ¹æ³æ§è¡æåï¼è¿åå¼ä»
åæ è®°ç¨äºä¸»æ¹æ³æ¯å¦æ§è¡continue |
| | | */ |
| | | private boolean shuttleMoveExecuteStepUpdateShuttleLocation(WrkMast wrkMast) { |
| | | //--------------------------------------æåæºæ¬è¿ä¸-----------------------------------------// |
| | | Date now = new Date(); |
| | | |
| | | //æåæºæ¬è¿ä¸ 307.æåæºæ¬è¿å®æ ==> 308.å°è½¦è¿åºæåæºä¸ |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_LIFT_RUN_COMPLETE.sts) { |
| | | //è·åååç©¿æ¢è½¦çº¿ç¨ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦å¤äºç©ºé²ç¶æ |
| | | if (!shuttleThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼å°è½¦å¿ç¢ä¸ï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | if (Utils.getLev(shuttleProtocol.getCurrentLocNo()) != Utils.getLev(wrkMast.getLocNo())) { |
| | | Object object = redisUtil.get(RedisKeyType.SHUTTLE_UPDATE_LOCATION.key + shuttleProtocol.getShuttleNo()); |
| | | if(object != null) { |
| | | return false; |
| | | } |
| | | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // ååç©¿æ¢è½¦ç¼å· |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.UPDATE_LOCATION.id);//æ´æ°åæ |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//ä»»å¡å· |
| | | assignCommand.setAuto(true);//èªå¨æ¨¡å¼ |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//æºåºä½ |
| | | assignCommand.setLocNo(wrkMast.getLocNo());//ç®æ åºä½ |
| | | |
| | | //æ´æ°å°è½¦åæ |
| | | ShuttleCommand command = shuttleThread.getUpdateLocationCommand(wrkMast.getWrkNo(), wrkMast.getLocNo()); |
| | | ArrayList<ShuttleCommand> commands = new ArrayList<>(); |
| | | commands.add(command); |
| | | |
| | | assignCommand.setCommands(commands); |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | redisUtil.set(RedisKeyType.SHUTTLE_UPDATE_LOCATION.key + shuttleProtocol.getShuttleNo(), "update", 10); |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦åºæåæºè¿ç¹è·ç¦» |
| | | int shuttleOutLiftLocationDistance = 2; |
| | | Config shuttleOutLiftLocationDistanceConfig = configService.selectOne(new EntityWrapper<Config>().eq("code", "shuttleOutLiftLocationDistance")); |
| | | if (shuttleOutLiftLocationDistanceConfig != null) { |
| | | shuttleOutLiftLocationDistance = Integer.parseInt(shuttleOutLiftLocationDistanceConfig.getValue()); |
| | | } |
| | | |
| | | String targetLocNo = navigateUtils.calcFirstLocation(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), null, null, shuttleOutLiftLocationDistance); |
| | | if (targetLocNo == null) {//åºæåæºè¿ç¹è®¡ç®å¤±è´¥ |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼åºæåæºè¿ç¹è®¡ç®å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // ååç©¿æ¢è½¦ç¼å· |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//å°è½¦ç§»åºä»»å¡ |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//ä»»å¡å· |
| | | assignCommand.setAuto(true);//èªå¨æ¨¡å¼ |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//æºåºä½ |
| | | assignCommand.setLocNo(targetLocNo);//ç®æ åºä½ |
| | | |
| | | //è·åå°è½¦å°è¿ç¹å½ä»¤ |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), targetLocNo, NavigationMapType.getMapTypes(NavigationMapType.NORMAL), assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼è·¯å¾è®¡ç®å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false;//è·¯å¾è®¡ç®å¤±è´¥ |
| | | } |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_OUT_LIFT.sts);//å°è½¦è¿åºæåæºä¸ |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | /** |
| | | * å°è½¦è¿ç§»-å°è½¦ç§»å¨å°ç®æ åºä½ä¸ |
| | | * å¦éä¸»æ¹æ³æ§è¡continueï¼è¯·è¿åfalse |
| | | * ps:è¿åå¼trueå¹¶ä¸ä»£è¡¨è¯¥æ¹æ³æ§è¡æåï¼è¿åå¼ä»
åæ è®°ç¨äºä¸»æ¹æ³æ¯å¦æ§è¡continue |
| | | */ |
| | | private boolean shuttleMoveExecuteStepMoveLoc(WrkMast wrkMast) { |
| | | //--------------------------------------å°è½¦ç§»å¨å°ç®æ åºä½ä¸-----------------------------------------// |
| | | Date now = new Date(); |
| | | |
| | | //å°è½¦ç§»å¨å°ç®æ åºä½ä¸ 309.å°è½¦è¿åºæåæºå®æ ==> 310.å°è½¦ç§»å¨ä¸ |
| | | if (wrkMast.getWrkSts() == WrkStsType.MOVE_OUT_LIFT_COMPLETE.sts) { |
| | | |
| | | //è·åååç©¿æ¢è½¦çº¿ç¨ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, wrkMast.getShuttleNo()); |
| | | if (shuttleThread == null) { |
| | | return false; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦å¤äºç©ºé²ç¶æ |
| | | if (!shuttleThread.isIdle()) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼å°è½¦å¿ç¢ä¸ï¼ç¦æ¢æ´¾å", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false; |
| | | } |
| | | |
| | | //å°è½¦å·²ç»å¨ç®æ åºä½ï¼ç´æ¥è®¤å®å°è½¦ç§»å¨ä»»å¡å®æ |
| | | if (shuttleProtocol.getCurrentLocNo().equals(wrkMast.getLocNo())) { |
| | | wrkMast.setWrkSts(WrkStsType.COMPLETE_MOVE.sts);//311.å°è½¦ç§»å¨å®æ |
| | | wrkMast.setLiftNo(null);//éæ¾æåæº |
| | | wrkMast.setModiTime(now); |
| | | wrkMastService.updateById(wrkMast); |
| | | return false; |
| | | } |
| | | |
| | | ShuttleAssignCommand assignCommand = new ShuttleAssignCommand(); |
| | | assignCommand.setShuttleNo(shuttleProtocol.getShuttleNo()); // ååç©¿æ¢è½¦ç¼å· |
| | | assignCommand.setTaskMode(ShuttleTaskModeType.MOVE_LOC_NO.id);//å°è½¦ç§»åºä»»å¡ |
| | | assignCommand.setTaskNo(wrkMast.getWrkNo());//ä»»å¡å· |
| | | assignCommand.setAuto(true);//èªå¨æ¨¡å¼ |
| | | assignCommand.setSourceLocNo(shuttleProtocol.getCurrentLocNo());//æºåºä½ |
| | | assignCommand.setLocNo(wrkMast.getLocNo());//ç®æ åºä½ |
| | | |
| | | //è·åå°è½¦å°ç®æ åºä½å½ä»¤ |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), assignCommand, shuttleThread); |
| | | if (commands == null) { |
| | | News.taskInfo(wrkMast.getWrkNo(), "{}ä»»å¡ï¼{}å°è½¦ï¼è·¯å¾è®¡ç®å¤±è´¥", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); |
| | | return false;//è·¯å¾è®¡ç®å¤±è´¥ |
| | | } |
| | | |
| | | assignCommand.setCommands(commands); |
| | | |
| | | wrkMast.setWrkSts(WrkStsType.MOVE_SHUTTLE.sts);//å°è½¦ç§»å¨å°ç®æ åºä½ä¸ 309.å°è½¦è¿åºæåæºå®æ ==> 310.å°è½¦ç§»å¨ä¸ |
| | | wrkMast.setLiftNo(null);//éæ¾æåæº |
| | | wrkMast.setSystemMsg("");//æ¸
ç©ºæ¶æ¯ |
| | | wrkMast.setModiTime(now); |
| | | if (wrkMastService.updateById(wrkMast)) { |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | //èªå¨åæ¢åºå
¥åºæ¨¡å¼ |
| | | public void autoSwitchLiftIOMode() { |
| | | List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Lift))); |
| | | for (DeviceConfig device : liftList) { |
| | | Integer liftNo = device.getDeviceNo(); |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo); |
| | | if (liftThread == null) { |
| | | continue; |
| | | } |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null) { |
| | | continue; |
| | | } |
| | | |
| | | List<Integer> liftAllStaNo = LiftUtils.getLiftAllStaNo(liftNo); |
| | | if (liftAllStaNo.isEmpty()) { |
| | | continue; |
| | | } |
| | | |
| | | List<Integer> conveyorBindLiftAllStaNo = LiftUtils.getConveyorBindLiftAllStaNo(liftNo); |
| | | if (conveyorBindLiftAllStaNo.isEmpty()) { |
| | | continue; |
| | | } |
| | | |
| | | //è·åå
¥åºä»»å¡ |
| | | List<WrkMast> inWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .in("sta_no", liftAllStaNo) |
| | | .in("wrk_sts" |
| | | , WrkStsType.NEW_INBOUND.sts |
| | | , WrkStsType.INBOUND_DEVICE_RUN.sts |
| | | , WrkStsType.INBOUND_LIFT_RUN.sts |
| | | , WrkStsType.INBOUND_LIFT_RUN_COMPLETE.sts |
| | | , WrkStsType.INBOUND_SHUTTLE_RUN.sts |
| | | , WrkStsType.INBOUND_SHUTTLE_RUN_COMPLETE.sts |
| | | )); |
| | | |
| | | //è·ååºåºä»»å¡ |
| | | List<WrkMast> outWrkMasts = wrkMastService.selectList(new EntityWrapper<WrkMast>() |
| | | .in("sta_no", conveyorBindLiftAllStaNo) |
| | | .in("wrk_sts" |
| | | , WrkStsType.NEW_OUTBOUND.sts |
| | | , WrkStsType.OUTBOUND_SHUTTLE_RUN.sts |
| | | , WrkStsType.OUTBOUND_SHUTTLE_RUN_COMPLETE.sts |
| | | , WrkStsType.OUTBOUND_LIFT_RUN.sts |
| | | , WrkStsType.OUTBOUND_LIFT_RUN_COMPLETE.sts |
| | | )); |
| | | |
| | | if (liftProtocol.getIOModeType().equals(LiftIoModeType.NONE)) { |
| | | //æªç¥æ¨¡å¼ |
| | | if (!inWrkMasts.isEmpty()) { |
| | | liftThread.switchIOMode(LiftIoModeType.IN); |
| | | } else if (!outWrkMasts.isEmpty()) { |
| | | liftThread.switchIOMode(LiftIoModeType.OUT); |
| | | }else { |
| | | liftThread.switchIOMode(LiftIoModeType.IN); |
| | | } |
| | | } else if (liftProtocol.getIOModeType().equals(LiftIoModeType.IN)) { |
| | | //å
¥åºæ¨¡å¼ |
| | | if (inWrkMasts.isEmpty() && !outWrkMasts.isEmpty()) { |
| | | liftThread.switchIOMode(LiftIoModeType.OUT); |
| | | } |
| | | } else if (liftProtocol.getIOModeType().equals(LiftIoModeType.OUT)) { |
| | | //åºåºæ¨¡å¼ |
| | | if (outWrkMasts.isEmpty() && !inWrkMasts.isEmpty()) { |
| | | liftThread.switchIOMode(LiftIoModeType.IN); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | public synchronized void notifyShuttle(){ |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig device : shuttleList) { |
| | | notifyMsg(String.valueOf(SlaveType.Shuttle), device.getDeviceNo()); |
| | | List<DeviceConfig> deviceList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Crn))); |
| | | for (DeviceConfig device : deviceList) { |
| | | notifyMsg(String.valueOf(SlaveType.Crn), device.getDeviceNo()); |
| | | } |
| | | } |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | public synchronized void notifyForkLift(){ |
| | | List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.ForkLift))); |
| | | for (DeviceConfig device : forkLiftList) { |
| | | notifyMsg(String.valueOf(SlaveType.ForkLift), device.getDeviceNo()); |
| | | List<DeviceConfig> deviceList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Rgv))); |
| | | for (DeviceConfig device : deviceList) { |
| | | notifyMsg(String.valueOf(SlaveType.Rgv), device.getDeviceNo()); |
| | | } |
| | | } |
| | | |
| | |
| | | package com.zy.asrs.utils; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.zy.asrs.domain.NotifyDto; |
| | |
| | | |
| | | public String getKey(String notifyType, Integer device) { |
| | | String key = null; |
| | | if (notifyType.equals(String.valueOf(SlaveType.Shuttle))) { |
| | | key = RedisKeyType.QUEUE_SHUTTLE.key + device; |
| | | } else if (notifyType.equals(String.valueOf(SlaveType.ForkLift))) { |
| | | key = RedisKeyType.QUEUE_FORK_LIFT.key + device; |
| | | if (notifyType.equals(String.valueOf(SlaveType.Crn))) { |
| | | key = RedisKeyType.QUEUE_CRN.key + device; |
| | | } else if (notifyType.equals(String.valueOf(SlaveType.Devp))) { |
| | | key = RedisKeyType.QUEUE_DEVP.key + device; |
| | | } else if (notifyType.equals(String.valueOf(SlaveType.Rgv))) { |
| | | key = RedisKeyType.QUEUE_RGV.key + device; |
| | | } else if (notifyType.equals("task")) { |
| | | key = RedisKeyType.QUEUE_TASK.key + device; |
| | | } else { |
| | |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Arith; |
| | | import com.core.common.Cools; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.asrs.entity.DeviceConfig; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.entity.WrkMast; |
| | | import com.zy.asrs.service.DeviceConfigService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.service.WrkMastService; |
| | | import com.zy.common.model.NavigateNode; |
| | | import com.zy.common.model.enums.NavigationMapType; |
| | | import com.zy.common.utils.NavigatePositionConvert; |
| | | import com.zy.common.utils.NavigateUtils; |
| | | import com.zy.core.cache.SlaveConnection; |
| | | import com.zy.core.enums.SlaveType; |
| | | import com.zy.core.model.protocol.ShuttleProtocol; |
| | | import com.zy.core.thread.ShuttleThread; |
| | | import java.text.DecimalFormat; |
| | | import java.util.*; |
| | | |
| | | public class Utils { |
| | | |
| | |
| | | |
| | | public static String getLocNo(Number row, Number bay, Number lev) { |
| | | return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2); |
| | | } |
| | | |
| | | public static List<String> getGroupLoc(String locNo) { |
| | | return null; |
| | | } |
| | | |
| | | //è·åç©¿æ¢è½¦xyåæ ç¹ |
| | | public static int[] getShuttlePoint(Integer shuttleNo) { |
| | | //è·åç©¿æ¢è½¦æå¨èç¹ä½ç½® |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleNo); |
| | | if (shuttleThread == null) { |
| | | return null; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | return null; |
| | | } |
| | | |
| | | String currentLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | if (currentLocNo == null) { |
| | | return null; |
| | | } |
| | | |
| | | if (shuttleProtocol.getCurrentLocNo() == null) { |
| | | return null; |
| | | } |
| | | return NavigatePositionConvert.positionToXY(shuttleProtocol.getCurrentLocNo()); |
| | | } |
| | | |
| | | //è·åé¤ç½ååå¤çæå®æ¥¼å±å
¨é¨ç©¿æ¢è½¦xyåæ ç¹ |
| | | public static List<int[]> getShuttlePoints(Integer whiteShuttle, Integer lev) { |
| | | DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class); |
| | | ArrayList<int[]> list = new ArrayList<>(); |
| | | |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig device : shuttleList) { |
| | | if (device.getDeviceNo().intValue() == whiteShuttle) { |
| | | continue;//è·³è¿ç½åå |
| | | } |
| | | |
| | | //è·åç©¿æ¢è½¦æå¨èç¹ä½ç½® |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); |
| | | if (shuttleThread == null) { |
| | | continue; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | continue; |
| | | } |
| | | |
| | | String currentLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | if (currentLocNo == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (lev != Utils.getLev(currentLocNo)) { |
| | | continue;//楼å±ä¸å |
| | | } |
| | | |
| | | if (shuttleProtocol.getCurrentLocNo() == null) { |
| | | continue; |
| | | } |
| | | int[] xyPosition = NavigatePositionConvert.positionToXY(shuttleProtocol.getCurrentLocNo());//éè¿åºä½å·è·åxyåæ |
| | | list.add(xyPosition); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | public static ShuttleThread searchShuttle(String locNo) { |
| | | DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class); |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig device : shuttleList) { |
| | | //è·åç©¿æ¢è½¦æå¨èç¹ä½ç½® |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); |
| | | if (shuttleThread == null) { |
| | | continue; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | continue; |
| | | } |
| | | |
| | | String currentLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | if (currentLocNo == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (currentLocNo.equals(locNo)) { |
| | | return shuttleThread; |
| | | } |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | //æ£æµæ¥¼å±æ¯å¦æå¯ç¨ç©¿æ¢è½¦ |
| | | public static boolean checkLevHasShuttle(Integer lev) { |
| | | DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class); |
| | | WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class); |
| | | |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig device : shuttleList) { |
| | | //è·åååç©¿æ¢è½¦çº¿ç¨ |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); |
| | | if (shuttleThread == null) { |
| | | continue; |
| | | } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | continue; |
| | | } |
| | | String currentLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | if (currentLocNo == null) { |
| | | continue; |
| | | } |
| | | |
| | | //å°è½¦æ£å¨å
çµ |
| | | if (shuttleThread.isCharging()) { |
| | | continue; |
| | | } |
| | | |
| | | //å°è½¦æå
çµä»»å¡ |
| | | WrkMast chargeWorking = wrkMastService.selectChargeWorking(shuttleProtocol.getShuttleNo()); |
| | | if (chargeWorking != null) {//å·²æå
çµä»»å¡ |
| | | continue; |
| | | } |
| | | |
| | | //å°è½¦å¤äºæ
éç¶æ |
| | | if (shuttleThread.isFault()) { |
| | | continue; |
| | | } |
| | | |
| | | if (lev == Utils.getLev(currentLocNo)) { |
| | | return true;//æå®æ¥¼å±æç©¿æ¢è½¦ |
| | | } |
| | | } |
| | | |
| | | return false;//æå®æ¥¼å±æ²¡æç©¿æ¢è½¦ |
| | | } |
| | | |
| | | //æ£æµåºä½ç»æ¯å¦åå¨å°è½¦ï¼åå¨è¿åå°è½¦å·ã |
| | | public static Integer checkGroupLocHasShuttle(List<String> groupLoc) { |
| | | if (groupLoc == null) { |
| | | return null; |
| | | } |
| | | |
| | | if (groupLoc.isEmpty()) { |
| | | return null; |
| | | } |
| | | |
| | | DeviceConfigService deviceConfigService = SpringUtils.getBean(DeviceConfigService.class); |
| | | if (deviceConfigService == null) { |
| | | return null; |
| | | } |
| | | |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | |
| | | for (String loc : groupLoc) { |
| | | for (DeviceConfig device : shuttleList) { |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, device.getDeviceNo()); |
| | | if (shuttleThread == null) { |
| | | continue; |
| | | } |
| | | |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (shuttleProtocol.getCurrentLocNo() == null) { |
| | | continue; |
| | | } |
| | | |
| | | if (shuttleProtocol.getCurrentLocNo().equals(loc)) { |
| | | //åå¨å°è½¦ |
| | | return device.getDeviceNo(); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | //è·åå°è½¦å¾
æºä½ |
| | | public static String getShuttleStandbyLocNo(String locNo) { |
| | | LocMastService locMastService = SpringUtils.getBean(LocMastService.class); |
| | | NavigateUtils navigateUtils = SpringUtils.getBean(NavigateUtils.class); |
| | | List<LocMast> locMasts = locMastService.selectList(new EntityWrapper<LocMast>() |
| | | .eq("loc_type", "standby") |
| | | .eq("lev1", Utils.getLev(locNo))); |
| | | if (locMasts.isEmpty()) { |
| | | return null; |
| | | } |
| | | |
| | | Integer recentDistance = Integer.MAX_VALUE; |
| | | String recentLocNo = null; |
| | | for (LocMast locMast : locMasts) { |
| | | //å¾
æºä½å°ç®æ ç¹è·ç¦» |
| | | List<NavigateNode> currentShuttlePath = navigateUtils.calc(locNo, locMast.getLocNo(), NavigationMapType.getMapTypes(NavigationMapType.NORMAL), Utils.getShuttlePoints(0, Utils.getLev(locNo)), null);//æç´¢ç©ºé²ç©¿æ¢è½¦ï¼ä½¿ç¨æ£å¸¸ééå°å¾ |
| | | if (currentShuttlePath == null) { |
| | | continue; |
| | | } |
| | | Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//计ç®å½åè·¯å¾è¡èµ°æ»è·ç¦» |
| | | if (currentAllDistance < recentDistance) { |
| | | recentDistance = currentAllDistance; |
| | | recentLocNo = locMast.getLocNo(); |
| | | } |
| | | } |
| | | |
| | | return recentLocNo; |
| | | } |
| | | |
| | | public static boolean isJSON(String value) { |
| | |
| | | package com.zy.asrs.ws; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.core.common.R; |
| | | import com.core.common.SpringUtils; |
| | | import com.zy.asrs.controller.ConsoleController; |
| | | import com.zy.asrs.controller.ForkLiftController; |
| | | import com.zy.asrs.controller.LiftController; |
| | | import com.zy.asrs.controller.ShuttleController; |
| | | import com.zy.common.model.WebSocketMessage; |
| | | |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Component; |
| | |
| | | */ |
| | | @OnMessage |
| | | public void onMessage(String message, Session session) throws IOException { |
| | | ShuttleController shuttleController = SpringUtils.getBean(ShuttleController.class); |
| | | ForkLiftController forkLiftController = SpringUtils.getBean(ForkLiftController.class); |
| | | LiftController liftController = SpringUtils.getBean(LiftController.class); |
| | | ConsoleController consoleController = SpringUtils.getBean(ConsoleController.class); |
| | | WebSocketMessage socketMessage = JSON.parseObject(message, WebSocketMessage.class); |
| | | if (socketMessage.getUrl().equals("/shuttle/table/shuttle/state")) { |
| | | R result = shuttleController.shuttleStateTable(); |
| | | socketMessage.setData(JSON.toJSONString(result)); |
| | | this.sendMessage(JSON.toJSONString(socketMessage)); |
| | | } else if (socketMessage.getUrl().equals("/forkLift/table/lift/state")) { |
| | | R result = forkLiftController.liftStateTable(); |
| | | socketMessage.setData(JSON.toJSONString(result)); |
| | | this.sendMessage(JSON.toJSONString(socketMessage)); |
| | | } else if (socketMessage.getUrl().equals("/lift/table/lift/state")) { |
| | | R result = liftController.liftStateTable(); |
| | | socketMessage.setData(JSON.toJSONString(result)); |
| | | this.sendMessage(JSON.toJSONString(socketMessage)); |
| | | } else if (socketMessage.getUrl().equals("/console/map/auth")) { |
| | | R result = consoleController.getMapFromRedis(Integer.parseInt(socketMessage.getData())); |
| | | socketMessage.setData(JSON.toJSONString(result)); |
| | | this.sendMessage(JSON.toJSONString(socketMessage)); |
| | | } else if (socketMessage.getUrl().equals("/console/locMap/auth")) { |
| | | R result = consoleController.getLocMap(Integer.parseInt(socketMessage.getData())); |
| | | socketMessage.setData(JSON.toJSONString(result)); |
| | | this.sendMessage(JSON.toJSONString(socketMessage)); |
| | | } else if (socketMessage.getUrl().equals("/console/getMoveAdvancePath/auth")) { |
| | | R result = consoleController.getMoveAdvancePath(Integer.parseInt(socketMessage.getData())); |
| | | socketMessage.setData(JSON.toJSONString(result)); |
| | | this.sendMessage(JSON.toJSONString(socketMessage)); |
| | | } else if (socketMessage.getUrl().equals("/console/getLockPath/auth")) { |
| | | R result = consoleController.getLockPath(Integer.parseInt(socketMessage.getData())); |
| | | socketMessage.setData(JSON.toJSONString(result)); |
| | | this.sendMessage(JSON.toJSONString(socketMessage)); |
| | | } |
| | | // log.info("æ¶å°æ¥èªè¿æ¥ï¼" + sessionId + "çä¿¡æ¯:" + message); |
| | | } |
| | | |
| | |
| | | CoolGenerator generator = new CoolGenerator(); |
| | | // mysql |
| | | generator.sqlOsType = SqlOsType.MYSQL; |
| | | generator.url="localhost:3306/shuttle_rcs"; |
| | | generator.url="localhost:3306/wcs"; |
| | | generator.username="root"; |
| | | generator.password="root"; |
| | | generator.table="rcs_device_config"; |
| | | generator.table="asr_bas_crnp_opt"; |
| | | // sqlserver |
| | | // generator.sqlOsType = SqlOsType.SQL_SERVER; |
| | | // generator.url="127.0.0.1:1433;databasename=tzskasrs"; |
| | |
| | | package com.zy.core; |
| | | |
| | | import com.zy.asrs.service.impl.ForkMainServiceImpl; |
| | | import com.zy.asrs.service.impl.MainServiceImpl; |
| | | import com.zy.core.properties.SystemProperties; |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.PreDestroy; |
| | |
| | | @Component |
| | | public class MainProcess { |
| | | |
| | | @Value("${deviceExecuteConfig.liftType}") |
| | | private String liftType; |
| | | @Autowired |
| | | private MainServiceImpl mainService; |
| | | @Autowired |
| | | private ForkMainServiceImpl forkMainService; |
| | | // æå±çº¿ç¨ |
| | | private Thread thread; |
| | | // é¢ç |
| | |
| | | * =====>> å¼å§å·¥ä½ |
| | | */ |
| | | public void start(){ |
| | | if(liftType.equals("ForkLift")){ |
| | | initForkMain(); |
| | | }else { |
| | | initMain(); |
| | | } |
| | | } |
| | | |
| | | private void initMain() { |
| | | thread = new Thread(() -> { |
| | | while (!Thread.currentThread().isInterrupted()) { |
| | | try { |
| | |
| | | if (!SystemProperties.WCS_RUNNING_STATUS.get()) { |
| | | continue; |
| | | } |
| | | |
| | | //åå§å宿¶å°å¾ |
| | | mainService.initRealtimeBasMap(); |
| | | |
| | | // å
¥åº ===>> ååç©¿æ¢è½¦å
¥åºä½ä¸ä¸å |
| | | mainService.shuttleInExecute(); |
| | | // åºåº ===>> ååç©¿æ¢è½¦åºåºä½ä¸ä¸å |
| | | mainService.shuttleOutExecute(); |
| | | // //ååç©¿æ¢è½¦ä»»å¡å®æ |
| | | // mainService.shuttleFinished(); |
| | | //æ§è¡ç§»åºä»»å¡ |
| | | mainService.shuttleLocMoveExecute(); |
| | | //æåæºä»»å¡ |
| | | mainService.liftIoExecute(); |
| | | //æåæºä»»å¡å®æ |
| | | mainService.liftFinished(); |
| | | //æ§è¡å°è½¦ç§»å¨ä»»å¡ |
| | | mainService.shuttleMoveExecute(); |
| | | // å¼å¸¸ä¿¡æ¯è®°å½ |
| | | mainService.recErr(); |
| | | // ç©¿æ¢è½¦ ===>> å°è½¦çµéæ£æµå
çµ |
| | | mainService.loopShuttleCharge(); |
| | | mainService.executeShuttleCharge(); |
| | | |
| | | //èªå¨åæ¢åºå
¥åºæ¨¡å¼ |
| | | mainService.autoSwitchLiftIOMode(); |
| | | |
| | | // é´é |
| | | Thread.sleep(200); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | }); |
| | | thread.start(); |
| | | } |
| | | |
| | | private void initForkMain() { |
| | | thread = new Thread(() -> { |
| | | while (!Thread.currentThread().isInterrupted()) { |
| | | try { |
| | | |
| | | // é´é |
| | | Thread.sleep(300); |
| | | |
| | | // ç³»ç»è¿è¡ç¶æå¤æ |
| | | if (!SystemProperties.WCS_RUNNING_STATUS.get()) { |
| | | continue; |
| | | } |
| | | |
| | | //åå§å宿¶å°å¾ |
| | | forkMainService.initRealtimeBasMap(); |
| | | |
| | | //åºåºä»»å¡é¢è°åº¦æåæº |
| | | forkMainService.outTaskPreviewDispatchForkLift(); |
| | | |
| | | // å
¥åº ===>> ååç©¿æ¢è½¦å
¥åºä½ä¸ä¸å |
| | | forkMainService.shuttleInExecute(); |
| | | // åºåº ===>> ååç©¿æ¢è½¦åºåºä½ä¸ä¸å |
| | | forkMainService.shuttleOutExecute(); |
| | | // //ååç©¿æ¢è½¦ä»»å¡å®æ |
| | | // mainService.shuttleFinished(); |
| | | //æ§è¡ç§»åºä»»å¡ |
| | | forkMainService.shuttleLocMoveExecute(); |
| | | //è´§åæåæºä»»å¡ |
| | | forkMainService.forkLiftIoExecute(); |
| | | //è´§åæåæºä»»å¡å®æ |
| | | forkMainService.forkLiftFinished(); |
| | | //æ§è¡å°è½¦ç§»å¨ä»»å¡ |
| | | forkMainService.shuttleMoveExecute(); |
| | | // å¼å¸¸ä¿¡æ¯è®°å½ |
| | | forkMainService.recErr(); |
| | | // ç©¿æ¢è½¦ ===>> å°è½¦çµéæ£æµå
çµ |
| | | forkMainService.loopShuttleCharge(); |
| | | forkMainService.executeShuttleCharge(); |
| | | |
| | | //èªå¨åæ¢åºå
¥åºæ¨¡å¼ |
| | | forkMainService.autoSwitchForkLiftIOMode(); |
| | | |
| | | // é´é |
| | | Thread.sleep(200); |
| | |
| | | package com.zy.core; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.BasLift; |
| | | import com.zy.asrs.entity.DeviceConfig; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.service.BasLiftService; |
| | | import com.zy.asrs.service.DeviceConfigService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.utils.RedisUtil; |
| | | import com.zy.core.action.ShuttleAction; |
| | | import com.zy.core.cache.MessageQueue; |
| | | import com.zy.core.cache.SlaveConnection; |
| | | import com.zy.core.enums.SlaveType; |
| | | import com.zy.core.task.ShuttleExecuteScheduler; |
| | | import com.zy.core.thread.TrafficControlThread; |
| | | import com.zy.core.thread.impl.NyLiftThread; |
| | | import com.zy.core.thread.impl.NyShuttleThread; |
| | | import com.zy.core.thread.impl.TrafficControlImplThread; |
| | | import com.zy.core.thread.impl.ZyForkLiftThread; |
| | | import com.zy.core.utils.DeviceMsgUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.PostConstruct; |
| | | import javax.annotation.PreDestroy; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | @Component |
| | | public class ServerBootstrap { |
| | | |
| | | @Value("${deviceExecuteConfig.threadControlCount}") |
| | | private int threadControlCount; |
| | | |
| | | @Autowired |
| | | private MainProcess mainProcess; |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | @Autowired |
| | | private DeviceConfigService deviceConfigService; |
| | | @Autowired |
| | | private ShuttleAction shuttleAction; |
| | | @Autowired |
| | | private DeviceMsgUtils deviceMsgUtils; |
| | | @Autowired |
| | | private BasLiftService basLiftService; |
| | | @Autowired |
| | | private LocMastService locMastService; |
| | | |
| | | @PostConstruct |
| | | @Async |
| | |
| | | } |
| | | |
| | | private void initMq(){ |
| | | // åå§åè´§åæåæºmq |
| | | List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.ForkLift))); |
| | | for (DeviceConfig forkLift : forkLiftList) { |
| | | MessageQueue.init(SlaveType.ForkLift, forkLift.getDeviceNo()); |
| | | // åå§åå åæºmq |
| | | List<DeviceConfig> crnList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Crn))); |
| | | for (DeviceConfig crn : crnList) { |
| | | MessageQueue.init(SlaveType.Crn, crn.getDeviceNo()); |
| | | } |
| | | // åå§åæåæºmq |
| | | List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Lift))); |
| | | for (DeviceConfig lift : liftList) { |
| | | MessageQueue.init(SlaveType.Lift, lift.getDeviceNo()); |
| | | // åå§åRgvå°è½¦mq |
| | | List<DeviceConfig> rgvList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Rgv))); |
| | | for (DeviceConfig rgv : rgvList) { |
| | | MessageQueue.init(SlaveType.Rgv, rgv.getDeviceNo()); |
| | | } |
| | | // åå§åååç©¿æ¢è½¦mq |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig shuttle : shuttleList) { |
| | | MessageQueue.init(SlaveType.Shuttle, shuttle.getDeviceNo()); |
| | | // åå§åè¾é线mq |
| | | List<DeviceConfig> devpList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Devp))); |
| | | for (DeviceConfig devp : devpList) { |
| | | MessageQueue.init(SlaveType.Devp, devp.getDeviceNo()); |
| | | } |
| | | |
| | | MessageQueue.init(SlaveType.TrafficControl, 1); |
| | | // åå§åæ¡ç æ«æä»ªmq |
| | | List<DeviceConfig> barcodeList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Barcode))); |
| | | for (DeviceConfig barcode : barcodeList) { |
| | | MessageQueue.init(SlaveType.Barcode, barcode.getDeviceNo()); |
| | | } |
| | | // åå§åLedç¯mq |
| | | List<DeviceConfig> ledList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Led))); |
| | | for (DeviceConfig led : ledList) { |
| | | MessageQueue.init(SlaveType.Led, led.getDeviceNo()); |
| | | } |
| | | } |
| | | |
| | | private void initThread(){ |
| | | List<DeviceConfig> allDevices = new ArrayList<>(); |
| | | List<DeviceConfig> fakeDevices = new ArrayList<>(); |
| | | // News.info("åå§åå åæº........................................................"); |
| | | // List<DeviceConfig> crnList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | // .eq("device_type", String.valueOf(SlaveType.Crn))); |
| | | // for (DeviceConfig deviceConfig : crnList) { |
| | | // BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>().eq("lift_no", deviceConfig.getDeviceNo())); |
| | | // if (basLift == null) { |
| | | // throw new CoolException("æªé
置货åæåæºæ°æ®"); |
| | | // } |
| | | // |
| | | // ThreadHandler thread = null; |
| | | // if (deviceConfig.getThreadImpl().equals("ZyForkLiftThread")) { |
| | | // thread = new ZyForkLiftThread(deviceConfig, basLift.getStationList$(), redisUtil); |
| | | // } else { |
| | | // throw new CoolException("æªç¥ç线ç¨å®ç°"); |
| | | // } |
| | | // |
| | | // new Thread(thread).start(); |
| | | // SlaveConnection.put(SlaveType.ForkLift, deviceConfig.getDeviceNo(), thread); |
| | | // |
| | | // if (deviceConfig.getFake() == 1) { |
| | | // fakeDevices.add(deviceConfig); |
| | | // }else { |
| | | // allDevices.add(deviceConfig); |
| | | // } |
| | | // } |
| | | |
| | | // åå§åè´§åæåæº |
| | | News.info("åå§åè´§åæåæº........................................................"); |
| | | List<DeviceConfig> forkLiftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.ForkLift))); |
| | | for (DeviceConfig deviceConfig : forkLiftList) { |
| | | BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>().eq("lift_no", deviceConfig.getDeviceNo())); |
| | | if (basLift == null) { |
| | | throw new CoolException("æªé
置货åæåæºæ°æ®"); |
| | | } |
| | | |
| | | ThreadHandler thread = null; |
| | | if (deviceConfig.getThreadImpl().equals("ZyForkLiftThread")) { |
| | | thread = new ZyForkLiftThread(deviceConfig, basLift.getStationList$(), redisUtil); |
| | | } else { |
| | | throw new CoolException("æªç¥ç线ç¨å®ç°"); |
| | | } |
| | | |
| | | new Thread(thread).start(); |
| | | SlaveConnection.put(SlaveType.ForkLift, deviceConfig.getDeviceNo(), thread); |
| | | |
| | | if (deviceConfig.getFake() == 1) { |
| | | fakeDevices.add(deviceConfig); |
| | | }else { |
| | | allDevices.add(deviceConfig); |
| | | } |
| | | } |
| | | |
| | | // åå§åæåæº |
| | | News.info("åå§åæåæº........................................................"); |
| | | List<DeviceConfig> liftList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Lift))); |
| | | for (DeviceConfig deviceConfig : liftList) { |
| | | BasLift basLift = basLiftService.selectOne(new EntityWrapper<BasLift>().eq("lift_no", deviceConfig.getDeviceNo())); |
| | | if (basLift == null) { |
| | | throw new CoolException("æªé
ç½®æåæºæ°æ®"); |
| | | } |
| | | |
| | | ThreadHandler thread = null; |
| | | if (deviceConfig.getThreadImpl().equals("NyLiftThread")) { |
| | | thread = new NyLiftThread(deviceConfig, basLift.getPoint$(), basLift.getStationList$(), redisUtil); |
| | | } else { |
| | | throw new CoolException("æªç¥ç线ç¨å®ç°"); |
| | | } |
| | | |
| | | new Thread(thread).start(); |
| | | SlaveConnection.put(SlaveType.Lift, deviceConfig.getDeviceNo(), thread); |
| | | |
| | | String locNo = Utils.getLocNo(basLift.getPoint$().getRow(), basLift.getPoint$().getBay(), 1); |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locNo)); |
| | | JSONObject point = JSON.parseObject(locMast.getQrCodeValue()); |
| | | if (point == null) { |
| | | continue; |
| | | } |
| | | deviceConfig.setOtherData(point.getInteger("x") + "-" + point.getInteger("y")); |
| | | if (deviceConfig.getFake() == 1) { |
| | | fakeDevices.add(deviceConfig); |
| | | }else { |
| | | allDevices.add(deviceConfig); |
| | | } |
| | | } |
| | | |
| | | // åå§åååç©¿æ¢è½¦ |
| | | News.info("åå§åååç©¿æ¢è½¦......................................................"); |
| | | List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | for (DeviceConfig deviceConfig : shuttleList) { |
| | | ThreadHandler thread = null; |
| | | if (deviceConfig.getThreadImpl().equals("NyShuttleThread")) { |
| | | thread = new NyShuttleThread(deviceConfig, redisUtil); |
| | | } else { |
| | | throw new CoolException("æªç¥ç线ç¨å®ç°"); |
| | | } |
| | | |
| | | new Thread(thread).start(); |
| | | SlaveConnection.put(SlaveType.Shuttle, deviceConfig.getDeviceNo(), thread); |
| | | |
| | | if (deviceConfig.getFake() == 1) { |
| | | fakeDevices.add(deviceConfig); |
| | | }else { |
| | | allDevices.add(deviceConfig); |
| | | } |
| | | } |
| | | |
| | | |
| | | //设å¤åå§å宿¯ |
| | | deviceMsgUtils.sendDeviceConfig(JSON.toJSONString(allDevices)); |
| | | deviceMsgUtils.sendFakeDeviceConfig(JSON.toJSONString(fakeDevices)); |
| | | |
| | | TrafficControlThread trafficControlThread = new TrafficControlImplThread(redisUtil); |
| | | new Thread(trafficControlThread).start(); |
| | | SlaveConnection.put(SlaveType.TrafficControl, 1, trafficControlThread); |
| | | |
| | | ShuttleExecuteScheduler shuttleExecuteScheduler = new ShuttleExecuteScheduler(shuttleAction, deviceConfigService, redisUtil, threadControlCount); |
| | | new Thread(shuttleExecuteScheduler).start(); |
| | | } |
| | | |
| | | |
| | |
| | | import java.util.Map; |
| | | import java.util.concurrent.ConcurrentHashMap; |
| | | import java.util.concurrent.ConcurrentLinkedQueue; |
| | | import java.util.concurrent.LinkedBlockingQueue; |
| | | |
| | | /** |
| | | * æ¶æ¯éå |
| | |
| | | */ |
| | | public class MessageQueue { |
| | | |
| | | //ååç©¿æ¢è½¦mqäº¤æ¢æº |
| | | private static final Map<Integer, ConcurrentLinkedQueue<Task>> SHUTTLE_EXCHANGE = new ConcurrentHashMap<>(); |
| | | //æåæºmqäº¤æ¢æº |
| | | private static final Map<Integer, ConcurrentLinkedQueue<Task>> LIFT_EXCHANGE = new ConcurrentHashMap<>(); |
| | | //è´§åæåæºmqäº¤æ¢æº |
| | | private static final Map<Integer, ConcurrentLinkedQueue<Task>> FORK_LIFT_EXCHANGE = new ConcurrentHashMap<>(); |
| | | //è´§åæåæºMaster mqäº¤æ¢æº |
| | | private static final Map<Integer, ConcurrentLinkedQueue<Task>> FORK_LIFT_MASTER_EXCHANGE = new ConcurrentHashMap<>(); |
| | | //Traffic Control mqäº¤æ¢æº |
| | | private static final Map<Integer, ConcurrentLinkedQueue<Task>> TRAFFIC_CONTROL_EXCHANGE = new ConcurrentHashMap<>(); |
| | | // å åæºmqäº¤æ¢æº |
| | | private static final Map<Integer, LinkedBlockingQueue<Task>> CRN_EXCHANGE = new ConcurrentHashMap<>(); |
| | | // è¾é线mqäº¤æ¢æº |
| | | private static final Map<Integer, ConcurrentLinkedQueue<Task>> DEVP_EXCHANGE = new ConcurrentHashMap<>(); |
| | | // æ¡ç æ«æä»ªmqäº¤æ¢æº |
| | | private static final Map<Integer, ConcurrentLinkedQueue<Task>> BARCODE_EXCHANGE = new ConcurrentHashMap<>(); |
| | | // Ledç¯ mqäº¤æ¢æº |
| | | private static final Map<Integer, LinkedBlockingQueue<Task>> LED_EXCHANGE = new ConcurrentHashMap<>(); |
| | | // ç£
ç§°mqäº¤æ¢æº |
| | | private static final Map<Integer, ConcurrentLinkedQueue<Task>> SCALE_EXCHANGE = new ConcurrentHashMap<>(); |
| | | // RGVmqäº¤æ¢æº |
| | | private static final Map<Integer, LinkedBlockingQueue<Task>> RGV_EXCHANGE = new ConcurrentHashMap<>(); |
| | | |
| | | /** |
| | | * mq äº¤æ¢æºåå§å |
| | | */ |
| | | public static void init(SlaveType type, Integer id) { |
| | | switch (type) { |
| | | case Shuttle: |
| | | SHUTTLE_EXCHANGE.put(id, new ConcurrentLinkedQueue<>()); |
| | | case Crn: |
| | | CRN_EXCHANGE.put(id, new LinkedBlockingQueue<>(1)); |
| | | break; |
| | | case ForkLift: |
| | | FORK_LIFT_EXCHANGE.put(id, new ConcurrentLinkedQueue<>()); |
| | | case Rgv: |
| | | RGV_EXCHANGE.put(id, new LinkedBlockingQueue<>(1)); |
| | | break; |
| | | case ForkLiftMaster: |
| | | FORK_LIFT_MASTER_EXCHANGE.put(id, new ConcurrentLinkedQueue<>()); |
| | | case Devp: |
| | | DEVP_EXCHANGE.put(id, new ConcurrentLinkedQueue<>()); |
| | | break; |
| | | case Lift: |
| | | LIFT_EXCHANGE.put(id, new ConcurrentLinkedQueue<>()); |
| | | case Barcode: |
| | | BARCODE_EXCHANGE.put(id, new ConcurrentLinkedQueue<>()); |
| | | break; |
| | | case TrafficControl: |
| | | TRAFFIC_CONTROL_EXCHANGE.put(id, new ConcurrentLinkedQueue<>()); |
| | | case Led: |
| | | LED_EXCHANGE.put(id, new LinkedBlockingQueue<>(1)); |
| | | break; |
| | | case Scale: |
| | | SCALE_EXCHANGE.put(id, new ConcurrentLinkedQueue<>()); |
| | | break; |
| | | default: |
| | | break; |
| | |
| | | */ |
| | | public static boolean offer(SlaveType type, Integer id, Task task) { |
| | | switch (type) { |
| | | case Shuttle: |
| | | return SHUTTLE_EXCHANGE.get(id).offer(task); |
| | | case ForkLift: |
| | | return FORK_LIFT_EXCHANGE.get(id).offer(task); |
| | | case ForkLiftMaster: |
| | | return FORK_LIFT_MASTER_EXCHANGE.get(id).offer(task); |
| | | case Lift: |
| | | return LIFT_EXCHANGE.get(id).offer(task); |
| | | case TrafficControl: |
| | | return TRAFFIC_CONTROL_EXCHANGE.get(id).offer(task); |
| | | case Crn: |
| | | return CRN_EXCHANGE.get(id).offer(task); |
| | | case Rgv: |
| | | return RGV_EXCHANGE.get(id).offer(task); |
| | | case Devp: |
| | | return DEVP_EXCHANGE.get(id).offer(task); |
| | | case Barcode: |
| | | return BARCODE_EXCHANGE.get(id).offer(task); |
| | | case Led: |
| | | return LED_EXCHANGE.get(id).offer(task); |
| | | case Scale: |
| | | return SCALE_EXCHANGE.get(id).offer(task); |
| | | default: |
| | | return false; |
| | | } |
| | |
| | | */ |
| | | public static Task poll(SlaveType type, Integer id) { |
| | | switch (type) { |
| | | case Shuttle: |
| | | return SHUTTLE_EXCHANGE.get(id).poll(); |
| | | case ForkLift: |
| | | return FORK_LIFT_EXCHANGE.get(id).poll(); |
| | | case ForkLiftMaster: |
| | | return FORK_LIFT_MASTER_EXCHANGE.get(id).poll(); |
| | | case Lift: |
| | | return LIFT_EXCHANGE.get(id).poll(); |
| | | case TrafficControl: |
| | | return TRAFFIC_CONTROL_EXCHANGE.get(id).poll(); |
| | | case Crn: |
| | | return CRN_EXCHANGE.get(id).poll(); |
| | | case Rgv: |
| | | return RGV_EXCHANGE.get(id).poll(); |
| | | case Devp: |
| | | return DEVP_EXCHANGE.get(id).poll(); |
| | | case Barcode: |
| | | return BARCODE_EXCHANGE.get(id).poll(); |
| | | case Led: |
| | | return LED_EXCHANGE.get(id).poll(); |
| | | case Scale: |
| | | return SCALE_EXCHANGE.get(id).poll(); |
| | | default: |
| | | return null; |
| | | } |
| | |
| | | */ |
| | | public static Task peek(SlaveType type, Integer id) { |
| | | switch (type) { |
| | | case Shuttle: |
| | | return SHUTTLE_EXCHANGE.get(id).peek(); |
| | | case ForkLift: |
| | | return FORK_LIFT_EXCHANGE.get(id).peek(); |
| | | case ForkLiftMaster: |
| | | return FORK_LIFT_MASTER_EXCHANGE.get(id).peek(); |
| | | case Lift: |
| | | return LIFT_EXCHANGE.get(id).peek(); |
| | | case TrafficControl: |
| | | return TRAFFIC_CONTROL_EXCHANGE.get(id).peek(); |
| | | case Crn: |
| | | return CRN_EXCHANGE.get(id).peek(); |
| | | case Rgv: |
| | | return RGV_EXCHANGE.get(id).peek(); |
| | | case Devp: |
| | | return DEVP_EXCHANGE.get(id).peek(); |
| | | case Barcode: |
| | | return BARCODE_EXCHANGE.get(id).peek(); |
| | | case Led: |
| | | return LED_EXCHANGE.get(id).peek(); |
| | | case Scale: |
| | | return SCALE_EXCHANGE.get(id).peek(); |
| | | default: |
| | | return null; |
| | | } |
| | |
| | | |
| | | public static void clear(SlaveType type, Integer id){ |
| | | switch (type) { |
| | | case Shuttle: |
| | | SHUTTLE_EXCHANGE.get(id).clear(); |
| | | case Crn: |
| | | CRN_EXCHANGE.get(id).clear(); |
| | | break; |
| | | case ForkLift: |
| | | FORK_LIFT_EXCHANGE.get(id).clear(); |
| | | case Rgv: |
| | | RGV_EXCHANGE.get(id).clear(); |
| | | break; |
| | | case ForkLiftMaster: |
| | | FORK_LIFT_MASTER_EXCHANGE.get(id).clear(); |
| | | case Devp: |
| | | DEVP_EXCHANGE.get(id).clear(); |
| | | break; |
| | | case Lift: |
| | | LIFT_EXCHANGE.get(id).clear(); |
| | | case Barcode: |
| | | BARCODE_EXCHANGE.get(id).clear(); |
| | | break; |
| | | case TrafficControl: |
| | | TRAFFIC_CONTROL_EXCHANGE.get(id).clear(); |
| | | case Led: |
| | | LED_EXCHANGE.get(id).clear(); |
| | | break; |
| | | case Scale: |
| | | SCALE_EXCHANGE.get(id).clear(); |
| | | break; |
| | | default: |
| | | break; |
| New file |
| | |
| | | package com.zy.core.enums; |
| | | |
| | | public enum CrnForkPosType { |
| | | |
| | | NONE(-1, "ä¸å¨å®ä½"), // è´§ååä½ |
| | | HOME(0, "è´§ååä½"), // è´§ååä½ |
| | | LEFT(1, "è´§åå¨å·¦ä¾§"), // è´§åå¨å·¦ä¾§ |
| | | RIGHT(2, "è´§åå¨å³ä¾§"), // è´§åå¨å³ä¾§ |
| | | _LEFT(3, "è´§åå¨å·¦ä¾§è¿"), // è´§åå¨å³ä¾§è¿ |
| | | _RIGHT(4, "è´§åå¨å³ä¾§è¿"), // è´§åå¨å³ä¾§è¿ |
| | | ; |
| | | |
| | | public Integer id; |
| | | public String desc; |
| | | CrnForkPosType(Integer id, String desc) { |
| | | this.id = id; |
| | | this.desc = desc; |
| | | } |
| | | |
| | | public static CrnForkPosType get(Integer id) { |
| | | if (null == id) { |
| | | return null; |
| | | } |
| | | for (CrnForkPosType type : CrnForkPosType.values()) { |
| | | if (type.id.equals(id)) { |
| | | return type; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static CrnForkPosType get(CrnForkPosType type) { |
| | | if (null == type) { |
| | | return null; |
| | | } |
| | | for (CrnForkPosType crnForkPosType : CrnForkPosType.values()) { |
| | | if (crnForkPosType == type) { |
| | | return crnForkPosType; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
| New file |
| | |
| | | package com.zy.core.enums; |
| | | |
| | | public enum CrnLiftPosType { |
| | | |
| | | ERROR(-1, "æªç¥"), // ä¸å¨å®ä½ |
| | | NONE(0, "ä¸å¨å®ä½"), // ä¸å¨å®ä½ |
| | | _DOWN(1, "åæ·±ä½ä½"), // |
| | | DOWN(2, "åæ·±ä½ä½"), // |
| | | _UP(3, "åæ·±é«ä½"), // |
| | | UP(4, "åæ·±é«ä½"), // |
| | | ; |
| | | |
| | | public Integer id; |
| | | public String desc; |
| | | CrnLiftPosType(Integer id, String desc) { |
| | | this.id = id; |
| | | this.desc = desc; |
| | | } |
| | | |
| | | public static CrnLiftPosType get(Integer id) { |
| | | if (null == id) { |
| | | return null; |
| | | } |
| | | for (CrnLiftPosType type : CrnLiftPosType.values()) { |
| | | if (type.id.equals(id)) { |
| | | return type; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static CrnLiftPosType get(CrnLiftPosType type) { |
| | | if (null == type) { |
| | | return null; |
| | | } |
| | | for (CrnLiftPosType crnLiftPosType : CrnLiftPosType.values()) { |
| | | if (crnLiftPosType == type) { |
| | | return crnLiftPosType; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.core.enums; |
| | | |
| | | public enum CrnModeType { |
| | | |
| | | NONE(-1, "离线"), |
| | | STOP(0, "ç»´ä¿®"), |
| | | HAND(1, "æå¨"), |
| | | HALF_AUTO(2, "åèªå¨"), |
| | | AUTO(3, "èªå¨"), |
| | | ; |
| | | |
| | | public Integer id; |
| | | public String desc; |
| | | CrnModeType(Integer id, String desc) { |
| | | this.id = id; |
| | | this.desc = desc; |
| | | } |
| | | |
| | | public static CrnModeType get(Integer id) { |
| | | if (null == id) { |
| | | return null; |
| | | } |
| | | for (CrnModeType type : CrnModeType.values()) { |
| | | if (type.id.equals(id)) { |
| | | return type; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static CrnModeType get(CrnModeType type) { |
| | | if (null == type) { |
| | | return null; |
| | | } |
| | | for (CrnModeType crnModeType : CrnModeType.values()) { |
| | | if (crnModeType == type) { |
| | | return crnModeType; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
| New file |
| | |
| | | package com.zy.core.enums; |
| | | |
| | | public enum CrnStatusType { |
| | | |
| | | NONE(-1, "离线"), |
| | | IDLE(0, "空é²"), |
| | | FETCH_MOVING(1, "åè´§è¡èµ°"), |
| | | FETCH_WAITING(2, "åè´§çå¾
"), |
| | | FETCHING(3, "åè´§ä¸"), |
| | | PUT_MOVING(4, "æ¾è´§èµ°è¡"), |
| | | PUT_WAITING(5, "æ¾è´§çå¾
"), |
| | | PUTTING(6, "æ¾è´§ä¸"), |
| | | ORIGIN_GO(7, "ååç¹"), |
| | | ORIGIN_BACK(8, "åååç¹"), |
| | | MOVING(9, "èµ°è¡ä¸"), |
| | | WAITING(90, "ä»»å¡å®æçå¾
WCS确认"), |
| | | PAUSE(11, "任塿å"), |
| | | SOS(99, "æ¥è¦"), |
| | | UNKNOW(100, "å
¶ä»"), |
| | | ; |
| | | |
| | | public Integer id; |
| | | public String desc; |
| | | CrnStatusType(Integer id, String desc) { |
| | | this.id = id; |
| | | this.desc = desc; |
| | | } |
| | | |
| | | public static CrnStatusType get(Integer id) { |
| | | if (null == id) { |
| | | return null; |
| | | } |
| | | for (CrnStatusType type : CrnStatusType.values()) { |
| | | if (type.id.equals(id)) { |
| | | return type; |
| | | } |
| | | } |
| | | return NONE; |
| | | } |
| | | |
| | | public static CrnStatusType get(CrnStatusType type) { |
| | | if (null == type) { |
| | | return null; |
| | | } |
| | | for (CrnStatusType crnStatusType : CrnStatusType.values()) { |
| | | if (crnStatusType == type) { |
| | | return crnStatusType; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
| | |
| | | LIFT_WORK_FLAG("lift_wrk_no_"), |
| | | LIFT_FLAG("lift_"), |
| | | |
| | | MAP("realtimeBasMap_"), |
| | | BASIC_MAP("basicMap_"), |
| | | QUEUE_SHUTTLE("queue_shuttle_"), |
| | | QUEUE_FORK_LIFT("queue_fork_lift_"), |
| | | QUEUE_CRN("queue_crn_"), |
| | | QUEUE_DEVP("queue_devp_"), |
| | | QUEUE_RGV("queue_rgv_"), |
| | | QUEUE_TASK("queue_task_"), |
| | | FORK_LIFT_PUT_COMPLETE("fork_lift_put_complete_"), |
| | | OUT_TASK_PREVIEW_DISPATCH_FORKLIFT("out_task_preview_dispatch_forklift_"), |
| | | |
| | | //å°è½¦éæ°è§åè·¯å¾é¢ç |
| | | SHUTTLE_RESTART_CALC_PATH("shuttle_restart_calc_path_"), |
| | | //å°è½¦æ´æ°æ¥¼å±åæ é¢ç |
| | | SHUTTLE_UPDATE_LOCATION("shuttle_update_location_"), |
| | | |
| | | //æåæºç§»å¨è³å°è½¦å±é¢ç |
| | | LIFT_MOVE_TO_SHUTTLE_LIMIT("lift_move_to_shuttle_LIMIT_"), |
| | | //ä»»å¡è¿è¡éå¶ |
| | | TASK_RUN_LIMIT("task_run_limit_"), |
| | | |
| | | //äº¤ç®¡ä¿¡æ¯ |
| | | TRAFFIC_CONTROL_MAP("traffic_control_map"), |
| | | TRAFFIC_CONTROL_APPLY("traffic_control_apply_"), |
| | | TRAFFIC_CONTROL_SUCCESS_APPLY("traffic_control_success_apply_"), |
| | | TRAFFIC_CONTROL_REPORT_LIST("traffic_control_report_list_"), |
| | | TRAFFIC_CONTROL_CANCEL_LIST("traffic_control_cancel_list_"), |
| | | TRAFFIC_CONTROL_LOCK_APPLY("traffic_control_lock_apply_"), |
| | | TRAFFIC_CONTROL_SHUTTLE_APPLY_COUNT("traffic_control_shuttle_apply_count_"), |
| | | TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK("traffic_control_shuttle_obstacle_cancel_task_"), |
| | | TRAFFIC_CONTROL_SHUTTLE_OBSTACLE_CANCEL_TASK_LOCK("traffic_control_shuttle_obstacle_cancel_task_lock_"), |
| | | |
| | | //å°å¾éå®èç¹ |
| | | LOCK_MAP_NODES("lock_map_nodes_"), |
| | | |
| | | //è®¾å¤æ¶æ¯KEY |
| | | DEVICE_SHUTTLE_MSG_KEY_("deviceShuttleMsgKey_"), |
| | | DEVICE_FORK_LIFT_MSG_KEY_("deviceForkLiftMsgKey_"), |
| | | DEVICE_LIFT_MSG_KEY_("deviceLiftMsgKey_"), |
| | | |
| | | //è®¾å¤æä»¤æ¶æ¯KEY |
| | | DEVICE_SHUTTLE_COMMAND_MSG_KEY("deviceShuttleCommandMsgKey_"), |
| | | DEVICE_FORK_LIFT_COMMAND_MSG_KEY("deviceForkLiftCommandMsgKey_"), |
| | | DEVICE_LIFT_COMMAND_MSG_KEY("deviceLiftCommandMsgKey_"), |
| | | |
| | | //设å¤é
ç½®æä»¶ |
| | | DEVICE_CONFIG("deviceConfig"), |
| | | //èæè®¾å¤é
ç½®æä»¶ |
| | | FAKE_DEVICE_CONFIG("fakeDeviceConfig"), |
| | | |
| | | LOG_LIMIT("log_limit_"), |
| | | |
| | | POINT_MAP("point_map"), |
| | | LOC_MAP("loc_map"), |
| | | SHUTTLE_SPEED_MAP("shuttle_speed_map"), |
| | | SYSTEM_CONFIG_MAP("system_config_map"), |
| | | ; |
| | | |
| | |
| | | |
| | | public enum SlaveType { |
| | | |
| | | Shuttle, |
| | | Lift, |
| | | ForkLift, |
| | | ForkLiftMaster, |
| | | TrafficControl, |
| | | Crn, |
| | | Devp, |
| | | Barcode, |
| | | Led, |
| | | Scale, |
| | | Rgv |
| | | ; |
| | | |
| | | public static SlaveType findInstance(String s){ |
| New file |
| | |
| | | package com.zy.core.model.protocol; |
| | | |
| | | import com.zy.core.enums.CrnForkPosType; |
| | | import com.zy.core.enums.CrnLiftPosType; |
| | | import com.zy.core.enums.CrnModeType; |
| | | import com.zy.core.enums.CrnStatusType; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/8/7 |
| | | */ |
| | | @Data |
| | | public class CrnProtocol { |
| | | |
| | | private Integer crnNo; |
| | | |
| | | /** |
| | | * 1 = æå¨æ¨¡å¼ |
| | | * 2 = èªå¨æ¨¡å¼ |
| | | * 3 = çµèæ¨¡å¼ |
| | | */ |
| | | public Integer mode; |
| | | |
| | | public CrnModeType modeType; |
| | | |
| | | /** |
| | | * 1 = æ¥å |
| | | */ |
| | | public Integer eStop; |
| | | |
| | | /** |
| | | * å¼å¸¸ç |
| | | */ |
| | | public Integer alarm; |
| | | |
| | | /** |
| | | * ä»»å¡å· |
| | | */ |
| | | public Integer taskNo = 0; |
| | | |
| | | /** |
| | | * å åæºå½åç¶æ |
| | | * 0ï¼ç©ºé²ï¼æ ä»»å¡ |
| | | * 1ï¼åè´§å®ä½ä¸ |
| | | * 2ï¼åè´§ä¸ |
| | | * 3ï¼åè´§å®æï¼æ¾è´§å®ä½ä¸ |
| | | * 4ï¼æ¾è´§ä¸ |
| | | * 5ï¼ååç¹ä¸ |
| | | * 6ï¼ååç¹ |
| | | * 7ï¼åºä½ç§»ä½ |
| | | * 90ï¼ä»»å¡å®æçå¾
WCS确认 |
| | | * 99ï¼æ¥è¦ |
| | | */ |
| | | public Integer status; |
| | | |
| | | /** |
| | | * ç¶ææä¸¾ |
| | | */ |
| | | public CrnStatusType statusType; |
| | | |
| | | /** |
| | | * å åæºå½ååå· |
| | | */ |
| | | public Integer bay; |
| | | |
| | | /** |
| | | * å åæºå½åå±å· |
| | | */ |
| | | public Integer level; |
| | | |
| | | /** |
| | | * å½åè´§åä½ç½® |
| | | * 0 = è´§ååä½ |
| | | * 1 = è´§åå¨å·¦ä¾§ |
| | | * 2 = è´§åå¨å³ä¾§ |
| | | */ |
| | | public Integer forkPos; |
| | | |
| | | public CrnForkPosType forkPosType; |
| | | |
| | | /** |
| | | * å½å载货å°ä½ç½® |
| | | * 0 = ä¸å®ä½ |
| | | * 1 = ä¸å®ä½ |
| | | */ |
| | | public Integer liftPos; |
| | | |
| | | public CrnLiftPosType liftPosType; |
| | | |
| | | /** |
| | | * èµ°è¡å¨å®ä½ |
| | | * 0 = å¨å®ä½ |
| | | * 1 = ä¸å¨å®ä½ |
| | | */ |
| | | public Integer walkPos; |
| | | |
| | | /** |
| | | * è½½è´§å°æç© |
| | | */ |
| | | public Integer loaded; |
| | | |
| | | private Integer temp1; |
| | | |
| | | private Integer temp2; |
| | | |
| | | private Integer temp3; |
| | | |
| | | private Integer temp4; |
| | | |
| | | /** |
| | | * Xè¡èµ°çº¿é度m/min |
| | | */ |
| | | private Float xSpeed; |
| | | |
| | | /** |
| | | * Yè¡èµ°çº¿é度m/min |
| | | */ |
| | | private Float ySpeed; |
| | | |
| | | /** |
| | | * Zè¡èµ°çº¿é度m/min |
| | | */ |
| | | private Float zSpeed; |
| | | |
| | | /** |
| | | * å åæºç´¯è®¡èµ°è¡è·ç¦»km |
| | | */ |
| | | public Float xDistance; |
| | | |
| | | /** |
| | | * å åæºç´¯è®¡åéè·ç¦»km |
| | | */ |
| | | public Float yDistance; |
| | | |
| | | /** |
| | | * å åæºç´¯è®¡èµ°è¡æ¶é¿h |
| | | */ |
| | | public Float xDuration; |
| | | |
| | | /** |
| | | * å åæºç´¯è®¡åéæ¶é¿h |
| | | */ |
| | | public Float yDuration; |
| | | |
| | | /** |
| | | * æè¿ä¸æ¬¡å
¥åºåºç±»å |
| | | * I:å
¥åº |
| | | * O:åºåº |
| | | */ |
| | | private String lastIo = "I"; |
| | | |
| | | /** |
| | | * å åæºæå¨å··é |
| | | */ |
| | | private Integer crnLane = 1; |
| | | |
| | | /** |
| | | * æ¥å¿ééæ¶é´ |
| | | */ |
| | | private Long deviceDataLog = System.currentTimeMillis(); |
| | | |
| | | /** |
| | | * ä¸ä¸æ¬¡æä»¤ä¸åæ¶é´ |
| | | */ |
| | | private Long lastCommandTime = System.currentTimeMillis(); |
| | | |
| | | public void setMode(Integer mode) { |
| | | this.mode = mode; |
| | | this.modeType = CrnModeType.get(mode); |
| | | } |
| | | |
| | | public void setMode(CrnModeType type) { |
| | | this.modeType = type; |
| | | this.mode = CrnModeType.get(type).id; |
| | | } |
| | | |
| | | public void setForkPos(Integer forkPos) { |
| | | this.forkPos = forkPos; |
| | | this.forkPosType = CrnForkPosType.get(forkPos); |
| | | } |
| | | |
| | | public void setForkPos(CrnForkPosType type) { |
| | | this.forkPosType = type; |
| | | this.forkPos = CrnForkPosType.get(type).id; |
| | | } |
| | | |
| | | public void setLiftPos(Integer liftPos) { |
| | | this.liftPos = liftPos; |
| | | this.liftPosType = CrnLiftPosType.get(liftPos); |
| | | } |
| | | |
| | | public void setLiftPos(CrnLiftPosType type) { |
| | | this.liftPosType = type; |
| | | this.liftPos = CrnLiftPosType.get(type).id; |
| | | } |
| | | |
| | | public void setStatus(Integer status){ |
| | | this.status = status; |
| | | this.statusType = CrnStatusType.get(status); |
| | | } |
| | | |
| | | public void setStatus(CrnStatusType type){ |
| | | this.statusType = type; |
| | | this.status = CrnStatusType.get(type).id; |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.core.task; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.zy.asrs.entity.DeviceConfig; |
| | | import com.zy.asrs.entity.DeviceDataLog; |
| | | import com.zy.asrs.service.DeviceConfigService; |
| | | import com.zy.asrs.service.DeviceDataLogService; |
| | | import com.zy.core.cache.SlaveConnection; |
| | | import com.zy.core.enums.SlaveType; |
| | | import com.zy.core.thread.ShuttleThread; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | | @Component |
| | | public class DeviceLogScheduler { |
| | | |
| | | @Autowired |
| | | private DeviceConfigService deviceConfigService; |
| | | @Autowired |
| | | private DeviceDataLogService deviceDataLogService; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | public void execute() { |
| | | // List<DeviceConfig> shuttleList = deviceConfigService.selectList(new EntityWrapper<DeviceConfig>() |
| | | // .eq("device_type", String.valueOf(SlaveType.Shuttle))); |
| | | // for (DeviceConfig deviceConfig : shuttleList) { |
| | | // ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, deviceConfig.getDeviceNo()); |
| | | // if(shuttleThread == null){ |
| | | // continue; |
| | | // } |
| | | // |
| | | // ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | // if (shuttleProtocol == null) { |
| | | // continue; |
| | | // } |
| | | // |
| | | // if (System.currentTimeMillis() - shuttleProtocol.getDeviceDataLog() > 500) { |
| | | // if (shuttleThread.getOriginDeviceData() != null) { |
| | | // //ééæ¶é´è¶
è¿5sï¼ä¿å䏿¬¡æ°æ®è®°å½ |
| | | // |
| | | // //离线ä¸åæ¥å¿åå¨ |
| | | // if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE)) { |
| | | // continue; |
| | | // } |
| | | // |
| | | // //ä¿åæ°æ®è®°å½ |
| | | // DeviceDataLog deviceDataLog = new DeviceDataLog(); |
| | | // deviceDataLog.setOriginData(JSON.toJSONString(shuttleThread.getOriginDeviceData())); |
| | | // deviceDataLog.setWcsData(JSON.toJSONString(shuttleProtocol)); |
| | | // deviceDataLog.setType(String.valueOf(SlaveType.Shuttle)); |
| | | // deviceDataLog.setDeviceNo(deviceConfig.getDeviceNo()); |
| | | // deviceDataLog.setCreateTime(new Date()); |
| | | // deviceDataLogService.insert(deviceDataLog); |
| | | // |
| | | // //æ´æ°ééæ¶é´ |
| | | // shuttleThread.updateDeviceDataLogTime(System.currentTimeMillis()); |
| | | // } |
| | | // } |
| | | // } |
| | | } |
| | | |
| | | } |
| New file |
| | |
| | | package com.zy.core.thread; |
| | | |
| | | import com.zy.core.ThreadHandler; |
| | | import com.zy.core.model.protocol.CrnProtocol; |
| | | |
| | | public interface CrnThread extends ThreadHandler { |
| | | |
| | | CrnProtocol getCrnProtocol(); |
| | | |
| | | } |
| | |
| | | package com.zy.core.thread; |
| | | |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.zy.common.ExecuteSupport; |
| | | import com.zy.common.model.NavigateNode; |
| | | import com.zy.core.ThreadHandler; |
| | | import com.zy.core.enums.ShuttleProtocolStatusType; |
| | | import com.zy.core.enums.ShuttleRequireChargeType; |
| | | import com.zy.core.enums.ShuttleTaskNoType; |
| | | import com.zy.core.model.CommandResponse; |
| | | import com.zy.core.model.command.ShuttleCommand; |
| | | import com.zy.core.model.param.ShuttleMoveLocParam; |
| | | import com.zy.core.model.protocol.ShuttleProtocol; |
| | | |
| | | import java.util.List; |
| | | import com.zy.core.ThreadHandler; |
| | | |
| | | public interface ShuttleThread extends ThreadHandler { |
| | | |
| | | ShuttleProtocol getStatus(boolean clone);//è·åååç©¿æ¢è½¦ç¶æ |
| | | |
| | | ShuttleProtocol getStatus();//è·åååç©¿æ¢è½¦ç¶æ-é»è®¤clone |
| | | |
| | | Object getOriginDeviceData(); |
| | | |
| | | CommandResponse movePath(List<NavigateNode> nodes, Integer taskNo);//è·¯å¾ä¸å |
| | | |
| | | CommandResponse move(ShuttleCommand command);//ç§»å¨ |
| | | |
| | | CommandResponse lift(ShuttleCommand command);//é¡¶å |
| | | |
| | | CommandResponse charge(ShuttleCommand command);//å
çµå¼å
³ |
| | | |
| | | CommandResponse reset(ShuttleCommand command);//å¤ä½å¼å
³ |
| | | |
| | | CommandResponse updateLocation(ShuttleCommand command);//æ´æ°åæ |
| | | |
| | | boolean isIdle(); |
| | | |
| | | boolean isIdle(ExecuteSupport support);//æ¯å¦ç©ºé² |
| | | |
| | | boolean isDeviceIdle();//è®¾å¤æ¯å¦ç©ºé² |
| | | |
| | | boolean isDeviceIdle(ExecuteSupport support);//è®¾å¤æ¯å¦ç©ºé² |
| | | |
| | | ShuttleRequireChargeType isRequireCharge();//æ¯å¦æ»¡è¶³å
çµç¶æ |
| | | |
| | | boolean isCharging();//æ¯å¦å
çµä¸ |
| | | |
| | | boolean isChargingCompleted();//æ¯å¦å
çµå®æ |
| | | |
| | | boolean isFault();//æ¯å¦æ
é |
| | | |
| | | List<NavigateNode> getMoveAdvancePath();//è·åç©¿æ¢è½¦ä»»å¡è·¯å¾ |
| | | |
| | | int generateDeviceTaskNo(int taskNo, ShuttleTaskNoType type);//çæç¡¬ä»¶è®¾å¤å·¥ä½å· |
| | | |
| | | boolean setProtocolStatus(ShuttleProtocolStatusType status);//设置工ä½ç¶æ |
| | | |
| | | boolean setTaskNo(Integer taskNo);//设置工ä½å· |
| | | |
| | | boolean setSyncTaskNo(Integer taskNo);//设置工ä½å· |
| | | |
| | | boolean setPakMk(boolean pakMk);//设置æ è®° |
| | | |
| | | boolean enableMoveLoc(ShuttleMoveLocParam param, boolean enable); |
| | | |
| | | boolean requestWaiting(); |
| | | |
| | | boolean enableDemo(boolean enable);//æ¼ç¤ºæ¨¡å¼ |
| | | |
| | | boolean offerSystemMsg(String format, Object... arguments); |
| | | |
| | | boolean setTrafficControl(boolean enable, List<NavigateNode> nodeList); |
| | | |
| | | void updateDeviceDataLogTime(long time); |
| | | |
| | | JSONObject parseStatusToMsg(ShuttleProtocol shuttleProtocol); |
| | | |
| | | boolean restartCalcPath();//éæ°è§åè·¯å¾ |
| | | |
| | | //***************è·åå½ä»¤***************** |
| | | |
| | | ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes, Boolean shuttleDirectionReverse);//è·åç§»å¨å½ä»¤ |
| | | |
| | | ShuttleCommand getMoveLiftCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes, Boolean moveIn, Boolean shuttleDirectionReverse);//è·åç§»å¨å½ä»¤ |
| | | |
| | | ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift);//é¡¶åå½ä»¤ true=>é¡¶å false=>ä¸é |
| | | |
| | | ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge);//å
çµå¼å
³å½ä»¤ true=>å¼ false=>å
³ |
| | | |
| | | ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo);//è·åæ´æ°åæ å½ä»¤ |
| | | |
| | | } |
| | |
| | | package com.zy.core.thread.impl; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SpringUtils; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.zy.asrs.entity.BasShuttle; |
| | | import com.zy.asrs.entity.DeviceConfig; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.zy.asrs.service.BasShuttleService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.utils.Utils; |
| | | import com.zy.common.ExecuteSupport; |
| | | import com.zy.common.model.MapNode; |
| | | import com.zy.common.model.NavigateNode; |
| | | import com.zy.common.model.enums.NavigationMapType; |
| | | import com.zy.common.utils.NavigateMapData; |
| | | import com.zy.common.utils.NavigatePositionConvert; |
| | | import com.zy.common.utils.RedisUtil; |
| | | import com.zy.common.utils.ShuttleOperaUtils; |
| | | import com.zy.core.News; |
| | | import com.zy.core.action.ShuttleAction; |
| | | import com.zy.core.model.DeviceCommandMsgModel; |
| | | import com.zy.core.model.command.ShuttleAssignCommand; |
| | | import com.zy.core.utils.DeviceMsgUtils; |
| | | import com.zy.core.cache.OutputQueue; |
| | | import com.zy.core.enums.*; |
| | | import com.zy.core.model.CommandResponse; |
| | | import com.zy.core.model.DeviceMsgModel; |
| | | import com.zy.core.model.command.NyShuttleHttpCommand; |
| | | import com.zy.core.model.command.ShuttleCommand; |
| | | import com.zy.core.model.command.ShuttleRedisCommand; |
| | | import com.zy.core.model.param.ShuttleMoveLocParam; |
| | | import com.zy.core.model.protocol.ShuttleProtocol; |
| | | import com.zy.core.thread.ShuttleThread; |
| | | import com.zy.system.entity.Config; |
| | | import com.zy.system.service.ConfigService; |
| | | import lombok.Data; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import java.io.IOException; |
| | | import java.text.MessageFormat; |
| | | import java.util.*; |
| | | |
| | | @Slf4j |
| | | @SuppressWarnings("all") |
| | | public class NyShuttleThread implements ShuttleThread { |
| | | |
| | | private DeviceConfig deviceConfig; |
| | | private RedisUtil redisUtil; |
| | | private ShuttleProtocol shuttleProtocol; |
| | | private ShuttleAction shuttleAction = null; |
| | | |
| | | private static final boolean DEBUG = false;//è°è¯æ¨¡å¼ |
| | | |
| | | private List<JSONObject> socketReadResults = new ArrayList<>(); |
| | | private List<DeviceMsgModel> socketResults = new ArrayList<>(); |
| | | |
| | | private Long requestReadTime = System.currentTimeMillis(); |
| | | //åå§è®¾å¤æ°æ® |
| | | private Object originDeviceData; |
| | | |
| | | public NyShuttleThread(DeviceConfig deviceConfig, RedisUtil redisUtil) { |
| | | this.deviceConfig = deviceConfig; |
| | | this.redisUtil = redisUtil; |
| | | } |
| | | |
| | | @Override |
| | | public void run() { |
| | | News.info("{}å·åå车线ç¨å¯å¨", deviceConfig.getDeviceNo()); |
| | | |
| | | //设å¤è¯»å |
| | | Thread readThread = new Thread(() -> { |
| | | while (true) { |
| | | try { |
| | | listenMessageFromRedis(); |
| | | listenInit();//çå¬åå§åäºä»¶ |
| | | readStatus(); |
| | | Thread.sleep(100); |
| | | |
| | | // //å°è½¦ç©ºé²ä¸æè·åºç¨åº |
| | | // shuttleAction.moveLoc(deviceConfig.getDeviceNo()); |
| | | } catch (Exception e) { |
| | | log.error("ShuttleThread Fail", e); |
| | | } |
| | | } |
| | | }); |
| | | readThread.start(); |
| | | |
| | | // //è®¾å¤æ§è¡ |
| | | // Thread executeThread = new Thread(() -> { |
| | | // while (true) { |
| | | // try { |
| | | // if (shuttleAction == null) { |
| | | // try { |
| | | // shuttleAction = SpringUtils.getBean(ShuttleAction.class); |
| | | // }catch (Exception e){ |
| | | // } |
| | | // continue; |
| | | // } |
| | | // |
| | | // Object object = redisUtil.get(RedisKeyType.SHUTTLE_FLAG.key + deviceConfig.getDeviceNo()); |
| | | // if (object == null) { |
| | | // continue; |
| | | // } |
| | | // |
| | | // Integer taskNo = Integer.valueOf(String.valueOf(object)); |
| | | // if (taskNo != 0) { |
| | | // //åå¨ä»»å¡éè¦æ§è¡ |
| | | // boolean result = shuttleAction.executeWork(deviceConfig.getDeviceNo(), taskNo); |
| | | // } |
| | | // Thread.sleep(100); |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // } |
| | | // } |
| | | // }); |
| | | // executeThread.start(); |
| | | } |
| | | |
| | | private void listenMessageFromRedis() { |
| | | try { |
| | | DeviceMsgUtils deviceMsgUtils = null; |
| | | try { |
| | | deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class); |
| | | }catch (Exception e){ |
| | | |
| | | } |
| | | if (deviceMsgUtils == null) { |
| | | return; |
| | | } |
| | | DeviceMsgModel deviceMsg = deviceMsgUtils.getDeviceMsg(SlaveType.Shuttle, deviceConfig.getDeviceNo()); |
| | | if(deviceMsg == null){ |
| | | return; |
| | | } |
| | | |
| | | JSONObject data = JSON.parseObject(JSON.toJSONString(deviceMsg.getDeviceMsg())); |
| | | |
| | | if (deviceMsg.getDeviceMsgType().equals("status")) { |
| | | data.put("originDeviceData", deviceMsg.getDeviceOriginMsg()); |
| | | socketReadResults.add(data); |
| | | } else { |
| | | socketResults.add(deviceMsg);//æ·»å æ°æ® |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | public JSONObject getRequestBody(String resultKey) { |
| | | try { |
| | | // è·åæå¡å¨ååº |
| | | JSONObject result = null; |
| | | int idx = -1; |
| | | for (int i = 0; i < socketResults.size(); i++) { |
| | | DeviceMsgModel deviceMsgModel = socketResults.get(i); |
| | | if(deviceMsgModel.getResultKey().equals(resultKey)){ |
| | | idx = i; |
| | | result = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg())); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (result == null) { |
| | | return null;//æ ååºç»æ |
| | | } |
| | | |
| | | socketResults.remove(idx); |
| | | return filterBodyData(result);//è¿åBodyç»æé |
| | | } catch (Exception e) { |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | private void readStatus() { |
| | | try { |
| | | if (null == shuttleProtocol) { |
| | | shuttleProtocol = new ShuttleProtocol(); |
| | | shuttleProtocol.setShuttleNo(deviceConfig.getDeviceNo()); |
| | | shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); |
| | | |
| | | InnerSuhttleExtend extend = new InnerSuhttleExtend(); |
| | | shuttleProtocol.setExtend(extend); |
| | | } |
| | | |
| | | //----------读åååç©¿æ¢è½¦ç¶æ----------- |
| | | DeviceMsgUtils deviceMsgUtils = null; |
| | | try { |
| | | deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class); |
| | | }catch (Exception e){ |
| | | |
| | | } |
| | | if(deviceMsgUtils == null){ |
| | | return; |
| | | } |
| | | |
| | | NyShuttleHttpCommand readStatusCommand = getReadStatusCommand(deviceConfig.getDeviceNo()); |
| | | //æä»¤è¶
è¿2æ¡ï¼ä¸åä¸åä»»å¡ç¶æè¯·æ± |
| | | TreeSet<String> deviceCommandMsgListKey = deviceMsgUtils.getDeviceCommandMsgListKey(SlaveType.Shuttle, deviceConfig.getDeviceNo()); |
| | | if (deviceCommandMsgListKey.size() < 2) { |
| | | if ((System.currentTimeMillis() - requestReadTime) > 500) { |
| | | requestCommand(readStatusCommand);//请æ±ç¶æ |
| | | requestReadTime = System.currentTimeMillis(); |
| | | } |
| | | } |
| | | |
| | | if (this.socketReadResults.isEmpty()) { |
| | | if (System.currentTimeMillis() - shuttleProtocol.getLastOnlineTime() > 1000 * 60) { |
| | | //æå䏿¬¡ä¸çº¿æ¶é´è¶
è¿60sï¼è®¤å®ç¦»çº¿ |
| | | this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.OFFLINE); |
| | | } |
| | | return; |
| | | } |
| | | |
| | | JSONObject data = this.socketReadResults.get(0); |
| | | this.socketReadResults.remove(0); |
| | | //----------读åååç©¿æ¢è½¦ç¶æ----------- |
| | | //å°è½¦è®¾å¤ç¶æ |
| | | shuttleProtocol.setDeviceStatus(data.getInteger("deviceStatus")); |
| | | //å°è½¦æ¨¡å¼ |
| | | shuttleProtocol.setMode(data.getInteger("mode")); |
| | | //å½åäºç»´ç |
| | | shuttleProtocol.setCurrentCode(data.getString("currentCode")); |
| | | //çµæ± çµé |
| | | shuttleProtocol.setBatteryPower(data.getString("batteryPower")); |
| | | //çµæ± çµå |
| | | shuttleProtocol.setBatteryVoltage(data.getInteger("batteryVoltage")); |
| | | //æ
é |
| | | shuttleProtocol.setErrorCode(data.getString("errorCode")); |
| | | //æ¯å¦é¡¶å |
| | | shuttleProtocol.setHasLift(data.getBoolean("hasLift")); |
| | | //æ¯å¦ææç |
| | | shuttleProtocol.setHasPallet(data.getBoolean("hasPallet")); |
| | | //è¡é©¶æ¹å |
| | | shuttleProtocol.setRunDirection(data.getString("runDirection")); |
| | | //æ¯å¦ä¸ºå
çµç¶æ |
| | | shuttleProtocol.setHasCharge(data.getBoolean("hasCharge")); |
| | | //è¿è¡é度 |
| | | shuttleProtocol.setSpeed(data.getInteger("speed")); |
| | | |
| | | //*********è¯»åæ©å±å段********** |
| | | JSONObject extendData = data.getJSONObject("extend"); |
| | | InnerSuhttleExtend extend = (InnerSuhttleExtend) shuttleProtocol.getExtend(); |
| | | //管å¶ç¶æ |
| | | extend.setSuspendState(extendData.getInteger("suspendState")); |
| | | //æé«çµè¯çµå(mV) |
| | | extend.setMaxCellVoltage(extendData.getInteger("maxCellVoltage")); |
| | | //æä½çµè¯çµå(mV) |
| | | extend.setMinCellVoltage(extendData.getInteger("minCellVoltage")); |
| | | //çµæ± çµå |
| | | extend.setVoltage(extendData.getInteger("voltage")); |
| | | //å
æ¾çµå¾ªç¯æ¬¡æ° |
| | | extend.setChargeCycleTimes(extendData.getInteger("chargeCycleTimes")); |
| | | //å©ä½çµé |
| | | extend.setSurplusQuantity(extendData.getInteger("surplusQuantity")); |
| | | //æ»çµé |
| | | extend.setCountQuantity(extendData.getInteger("countQuantity")); |
| | | shuttleProtocol.setExtend(extend);//æ©å±å段 |
| | | |
| | | //æè¿ä¸æ¬¡å¨çº¿æ¶é´ |
| | | shuttleProtocol.setLastOnlineTime(System.currentTimeMillis()); |
| | | //读åååç©¿æ¢è½¦ç¶æ-end |
| | | |
| | | //å°è½¦å¤äºè¿è¡ä¸ï¼å°æ 记置为true |
| | | if (shuttleProtocol.getDeviceStatus() == 0) { |
| | | shuttleProtocol.setPakMk(true); |
| | | } |
| | | |
| | | if (shuttleProtocol.getProtocolStatusType() == null && shuttleProtocol.getDeviceStatus().intValue() == 1) { |
| | | //å°è½¦ç©ºé²ç¶æãå°è½¦ä»»å¡ç¶æä¸ºæªç¥ï¼è®¤å®æ¾ç¦»çº¿è¿ï¼éè¦å¤ä½æç©ºé² |
| | | this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); |
| | | } |
| | | |
| | | if (shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.OFFLINE) && shuttleProtocol.getDeviceStatus().intValue() == 1) { |
| | | this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); |
| | | } |
| | | |
| | | this.originDeviceData = data.getString("originDeviceData"); |
| | | |
| | | OutputQueue.SHUTTLE.offer(MessageFormat.format("ã{0}ã[id:{1}] <<<<< 宿¶æ°æ®æ´æ°æå",DateUtils.convert(new Date()), deviceConfig.getDeviceNo())); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | OutputQueue.SHUTTLE.offer(MessageFormat.format("ã{0}ãååç©¿æ¢è½¦Socketç¶æä¿¡æ¯å¤±è´¥ ===>> [id:{1}] [ip:{2}] [port:{3}]", DateUtils.convert(new Date()), deviceConfig.getDeviceNo(), deviceConfig.getIp(), deviceConfig.getPort())); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * çå¬å°è½¦å¤ä½åå§åä¿¡å· |
| | | */ |
| | | public void listenInit() { |
| | | try { |
| | | // è·åæå¡å¨ååº |
| | | JSONObject result = null; |
| | | int removeIdx = -1; |
| | | JSONObject socketResult = null; |
| | | for (int i = 0; i < socketResults.size(); i++) { |
| | | DeviceMsgModel deviceMsgModel = socketResults.get(i); |
| | | if (!deviceMsgModel.getDeviceMsgType().equals("shuttleInit")) { |
| | | continue; |
| | | } |
| | | removeIdx = i; |
| | | socketResult = JSON.parseObject(JSON.toJSONString(deviceMsgModel.getDeviceMsg())); |
| | | break; |
| | | } |
| | | |
| | | if (socketResult == null) { |
| | | return; |
| | | } |
| | | |
| | | JSONObject resultResponse = JSON.parseObject(socketResult.get("request").toString()); |
| | | JSONObject resultHeader = JSON.parseObject(resultResponse.get("header").toString()); |
| | | JSONObject resultBody = JSON.parseObject(resultResponse.get("body").toString()); |
| | | String requestType = resultBody.getString("requestType"); |
| | | Integer requestId = resultHeader.getInteger("requestId"); |
| | | if (requestType.equals("init")) { |
| | | socketResults.remove(removeIdx); |
| | | |
| | | Integer code = resultBody.getInteger("code"); |
| | | //å°è½¦å¤ä½è¯·æ± |
| | | ShuttleCommand initCommand = getInitCommand(requestId, code); |
| | | //ååºè¯·æ± |
| | | NyShuttleHttpCommand httpCommand = JSON.parseObject(initCommand.getBody(), NyShuttleHttpCommand.class); |
| | | requestCommand(httpCommand); |
| | | |
| | | log.info(MessageFormat.format("ã{0}ãåå车å¤ä½ä¸æ¥ ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort())); |
| | | OutputQueue.SHUTTLE.offer(MessageFormat.format("ã{0}ãåå车å¤ä½ä¸æ¥ ===>> [code:{1}] [ip:{2}] [port:{3}]", deviceConfig.getDeviceNo(), code, deviceConfig.getIp(), deviceConfig.getPort())); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public ShuttleProtocol getStatus() { |
| | | return getStatus(true); |
| | | } |
| | | |
| | | @Override |
| | | public ShuttleProtocol getStatus(boolean clone) { |
| | | if (this.shuttleProtocol == null) { |
| | | return null; |
| | | } |
| | | return clone ? this.shuttleProtocol.clone() : this.shuttleProtocol; |
| | | } |
| | | |
| | | @Override |
| | | public CommandResponse movePath(List<NavigateNode> nodes, Integer taskNo) { |
| | | CommandResponse response = new CommandResponse(true); |
| | | return response; |
| | | } |
| | | |
| | | // @Override |
| | | // public CommandResponse move(ShuttleCommand command) { |
| | | // CommandResponse response = new CommandResponse(false); |
| | | // try { |
| | | // //ååºè¯·æ± |
| | | // NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); |
| | | // Map<String, Object> body = httpCommand.getRequest().getBody(); |
| | | // Object pathObj = body.get("path"); |
| | | // int taskId = Integer.parseInt(body.get("taskId").toString()); |
| | | // List<JSONObject> path = JSON.parseArray(JSON.toJSONString(pathObj), JSONObject.class); |
| | | // ArrayList<NyShuttleHttpCommand> commandList = new ArrayList<>(); |
| | | // while (!path.isEmpty()) { |
| | | // ArrayList<Map<String, Object>> list = new ArrayList<>(); |
| | | // if (path.size() > 10) { |
| | | // List<JSONObject> subList = path.subList(0, 10); |
| | | // list.addAll(subList); |
| | | // |
| | | // List<JSONObject> tmp = new ArrayList<>(); |
| | | // for (int i = 10; i < path.size(); i++) { |
| | | // tmp.add(path.get(i)); |
| | | // } |
| | | // path = tmp; |
| | | // }else { |
| | | // list.addAll(path); |
| | | // path.clear(); |
| | | // } |
| | | // |
| | | // NyShuttleHttpCommand httpCommandCopy = JSON.parseObject(JSON.toJSONString(httpCommand), NyShuttleHttpCommand.class); |
| | | // JSONObject bodyCopy = JSON.parseObject(JSON.toJSONString(body)); |
| | | // |
| | | // NyShuttleHttpCommand.NyRequest request = httpCommandCopy.getRequest(); |
| | | // bodyCopy.put("path", list); |
| | | // bodyCopy.put("taskId", taskId++); |
| | | // request.setBody(bodyCopy); |
| | | // httpCommandCopy.setRequest(request); |
| | | // |
| | | // commandList.add(httpCommandCopy);//add copy |
| | | // } |
| | | // |
| | | // for (NyShuttleHttpCommand requestCommand : commandList) { |
| | | // while (true) { |
| | | // JSONObject result = requestCommand(requestCommand); |
| | | // if (result == null) { |
| | | //// return response;//请æ±å¤±è´¥ |
| | | // continue;//请æ±å¤±è´¥å°è¯éæ°è¯·æ± |
| | | // } |
| | | // this.shuttleProtocol.setSendTime(System.currentTimeMillis());//æä»¤ä¸åæ¶é´ |
| | | // response.setMessage(JSON.toJSONString(result)); |
| | | // response.setResult(true); |
| | | // break; |
| | | // } |
| | | // } |
| | | // return response; |
| | | // } catch (Exception e) { |
| | | // e.printStackTrace(); |
| | | // response.setMessage(e.getMessage()); |
| | | // return response; |
| | | // } |
| | | // } |
| | | |
| | | @Override |
| | | public CommandResponse move(ShuttleCommand command) { |
| | | CommandResponse response = new CommandResponse(false); |
| | | try { |
| | | //ååºè¯·æ± |
| | | NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); |
| | | String resultKey = requestCommand(httpCommand); |
| | | //æ¥è¯¢è¯·æ±ç»æ |
| | | JSONObject result = queryCommandStatus(resultKey); |
| | | if (result == null) { |
| | | return response;//请æ±å¤±è´¥ |
| | | } |
| | | this.shuttleProtocol.setSendTime(System.currentTimeMillis());//æä»¤ä¸åæ¶é´ |
| | | response.setMessage(JSON.toJSONString(result)); |
| | | response.setResult(true); |
| | | return response; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | response.setMessage(e.getMessage()); |
| | | return response; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public CommandResponse lift(ShuttleCommand command) { |
| | | CommandResponse response = new CommandResponse(false); |
| | | try { |
| | | //ååºè¯·æ± |
| | | NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); |
| | | String resultKey = requestCommand(httpCommand); |
| | | //æ¥è¯¢è¯·æ±ç»æ |
| | | JSONObject result = queryCommandStatus(resultKey); |
| | | if (result == null) { |
| | | return response;//请æ±å¤±è´¥ |
| | | } |
| | | this.shuttleProtocol.setSendTime(System.currentTimeMillis());//æä»¤ä¸åæ¶é´ |
| | | response.setMessage(JSON.toJSONString(result)); |
| | | response.setResult(true); |
| | | return response; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return response; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public CommandResponse charge(ShuttleCommand command) { |
| | | CommandResponse response = new CommandResponse(false); |
| | | try { |
| | | //ååºè¯·æ± |
| | | NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); |
| | | String resultKey = requestCommand(httpCommand); |
| | | //æ¥è¯¢è¯·æ±ç»æ |
| | | JSONObject result = queryCommandStatus(resultKey); |
| | | if (result == null) { |
| | | return response;//请æ±å¤±è´¥ |
| | | } |
| | | this.shuttleProtocol.setSendTime(System.currentTimeMillis());//æä»¤ä¸åæ¶é´ |
| | | response.setMessage(JSON.toJSONString(result)); |
| | | response.setResult(true); |
| | | return response; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return response; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public CommandResponse reset(ShuttleCommand command) { |
| | | setSyncTaskNo(0); |
| | | setProtocolStatus(ShuttleProtocolStatusType.IDLE); |
| | | enableMoveLoc(null, false); |
| | | return new CommandResponse(true, JSON.toJSONString(command)); |
| | | } |
| | | |
| | | @Override |
| | | public CommandResponse updateLocation(ShuttleCommand command) { |
| | | CommandResponse response = new CommandResponse(false); |
| | | try { |
| | | //ååºè¯·æ± |
| | | NyShuttleHttpCommand httpCommand = JSON.parseObject(command.getBody(), NyShuttleHttpCommand.class); |
| | | String resultKey = requestCommand(httpCommand); |
| | | //æ¥è¯¢è¯·æ±ç»æ |
| | | JSONObject result = queryCommandStatus(resultKey); |
| | | if (result == null) { |
| | | return response;//请æ±å¤±è´¥ |
| | | } |
| | | this.shuttleProtocol.setSendTime(System.currentTimeMillis());//æä»¤ä¸åæ¶é´ |
| | | response.setMessage(JSON.toJSONString(result)); |
| | | response.setResult(true); |
| | | return response; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | return response; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean isIdle() { |
| | | return this.isIdle(null); |
| | | } |
| | | |
| | | @Override |
| | | public boolean isIdle(ExecuteSupport support) { |
| | | if (null != support) { |
| | | Boolean judgement = support.judgement(); |
| | | if (judgement != null && !judgement) { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | if (this.shuttleProtocol.getDeviceStatus() == null |
| | | || this.shuttleProtocol.getPakMk() == null |
| | | || this.shuttleProtocol.getErrorCode() == null |
| | | || this.shuttleProtocol.getProtocolStatus() == null |
| | | || this.shuttleProtocol.getMode() == null |
| | | || this.shuttleProtocol.getExtend() == null |
| | | ) { |
| | | return false; |
| | | } |
| | | |
| | | InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); |
| | | |
| | | boolean res = this.shuttleProtocol.getDeviceStatus() == 1 |
| | | && this.shuttleProtocol.getMode() == 1 |
| | | && this.shuttleProtocol.getPakMk() |
| | | && this.shuttleProtocol.getErrorCode().equals("0") |
| | | && this.shuttleProtocol.getTaskNo() == 0 |
| | | && (this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id |
| | | || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.WAITING.id |
| | | || this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.CHARGING_WAITING.id) |
| | | && extend.getSuspendState() == 0; |
| | | return res; |
| | | } |
| | | |
| | | @Override |
| | | public boolean isDeviceIdle() { |
| | | return isDeviceIdle(null); |
| | | } |
| | | |
| | | @Override |
| | | public boolean isDeviceIdle(ExecuteSupport support) { |
| | | if (null != support) { |
| | | Boolean judgement = support.judgement(); |
| | | if (judgement != null && !judgement) { |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | if (this.shuttleProtocol.getDeviceStatus() == null |
| | | || this.shuttleProtocol.getPakMk() == null |
| | | || this.shuttleProtocol.getErrorCode() == null |
| | | || this.shuttleProtocol.getMode() == null |
| | | || this.shuttleProtocol.getExtend() == null |
| | | ) { |
| | | return false; |
| | | } |
| | | |
| | | InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); |
| | | |
| | | boolean res = this.shuttleProtocol.getDeviceStatus() == 1 |
| | | && this.shuttleProtocol.getMode() == 1 |
| | | && this.shuttleProtocol.getPakMk() |
| | | && this.shuttleProtocol.getErrorCode().equals("0") |
| | | && extend.getSuspendState() == 0 |
| | | ; |
| | | return res; |
| | | } |
| | | |
| | | @Override |
| | | public ShuttleRequireChargeType isRequireCharge() { |
| | | if (this.shuttleProtocol.getDeviceStatus() == null |
| | | || this.shuttleProtocol.getPakMk() == null |
| | | || this.shuttleProtocol.getErrorCode() == null |
| | | || this.shuttleProtocol.getProtocolStatus() == null |
| | | || this.shuttleProtocol.getMode() == null |
| | | || this.shuttleProtocol.getExtend() == null |
| | | ) { |
| | | return ShuttleRequireChargeType.NONE; |
| | | } |
| | | |
| | | InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); |
| | | |
| | | boolean res = this.shuttleProtocol.getDeviceStatus() == 1 |
| | | && this.shuttleProtocol.getMode() == 1 |
| | | && this.shuttleProtocol.getPakMk() |
| | | && this.shuttleProtocol.getErrorCode().equals("0") |
| | | && this.shuttleProtocol.getProtocolStatus() == ShuttleProtocolStatusType.IDLE.id |
| | | && extend.getSuspendState() == 0 |
| | | ; |
| | | if (!res) { |
| | | return ShuttleRequireChargeType.NONE; |
| | | } else { |
| | | // çµéå°äºéå¼éè¦è¿è¡å
çµ |
| | | try { |
| | | BasShuttleService shuttleService = SpringUtils.getBean(BasShuttleService.class); |
| | | if (shuttleService == null) { |
| | | return ShuttleRequireChargeType.NONE; |
| | | } |
| | | |
| | | BasShuttle basShuttle = shuttleService.selectOne(new EntityWrapper<BasShuttle>().eq("shuttle_no", deviceConfig.getDeviceNo())); |
| | | if (basShuttle == null) { |
| | | return ShuttleRequireChargeType.NONE; |
| | | } |
| | | |
| | | Integer chargeLine = basShuttle.getChargeLine(); |
| | | if (chargeLine == null) { |
| | | return ShuttleRequireChargeType.NONE; |
| | | } |
| | | |
| | | boolean chargeResult = Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < chargeLine; |
| | | if (chargeResult) { |
| | | return ShuttleRequireChargeType.FORCE_CHARGE;//éè¦å¼ºå¶å
çµ |
| | | } |
| | | |
| | | Integer suggestChargeLine = basShuttle.getSuggestChargeLine(); |
| | | if (suggestChargeLine == null) { |
| | | return ShuttleRequireChargeType.NONE; |
| | | } |
| | | |
| | | boolean suggestChargeResult = Integer.valueOf(this.shuttleProtocol.getBatteryPower()) < suggestChargeLine; |
| | | if (suggestChargeResult) { |
| | | return ShuttleRequireChargeType.SUGGEST_CHARGE;//建议å
çµ |
| | | } |
| | | |
| | | return ShuttleRequireChargeType.NONE; |
| | | } catch (Exception e) { |
| | | return ShuttleRequireChargeType.NONE; |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public boolean isCharging() { |
| | | if (this.shuttleProtocol.getDeviceStatus() == null || this.shuttleProtocol.getHasCharge() == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (this.shuttleProtocol.getDeviceStatus() == 0 && this.shuttleProtocol.getHasCharge()) { |
| | | //è¿è¡ä¸ && å
çµä¸ |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public boolean isChargingCompleted() { |
| | | Integer maxPower = 100; |
| | | ConfigService configService = SpringUtils.getBean(ConfigService.class); |
| | | if (configService != null) { |
| | | Config chargeMaxValue = configService.selectOne(new EntityWrapper<Config>() |
| | | .eq("code", "chargeMaxValue") |
| | | .eq("status", 1)); |
| | | if (chargeMaxValue != null) { |
| | | maxPower = Integer.parseInt(chargeMaxValue.getValue()); |
| | | } |
| | | } |
| | | |
| | | //***************夿æ¯å¦æ»¡å
æ ¡å*************** |
| | | Config shuttleMaxPowerVerifyConfig = configService.selectOne(new EntityWrapper<Config>() |
| | | .eq("code", "shuttleMaxPowerVerify") |
| | | .eq("status", 1)); |
| | | if (shuttleMaxPowerVerifyConfig != null) { |
| | | if (shuttleMaxPowerVerifyConfig.getValue().equals("true")) { |
| | | if (this.shuttleProtocol.getBatteryPower() == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (this.shuttleProtocol.getBatteryVoltage() < 5630) { |
| | | return false;//çµåä¸å¤ç»§ç»å
çµ |
| | | } |
| | | } |
| | | } |
| | | //***************夿æ¯å¦æ»¡å
æ ¡å*************** |
| | | |
| | | if (this.shuttleProtocol.getHasCharge() == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (this.shuttleProtocol.getBatteryPower() == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (!this.shuttleProtocol.getHasCharge()) { |
| | | return false; |
| | | } |
| | | |
| | | if (Integer.valueOf(this.shuttleProtocol.getBatteryPower()) >= maxPower) { |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public boolean isFault() { |
| | | if (this.shuttleProtocol.getErrorCode() == null |
| | | || this.shuttleProtocol.getMode() == null |
| | | || this.shuttleProtocol.getExtend() == null |
| | | ) { |
| | | return false; |
| | | } |
| | | |
| | | if (this.shuttleProtocol.getMode() == 0) { |
| | | return true; |
| | | } |
| | | |
| | | if (!this.shuttleProtocol.getErrorCode().equals("0")) { |
| | | return true; |
| | | } |
| | | |
| | | InnerSuhttleExtend extend = (InnerSuhttleExtend) this.shuttleProtocol.getExtend(); |
| | | |
| | | if (extend.getSuspendState() == 1) { |
| | | return true; |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public List<NavigateNode> getMoveAdvancePath() { |
| | | ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class); |
| | | NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); |
| | | ArrayList<NavigateNode> path = new ArrayList<>(); |
| | | if (shuttleProtocol.getTaskNo() != 0) { |
| | | //åå¨ä»»å¡ï¼è·åæä»¤ |
| | | Object object = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + shuttleProtocol.getTaskNo()); |
| | | if (object != null) { |
| | | ShuttleRedisCommand redisCommand = null; |
| | | try { |
| | | redisCommand = objectMapper.readValue(String.valueOf(object), ShuttleRedisCommand.class); |
| | | } catch (IOException e) { |
| | | return path; |
| | | } |
| | | List<NavigateNode> nodes = redisCommand.getAssignCommand().getNodes();//ç©¿æ¢è½¦é¢è®¡è·¯å¾ |
| | | if (nodes == null) { |
| | | return path; |
| | | } |
| | | if (!nodes.isEmpty()) { |
| | | path.addAll(nodes); |
| | | } |
| | | NavigateNode navigateNode = path.get(0); |
| | | int lev = navigateNode.getZ(); |
| | | |
| | | //å°è·¯å¾éä¸å°è½¦è·¯å¾è¿è¡å¹é
|
| | | ArrayList<NavigateNode> tmp = new ArrayList<>(); |
| | | //æ£æµè·¯å¾æ¯å¦è¢«éå® |
| | | int[][] map = navigateMapData.getDataFromRedis(lev, NavigationMapType.getDfxWithDevice(), null, null); |
| | | for (NavigateNode node : path) { |
| | | if(map[node.getX()][node.getY()] == -999) { |
| | | tmp.add(node); |
| | | } |
| | | } |
| | | |
| | | path = tmp; |
| | | } |
| | | } |
| | | return path; |
| | | } |
| | | |
| | | @Override |
| | | public int generateDeviceTaskNo(int taskNo, ShuttleTaskNoType type) { |
| | | return taskNo; |
| | | } |
| | | |
| | | @Override |
| | | public synchronized boolean setProtocolStatus(ShuttleProtocolStatusType status) { |
| | | if (status.equals(ShuttleProtocolStatusType.IDLE)) { |
| | | this.shuttleProtocol.setIdleTime(System.currentTimeMillis()); |
| | | } |
| | | this.shuttleProtocol.setProtocolStatus(status); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public synchronized boolean setTaskNo(Integer taskNo) { |
| | | redisUtil.set(RedisKeyType.SHUTTLE_FLAG.key + shuttleProtocol.getShuttleNo(), taskNo); |
| | | this.shuttleProtocol.setTaskNo(taskNo); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public synchronized boolean setSyncTaskNo(Integer taskNo) { |
| | | redisUtil.setSync(RedisKeyType.SHUTTLE_FLAG.key + shuttleProtocol.getShuttleNo(), taskNo); |
| | | this.shuttleProtocol.setTaskNo(taskNo); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public synchronized boolean setPakMk(boolean pakMk) { |
| | | this.shuttleProtocol.setPakMk(pakMk); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public boolean enableMoveLoc(ShuttleMoveLocParam param, boolean enable) { |
| | | if (enable) { |
| | | shuttleProtocol.setMoveLoc(true);//å¼å¯è·åº |
| | | shuttleProtocol.setMoveType(param.getMoveType()); |
| | | shuttleProtocol.setXStart(param.getStartX()); |
| | | shuttleProtocol.setXTarget(param.getTargetX()); |
| | | shuttleProtocol.setXCurrent(param.getStartX()); |
| | | shuttleProtocol.setYStart(param.getStartY()); |
| | | shuttleProtocol.setYTarget(param.getTargetY()); |
| | | shuttleProtocol.setYCurrent(param.getStartY()); |
| | | }else { |
| | | shuttleProtocol.setMoveLoc(false); |
| | | shuttleProtocol.setMoveType(0); |
| | | shuttleProtocol.setXStart(0); |
| | | shuttleProtocol.setXTarget(0); |
| | | shuttleProtocol.setXCurrent(0); |
| | | shuttleProtocol.setYStart(0); |
| | | shuttleProtocol.setYTarget(0); |
| | | shuttleProtocol.setYCurrent(0); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public boolean requestWaiting() { |
| | | if (this.shuttleProtocol.getProtocolStatusType().equals(ShuttleProtocolStatusType.IDLE)) { |
| | | this.shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); |
| | | return true; |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public boolean enableDemo(boolean enable) { |
| | | shuttleProtocol.setDemo(enable); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public boolean offerSystemMsg(String format, Object... arguments) { |
| | | String msg = News.replace(format, arguments); |
| | | shuttleProtocol.setSystemMsg(msg); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public boolean setTrafficControl(boolean enable, List<NavigateNode> nodeList) { |
| | | shuttleProtocol.setTrafficControl(enable); |
| | | shuttleProtocol.setTrafficControlNodes(nodeList); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public void updateDeviceDataLogTime(long time) { |
| | | shuttleProtocol.setDeviceDataLog(time); |
| | | } |
| | | |
| | | @Override |
| | | public JSONObject parseStatusToMsg(ShuttleProtocol shuttleProtocol) { |
| | | JSONObject result = new JSONObject(); |
| | | result.put("msgType", "responseMsg"); |
| | | result.put("robotId", 5002); |
| | | |
| | | JSONObject header = new JSONObject(); |
| | | header.put("responseId", 5005631); |
| | | header.put("version", "RGV-APP-F427-N24036-1112"); |
| | | |
| | | JSONObject body = new JSONObject(); |
| | | body.put("responseType", "state"); |
| | | |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public boolean restartCalcPath() { |
| | | ConfigService configService = SpringUtils.getBean(ConfigService.class); |
| | | if (configService == null) { |
| | | return false; |
| | | } |
| | | |
| | | ShuttleAction shuttleAction = SpringUtils.getBean(ShuttleAction.class); |
| | | if (shuttleAction == null) { |
| | | return false; |
| | | } |
| | | |
| | | ShuttleOperaUtils shuttleOperaUtils = SpringUtils.getBean(ShuttleOperaUtils.class); |
| | | if (shuttleOperaUtils == null) { |
| | | return false; |
| | | } |
| | | |
| | | ObjectMapper objectMapper = SpringUtils.getBean(ObjectMapper.class); |
| | | if (objectMapper == null) { |
| | | return false; |
| | | } |
| | | |
| | | boolean trafficControlRestartCalcPath = false; |
| | | Config trafficControlRestartCalcPathConfig = configService.selectOne(new EntityWrapper<Config>() |
| | | .eq("code", "trafficControlRestartCalcPath") |
| | | ); |
| | | if(trafficControlRestartCalcPathConfig != null) { |
| | | trafficControlRestartCalcPath = trafficControlRestartCalcPathConfig.getValue().equals("Y") ? true : false; |
| | | } |
| | | |
| | | if (!trafficControlRestartCalcPath) { |
| | | return false; |
| | | } |
| | | |
| | | if (shuttleProtocol.getTaskNo() == 0) { |
| | | return false; |
| | | } |
| | | |
| | | if (!this.isDeviceIdle()) { |
| | | return false; |
| | | } |
| | | |
| | | Object object = redisUtil.get(RedisKeyType.SHUTTLE_RESTART_CALC_PATH.key + shuttleProtocol.getShuttleNo()); |
| | | if (object != null) { |
| | | return false; |
| | | } |
| | | |
| | | Integer taskNo = shuttleProtocol.getTaskNo(); |
| | | Object obj = redisUtil.get(RedisKeyType.SHUTTLE_WORK_FLAG.key + taskNo); |
| | | if (obj == null) { |
| | | return false; |
| | | } |
| | | |
| | | ShuttleRedisCommand redisCommand = null; |
| | | try { |
| | | redisCommand = objectMapper.readValue(String.valueOf(obj), ShuttleRedisCommand.class); |
| | | } catch (IOException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | |
| | | if (redisCommand == null) { |
| | | return false; |
| | | } |
| | | |
| | | ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); |
| | | String locNo = assignCommand.getLocNo(); |
| | | List<NavigationMapType> mapTypes = assignCommand.getMapTypes(); |
| | | if (locNo == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (mapTypes == null) { |
| | | return false; |
| | | } |
| | | |
| | | List<NavigationMapType> restartCalcMapTypes = new ArrayList<>(mapTypes); |
| | | restartCalcMapTypes.add(NavigationMapType.SHUTTLE); |
| | | |
| | | if (assignCommand.getTaskMode() == ShuttleTaskModeType.TRANSPORT.id) { |
| | | restartCalcMapTypes.add(NavigationMapType.DFX); |
| | | } |
| | | |
| | | String currentLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(currentLocNo, locNo, restartCalcMapTypes, assignCommand, this); |
| | | if (commands == null) { |
| | | return false; |
| | | } |
| | | |
| | | if (assignCommand.getTaskMode() == ShuttleTaskModeType.TRANSPORT.id) { |
| | | List<ShuttleCommand> originCommands = assignCommand.getCommands(); |
| | | if (originCommands == null) { |
| | | return false; |
| | | } |
| | | |
| | | ShuttleCommand firstCommand = originCommands.get(0); |
| | | ShuttleCommand endCommand = originCommands.get(originCommands.size() - 1); |
| | | |
| | | if (firstCommand.getMode() != ShuttleCommandModeType.PALLET_LIFT.id) { |
| | | return false; |
| | | } |
| | | |
| | | if (endCommand.getMode() != ShuttleCommandModeType.PALLET_DOWN.id) { |
| | | return false; |
| | | } |
| | | |
| | | commands.add(0, firstCommand); |
| | | commands.add(endCommand); |
| | | } |
| | | |
| | | assignCommand.setCommands(commands); |
| | | |
| | | //ä¸åä»»å¡ |
| | | shuttleAction.assignWork(shuttleProtocol.getShuttleNo(), assignCommand); |
| | | redisUtil.set(RedisKeyType.SHUTTLE_RESTART_CALC_PATH.key + shuttleProtocol.getShuttleNo(), true, 60); |
| | | return true; |
| | | } |
| | | |
| | | @Override |
| | | public ShuttleCommand getMoveCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes, Boolean shuttleDirectionReverse) { |
| | | NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); |
| | | NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo); |
| | | NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); |
| | | |
| | | ArrayList<HashMap<String, Object>> path = new ArrayList<>(); |
| | | |
| | | Integer taskId = getTaskId(); |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("requestType", "move");//ç§»å¨å½ä»¤ |
| | | body.put("taskId", taskId);//TaskIDéè¦éæº |
| | | body.put("path", path); |
| | | request.setBody(body); |
| | | |
| | | NavigateNode startNode = nodes.get(0); |
| | | List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null); |
| | | for (NavigateNode node : nodes) { |
| | | HashMap<String, Object> data = new HashMap<>(); |
| | | String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ()); |
| | | Map<String, Object> nyNode = navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(codeNum)); |
| | | |
| | | int xp = Integer.parseInt(String.valueOf(nyNode.get("x"))); |
| | | int yp = Integer.parseInt(String.valueOf(nyNode.get("y"))); |
| | | if (shuttleDirectionReverse) { |
| | | xp = Integer.parseInt(String.valueOf(nyNode.get("y"))); |
| | | yp = Integer.parseInt(String.valueOf(nyNode.get("x"))); |
| | | } |
| | | |
| | | int z = Integer.parseInt(String.valueOf(nyNode.get("z"))); |
| | | |
| | | List<MapNode> mapNodes = mapData.get(node.getX()); |
| | | MapNode mapNode = mapNodes.get(node.getY()); |
| | | |
| | | data.put("xp", xp); |
| | | data.put("yp", yp); |
| | | data.put("z", z); |
| | | data.put("x", mapNode.getXBase()); |
| | | data.put("y", mapNode.getYBase()); |
| | | path.add(data); |
| | | } |
| | | |
| | | httpStandard.setRequest(request); |
| | | |
| | | Object object = redisUtil.get(RedisKeyType.LOC_MAP.key); |
| | | HashMap<String, String> locMap = (HashMap<String, String>) object; |
| | | String targetLocNo = locMap.get(distCodeNum); |
| | | |
| | | ShuttleCommand command = new ShuttleCommand(); |
| | | command.setShuttleNo(deviceConfig.getDeviceNo()); |
| | | command.setBody(JSON.toJSONString(httpStandard)); |
| | | command.setMode(ShuttleCommandModeType.MOVE.id); |
| | | command.setTargetLocNo(targetLocNo); |
| | | command.setTaskNo(taskId); |
| | | return command; |
| | | } |
| | | |
| | | @Override |
| | | public ShuttleCommand getMoveLiftCommand(Integer taskNo, String startCodeNum, String distCodeNum, Integer allDistance, Integer runDirection, Integer runSpeed, List<NavigateNode> nodes, Boolean moveIn, Boolean shuttleDirectionReverse) { |
| | | NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); |
| | | NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo); |
| | | NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); |
| | | |
| | | ArrayList<HashMap<String, Object>> path = new ArrayList<>(); |
| | | |
| | | Integer taskId = getTaskId(); |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | // if (moveIn) { |
| | | // body.put("requestType", "intoLift");//è¿æåæº |
| | | // } else { |
| | | // body.put("requestType", "outLift");//åºæåæº |
| | | // } |
| | | body.put("requestType", "move");//ç§»å¨å½ä»¤ |
| | | body.put("taskId", taskId);//TaskIDéè¦éæº |
| | | body.put("path", path); |
| | | request.setBody(body); |
| | | |
| | | NavigateNode startNode = nodes.get(0); |
| | | List<List<MapNode>> mapData = navigateMapData.getJsonData(startNode.getZ(), NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null); |
| | | for (NavigateNode node : nodes) { |
| | | HashMap<String, Object> data = new HashMap<>(); |
| | | String codeNum = NavigatePositionConvert.xyToPosition(node.getX(), node.getY(), node.getZ()); |
| | | Map<String, Object> nyNode = navigateNodeToNyPointNode(NavigatePositionConvert.codeToNode(codeNum)); |
| | | |
| | | int xp = Integer.parseInt(String.valueOf(nyNode.get("x"))); |
| | | int yp = Integer.parseInt(String.valueOf(nyNode.get("y"))); |
| | | if (shuttleDirectionReverse) { |
| | | xp = Integer.parseInt(String.valueOf(nyNode.get("y"))); |
| | | yp = Integer.parseInt(String.valueOf(nyNode.get("x"))); |
| | | } |
| | | |
| | | int z = Integer.parseInt(String.valueOf(nyNode.get("z"))); |
| | | |
| | | List<MapNode> mapNodes = mapData.get(node.getX()); |
| | | MapNode mapNode = mapNodes.get(node.getY()); |
| | | |
| | | data.put("xp", xp); |
| | | data.put("yp", yp); |
| | | data.put("z", z); |
| | | data.put("x", mapNode.getXBase()); |
| | | data.put("y", mapNode.getYBase()); |
| | | path.add(data); |
| | | } |
| | | |
| | | httpStandard.setRequest(request); |
| | | |
| | | Object object = redisUtil.get(RedisKeyType.LOC_MAP.key); |
| | | HashMap<String, String> locMap = (HashMap<String, String>) object; |
| | | String targetLocNo = locMap.get(distCodeNum); |
| | | |
| | | ShuttleCommand command = new ShuttleCommand(); |
| | | command.setShuttleNo(deviceConfig.getDeviceNo()); |
| | | command.setBody(JSON.toJSONString(httpStandard)); |
| | | command.setMode(ShuttleCommandModeType.MOVE.id); |
| | | command.setTargetLocNo(targetLocNo); |
| | | command.setTaskNo(taskId); |
| | | return command; |
| | | } |
| | | |
| | | @Override |
| | | public ShuttleCommand getLiftCommand(Integer taskNo, Boolean lift) { |
| | | NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo); |
| | | NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); |
| | | |
| | | Integer taskId = getTaskId();//TaskIDéè¦éæº |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("requestType", lift ? "liftUp" : "liftDown");//é¡¶åæä¸éå½ä»¤ |
| | | body.put("taskId", taskId); |
| | | request.setBody(body); |
| | | |
| | | httpStandard.setRequest(request); |
| | | |
| | | ShuttleCommand command = new ShuttleCommand(); |
| | | command.setShuttleNo(deviceConfig.getDeviceNo()); |
| | | command.setBody(JSON.toJSONString(httpStandard)); |
| | | command.setMode(lift ? ShuttleCommandModeType.PALLET_LIFT.id : ShuttleCommandModeType.PALLET_DOWN.id); |
| | | command.setTaskNo(taskId); |
| | | return command; |
| | | } |
| | | |
| | | @Override |
| | | public ShuttleCommand getChargeCommand(Integer taskNo, Boolean charge) { |
| | | NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo); |
| | | NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); |
| | | |
| | | Integer taskId = getTaskId();//TaskIDéè¦éæº |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("requestType", charge ? "charge" : "stopCharge");//å
çµæåæ¢å
çµ |
| | | body.put("taskId", taskId); |
| | | request.setBody(body); |
| | | |
| | | httpStandard.setRequest(request); |
| | | |
| | | ShuttleCommand command = new ShuttleCommand(); |
| | | command.setShuttleNo(deviceConfig.getDeviceNo()); |
| | | command.setBody(JSON.toJSONString(httpStandard)); |
| | | command.setMode(charge ? ShuttleCommandModeType.CHARGE_OPEN.id : ShuttleCommandModeType.CHARGE_CLOSE.id); |
| | | command.setTaskNo(taskId); |
| | | return command; |
| | | } |
| | | |
| | | @Override |
| | | public ShuttleCommand getUpdateLocationCommand(Integer taskNo, String locNo) { |
| | | NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo); |
| | | NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); |
| | | |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("requestType", "updateFloor");//æ´æ°å±Z |
| | | body.put("z", Utils.getLev(locNo));//åæ Z |
| | | request.setBody(body); |
| | | |
| | | httpStandard.setRequest(request); |
| | | |
| | | ShuttleCommand command = new ShuttleCommand(); |
| | | command.setShuttleNo(deviceConfig.getDeviceNo()); |
| | | command.setBody(JSON.toJSONString(httpStandard)); |
| | | command.setMode(ShuttleCommandModeType.UPDATE_LOCATION.id); |
| | | command.setTaskNo(taskNo); |
| | | return command; |
| | | } |
| | | |
| | | //è·åå°è½¦å¤ä½ååºå½ä»¤ |
| | | public ShuttleCommand getInitCommand(Integer taskNo, Integer code) { |
| | | NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class); |
| | | NyShuttleHttpCommand httpStandard = getHttpStandard(deviceConfig.getDeviceNo(), taskNo); |
| | | NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); |
| | | |
| | | //code -> {Integer@13781} 1101101 |
| | | int lev = code % 100; |
| | | int bay = code / 100 % 1000; |
| | | int row = code / 100000; |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | map.put("x", row); |
| | | map.put("y", bay); |
| | | map.put("z", lev); |
| | | |
| | | String mapStr = JSON.toJSONString(map); |
| | | |
| | | Object object = redisUtil.get(RedisKeyType.LOC_MAP.key); |
| | | HashMap<String, String> locMap = (HashMap<String, String>) object; |
| | | String targetLocNo = locMap.get(mapStr); |
| | | |
| | | List<List<MapNode>> mapData = navigateMapData.getJsonData(lev, NavigationMapType.getMapTypes(NavigationMapType.NONE), null, null); |
| | | List<MapNode> mapNodes = mapData.get(Utils.getRow(targetLocNo)); |
| | | MapNode mapNode = mapNodes.get(Utils.getBay(targetLocNo)); |
| | | |
| | | HashMap<String, Object> location = new HashMap<>(); |
| | | location.put("xp", row); |
| | | location.put("yp", bay); |
| | | location.put("z", lev); |
| | | location.put("x", mapNode.getXBase()); |
| | | location.put("y", mapNode.getYBase()); |
| | | |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("responseType", "init");//å¤ä½ |
| | | body.put("location", location);//åå§ååæ |
| | | body.put("devicePoints", new ArrayList<>());//æåæºç¹ä½ |
| | | body.put("specialPoints", new ArrayList<>());//ç¹æ®æ¡ç åæ |
| | | request.setBody(body); |
| | | |
| | | httpStandard.setRequest(request); |
| | | |
| | | ShuttleCommand command = new ShuttleCommand(); |
| | | command.setShuttleNo(deviceConfig.getDeviceNo()); |
| | | command.setBody(JSON.toJSONString(httpStandard)); |
| | | command.setMode(ShuttleCommandModeType.RESET.id); |
| | | command.setTaskNo(taskNo); |
| | | return command; |
| | | } |
| | | |
| | | @Override |
| | | public boolean connect() { |
| | | return true; |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | } |
| | | |
| | | //è·åHTTPè¯·æ±æ åç»æä½ |
| | | private NyShuttleHttpCommand getHttpStandard(Integer shuttleNo, Integer taskNo) { |
| | | NyShuttleHttpCommand httpStandard = new NyShuttleHttpCommand(); |
| | | httpStandard.setMsgType("requestMsg");//è¯·æ±æ¶æ¯ |
| | | httpStandard.setRobotId(shuttleNo);//车è¾ç¼å· |
| | | httpStandard.setTaskNo(taskNo);//å·¥ä½å· |
| | | |
| | | //è®¾ç½®è¯·æ±æ¶æ¯ |
| | | NyShuttleHttpCommand.NyRequest request = new NyShuttleHttpCommand.NyRequest(); |
| | | NyShuttleHttpCommand.NyRequest.NyHeader header = new NyShuttleHttpCommand.NyRequest.NyHeader(); |
| | | header.setVersion("1.0");//çæ¬å· |
| | | header.setRequestId(getRequestId());//æ¶æ¯ç¼å· |
| | | |
| | | //设置请æ±å¤´ |
| | | request.setHeader(header); |
| | | httpStandard.setRequest(request); |
| | | return httpStandard; |
| | | } |
| | | |
| | | //è·å请æ±ç¼å· |
| | | private Integer getRequestId() { |
| | | Random random = new Random(); |
| | | return random.nextInt(9999999); |
| | | } |
| | | |
| | | //è·åTaskId |
| | | private static Integer getTaskId() { |
| | | Random random = new Random(); |
| | | return random.nextInt(999999); |
| | | } |
| | | |
| | | //è·å读FASç¶æä¿¡æ¯å½ä»¤ |
| | | private NyShuttleHttpCommand getReadStatusCommand(Integer shuttleNo) { |
| | | NyShuttleHttpCommand httpStandard = getHttpStandard(shuttleNo, 9999); |
| | | NyShuttleHttpCommand.NyRequest request = httpStandard.getRequest(); |
| | | |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("requestType", "readState");//读FASç¶æä¿¡æ¯ |
| | | request.setBody(body); |
| | | |
| | | httpStandard.setRequest(request); |
| | | return httpStandard; |
| | | } |
| | | |
| | | //ååºè¯·æ± |
| | | private String requestCommand(NyShuttleHttpCommand httpCommand) throws IOException { |
| | | try { |
| | | DeviceMsgUtils deviceMsgUtils = SpringUtils.getBean(DeviceMsgUtils.class); |
| | | if (deviceMsgUtils == null) { |
| | | return null; |
| | | } |
| | | |
| | | //åç¼©æ°æ®å
|
| | | JSONObject data = JSON.parseObject(JSON.toJSONString(httpCommand)); |
| | | data.remove("nodes"); |
| | | |
| | | DeviceCommandMsgModel commandMsgModel = new DeviceCommandMsgModel(); |
| | | commandMsgModel.setDeviceId(deviceConfig.getDeviceNo()); |
| | | commandMsgModel.setDeviceType(String.valueOf(SlaveType.Shuttle)); |
| | | commandMsgModel.setCommand(data); |
| | | String key = deviceMsgUtils.sendDeviceCommand(SlaveType.Shuttle, deviceConfig.getDeviceNo(), commandMsgModel); |
| | | return key; |
| | | }catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | private JSONObject queryCommandStatus(String resultKey) { |
| | | // è·åæå¡å¨ååº |
| | | JSONObject result = null; |
| | | long startTime = System.currentTimeMillis(); |
| | | while (true) { |
| | | if((System.currentTimeMillis() - startTime) > 1000 * 10) { |
| | | break; |
| | | } |
| | | |
| | | result = getRequestBody(resultKey); |
| | | if (result == null) { |
| | | continue; |
| | | }else { |
| | | break; |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | private JSONObject filterBodyData(JSONObject data) { |
| | | Object response = data.get("response"); |
| | | if (response == null) { |
| | | return null; |
| | | } |
| | | |
| | | JSONObject result = JSON.parseObject(response.toString()); |
| | | Object body = result.get("body"); |
| | | if (body == null) { |
| | | return null; |
| | | } |
| | | JSONObject jsonBody = JSON.parseObject(body.toString()); |
| | | return jsonBody; |
| | | } |
| | | |
| | | //å°å¾èç¹è½¬æ¢çç¼èç¹ |
| | | private static Map<String, Object> navigateNodeToNyPointNode(NavigateNode node) { |
| | | int[] NyPosition = WCSXyzToNyXyz(node.getX(), node.getY(), node.getZ());//WCSç³»ç»åæ 转çç¼åæ |
| | | HashMap<String, Object> point = new HashMap<>(); |
| | | point.put("x", NyPosition[0]); |
| | | point.put("y", NyPosition[1]); |
| | | point.put("z", NyPosition[2]); |
| | | return point; |
| | | } |
| | | |
| | | //WCSç³»ç»åæ 转çç¼åæ |
| | | private static int[] WCSXyzToNyXyz(int x, int y, int z) { |
| | | LocMastService locMastService = SpringUtils.getBean(LocMastService.class); |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>() |
| | | .eq("row1", x) |
| | | .eq("bay1", y) |
| | | .eq("lev1", z) |
| | | .eq("status", 1)); |
| | | if (locMast == null) { |
| | | return null; |
| | | } |
| | | |
| | | String qrCodeValue = locMast.getQrCodeValue(); |
| | | JSONObject data = JSON.parseObject(qrCodeValue); |
| | | return new int[]{data.getInteger("x"), data.getInteger("y"), z}; |
| | | } |
| | | |
| | | @Override |
| | | public Object getOriginDeviceData() { |
| | | return this.originDeviceData; |
| | | } |
| | | |
| | | @Data |
| | | private class InnerSuhttleExtend { |
| | | |
| | | /** |
| | | * 管å¶ç¶æä¸å¨ç®¡å¶ä¸/被管å¶ä¸ |
| | | * 0/1 |
| | | */ |
| | | private Integer suspendState; |
| | | |
| | | /** |
| | | * æé«çµè¯çµå(mV) |
| | | */ |
| | | private Integer maxCellVoltage; |
| | | |
| | | /** |
| | | * æä½çµè¯çµå(mV)ï¼ä½äº2900mvéè¦ç«å³å
çµ |
| | | */ |
| | | private Integer minCellVoltage; |
| | | |
| | | /** |
| | | * çµæ± çµåï¼mVï¼ |
| | | */ |
| | | private Integer voltage; |
| | | |
| | | /** |
| | | * å
æ¾çµå¾ªç¯æ¬¡æ° |
| | | */ |
| | | private Integer chargeCycleTimes; |
| | | |
| | | /** |
| | | * å©ä½çµé/10(A) |
| | | */ |
| | | private Integer surplusQuantity; |
| | | |
| | | /** |
| | | * æ»çµé/10(A) |
| | | */ |
| | | private Integer countQuantity; |
| | | public void run() { |
| | | |
| | | } |
| | | } |
| | |
| | | swagger: |
| | | enable: false |
| | | |
| | | pythonCalcPath: D:\\path\\cpu.py |
| | | pythonCalcSimilarity: D:\\path\\similarity.py |
| | | |
| | | deviceMsgConfig: |
| | | # è¯»åæ°æ®åèªå¨å é¤ |
| | | destroyAfterReading: true |
| | | |
| | | deviceExecuteConfig: |
| | | # æ¯ä¸ªçº¿ç¨ç®¡æ§è®¾å¤æ§è¡æ°é |
| | | threadControlCount: 10 |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.zy.asrs.mapper.BasCrnpErrLogMapper"> |
| | | |
| | | <!-- éç¨æ¥è¯¢æ å°ç»æ --> |
| | | <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnpErrLog"> |
| | | <id column="id" property="id" /> |
| | | <result column="wrk_no" property="wrkNo" /> |
| | | <result column="start_time" property="startTime" /> |
| | | <result column="end_time" property="endTime" /> |
| | | <result column="wrk_sts" property="wrkSts" /> |
| | | <result column="io_type" property="ioType" /> |
| | | <result column="crn_no" property="crnNo" /> |
| | | <result column="loc_no" property="locNo" /> |
| | | <result column="sta_no" property="staNo" /> |
| | | <result column="source_sta_no" property="sourceStaNo" /> |
| | | <result column="source_loc_no" property="sourceLocNo" /> |
| | | <result column="barcode" property="barcode" /> |
| | | <result column="err_code" property="errCode" /> |
| | | <result column="error" property="error" /> |
| | | <result column="status" property="status" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="create_by" property="createBy" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | <result column="update_by" property="updateBy" /> |
| | | <result column="memo" property="memo" /> |
| | | <result column="system_status" property="systemStatus" /> |
| | | |
| | | </resultMap> |
| | | |
| | | </mapper> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.zy.asrs.mapper.BasCrnpErrMapper"> |
| | | |
| | | <!-- éç¨æ¥è¯¢æ å°ç»æ --> |
| | | <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnpErr"> |
| | | <id column="id" property="id" /> |
| | | <result column="error_code" property="errorCode" /> |
| | | <result column="err_name" property="errName" /> |
| | | <result column="modi_user" property="modiUser" /> |
| | | <result column="modi_time" property="modiTime" /> |
| | | <result column="appe_user" property="appeUser" /> |
| | | <result column="appe_time" property="appeTime" /> |
| | | |
| | | </resultMap> |
| | | |
| | | </mapper> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.zy.asrs.mapper.BasCrnpMapper"> |
| | | |
| | | <!-- éç¨æ¥è¯¢æ å°ç»æ --> |
| | | <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnp"> |
| | | <id column="crn_no" property="crnNo" /> |
| | | <result column="status" property="status" /> |
| | | <result column="wrk_no" property="wrkNo" /> |
| | | <result column="in_enable" property="inEnable" /> |
| | | <result column="out_enable" property="outEnable" /> |
| | | <result column="create_by" property="createBy" /> |
| | | <result column="create_time" property="createTime" /> |
| | | <result column="update_by" property="updateBy" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | <result column="memo" property="memo" /> |
| | | |
| | | </resultMap> |
| | | |
| | | </mapper> |
| New file |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="com.zy.asrs.mapper.BasCrnpOptMapper"> |
| | | |
| | | <!-- éç¨æ¥è¯¢æ å°ç»æ --> |
| | | <resultMap id="BaseResultMap" type="com.zy.asrs.entity.BasCrnpOpt"> |
| | | <id column="id" property="id" /> |
| | | <result column="wrk_no" property="wrkNo" /> |
| | | <result column="crn_no" property="crnNo" /> |
| | | <result column="send_time" property="sendTime" /> |
| | | <result column="mode" property="mode" /> |
| | | <result column="source_loc_no" property="sourceLocNo" /> |
| | | <result column="target_loc_no" property="targetLocNo" /> |
| | | <result column="update_time" property="updateTime" /> |
| | | <result column="update_by" property="updateBy" /> |
| | | <result column="memo" property="memo" /> |
| | | <result column="command" property="command" /> |
| | | <result column="system_status" property="systemStatus" /> |
| | | <result column="send" property="send" /> |
| | | <result column="response" property="response" /> |
| | | |
| | | </resultMap> |
| | | |
| | | </mapper> |
| | |
| | | background: #f0f0f0; |
| | | } |
| | | |
| | | .shelf { |
| | | height: 35px; |
| | | border-right: none; |
| | | cursor: default; |
| | | color: rgb(194, 76, 65); |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | user-select: none; |
| | | background: #f0f0f0; |
| | | } |
| | | |
| | | .track-item { |
| | | width: 100%; |
| | | height: 35px; |
| | | border-right: none; |
| | | cursor: default; |
| | | color: rgb(194, 76, 65); |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | user-select: none; |
| | | background: #f5d88f;; |
| | | padding: 0; |
| | | margin: 0; |
| | | position: relative; |
| | | z-index: 1; |
| | | } |
| | | |
| | | /* ç«ç¹ */ |
| | | .site { |
| | | color: #333; |
| | | height: 35px; |
| | | width: 35px; |
| | | height: 100%; |
| | | cursor: pointer; |
| | | text-align: center; |
| | | background-color: rgb(120, 255, 129); |
| | |
| | | user-select: none; |
| | | } |
| | | |
| | | .crn-item { |
| | | color: #333; |
| | | height: 35px; |
| | | cursor: pointer; |
| | | text-align: center; |
| | | background-color: rgb(120, 255, 129); |
| | | font-size: 13px; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | user-select: none; |
| | | margin: 1px; |
| | | position: absolute; |
| | | z-index: 2; |
| | | } |
| | | |
| | | /* rgv */ |
| | | .rgv-item { |
| | | color: #333; |
| | | height: 35px; |
| | | cursor: pointer; |
| | | text-align: center; |
| | | background-color: rgb(120, 255, 129); |
| | | font-size: 13px; |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | user-select: none; |
| | | padding: 0; |
| | | margin: 0; |
| | | position: absolute; |
| | | z-index: 2; |
| | | } |
| | | |
| | | /*空ç«ç¹*/ |
| | | .site-k { |
| | | border: 1px solid rgb(108, 167, 168); |
| | | /*border: 1px solid rgb(108, 167, 168);*/ |
| | | background-color: rgb(108, 167, 168); |
| | | } |
| | | |
| | | /* å
¥åº */ |
| | | .machine-pakin { |
| | | background-color: rgb(163, 214, 242); |
| | | } |
| | | |
| | | /* åºåº */ |
| | | .machine-pakout { |
| | | background-color: rgb(151, 180, 0); |
| | | } |
| | | |
| | | /* åºå°åº */ |
| | | .machine-stock-move { |
| | | background-color: rgb(58, 77, 249); |
| | | } |
| | | |
| | | /* ç«å°ç« */ |
| | | .machine-site-move { |
| | | background-color: rgb(240, 140, 10); |
| | | } |
| | | |
| | | /* PToP */ |
| | | .machine-p-move { |
| | | background-color: rgb(29, 152, 23); |
| | | } |
| | | |
| | | /* å¼å¸¸ */ |
| | | .machine-error { |
| | | background-color: rgb(252, 48, 48); |
| | | } |
| | | |
| | | /* èªå¨ */ |
| | | .machine-auto { |
| | | background-color: rgb(132, 255, 115); |
| | | } |
| | | |
| | | /* éèªå¨/æå¨ */ |
| | | .machine-un-auto { |
| | | background-color: rgb(184, 184, 184); |
| | | } |
| | | |
| | | .machine-working { |
| | | background-color: rgb(255, 214, 11); |
| | | } |
| | | |
| | | /* å
¥åº */ |
| | |
| | | background-color: rgb(0, 0, 0); |
| | | } |
| | | |
| | | /* å åæºå¼¹çª */ |
| | | #crnWindow { |
| | | width: 291px; |
| | | height: 365px; |
| | | background-image: url(../images/Popup-yellow.png); |
| | | position: fixed; |
| | | color:white; |
| | | left: 50%; |
| | | top: 50%; |
| | | transform: translate(-50%,-50%); |
| | | z-index: 101; |
| | | } |
| | | |
| | | /* è¾é设å¤å¼¹çª */ |
| | | #siteWindow { |
| | | width: 300px; |
| | |
| | | transform: translate(-50%, -50%); |
| | | border-radius: 20px 20px 0 0; |
| | | overflow: hidden; |
| | | } |
| | | |
| | | /* RGVå¼¹çª */ |
| | | #rgvWindow { |
| | | width: 291px; |
| | | height: 365px; |
| | | background-image: url(../images/Popup-yellow.png); |
| | | position: fixed; |
| | | color:white; |
| | | left: 50%; |
| | | top: 50%; |
| | | transform: translate(-50%,-50%); |
| | | z-index: 101; |
| | | } |
| | | |
| | | #siteWindow-head { |
| | |
| | | display: inline-block; |
| | | float: right; |
| | | margin-right: 20px; |
| | | } |
| | | |
| | | #crnWindow-head { |
| | | width: 291px; |
| | | height: 55px; |
| | | line-height: 55px; |
| | | margin-left: 55px; |
| | | color: #000000; |
| | | font-weight: 700; |
| | | letter-spacing: 2px; |
| | | |
| | | } |
| | | #crnWindow-head .detailed { |
| | | display: inline-block; |
| | | } |
| | | #crnWindow-head button { |
| | | width: 25px; |
| | | height: 25px; |
| | | padding: 0px; |
| | | border: none; |
| | | border-radius: 25px; |
| | | background-image: url(../images/siteclose.png); |
| | | display: inline-block; |
| | | float: right; |
| | | margin-top: 15px; |
| | | margin-right: 80px; |
| | | } |
| | | |
| | | #rgvWindow-head { |
| | | width: 291px; |
| | | height: 55px; |
| | | line-height: 55px; |
| | | margin-left: 55px; |
| | | color: #000000; |
| | | font-weight: 700; |
| | | letter-spacing: 2px; |
| | | |
| | | } |
| | | #rgvWindow-head .detailed { |
| | | display: inline-block; |
| | | } |
| | | #rgvWindow-head button { |
| | | width: 25px; |
| | | height: 25px; |
| | | padding: 0px; |
| | | border: none; |
| | | border-radius: 25px; |
| | | background-image: url(../images/siteclose.png); |
| | | display: inline-block; |
| | | float: right; |
| | | margin-top: 15px; |
| | | margin-right: 80px; |
| | | } |
| | | |
| | | .siteWindow-body { |
| | |
| | | transform: translate(var(--x-pos), var(--y-pos)); |
| | | transition: transform 0.5s ease-in-out; |
| | | } |
| | | |
| | | /* å¼¹çª */ |
| | | form .form-item { |
| | | display: inline-block; |
| | | padding-left: 10px; |
| | | } |
| | | form .form-item-label { |
| | | display: inline-block; |
| | | width: 90px; |
| | | font-size: 10px; |
| | | } |
| | | form .form-item-input { |
| | | display: inline-block; |
| | | width: 180px; |
| | | |
| | | } |
| | | form .form-item-input input { |
| | | background-color: rgba(255,255,255,.3); |
| | | color: #FFFFFF; |
| | | padding: 0; |
| | | border: none; |
| | | border-radius: 2px; |
| | | height: 18px; |
| | | padding-left: 10px; |
| | | } |
| | | /* checkbox */ |
| | | form .form-item-checkbox { |
| | | display: inline-block; |
| | | padding-left: 10px; |
| | | width: 20%; |
| | | } |
| | | form .form-item-label-checkbox { |
| | | display: inline-block; |
| | | width: auto; |
| | | font-size: 14px; |
| | | } |
| | | form .form-item-input-checkbox { |
| | | display: inline-block; |
| | | width: auto; |
| | | } |
| | | |
| | | .excel-table { |
| | | border-collapse: collapse; |
| | | width: 100%; |
| | | padding: 0; |
| | | margin: 0; |
| | | } |
| | | |
| | | .excel-table td { |
| | | padding: 0; |
| | | margin: 0; |
| | | text-align: center; |
| | | } |
| | | |
| | | .excel-table .merged { |
| | | display: none; |
| | | } |
| New file |
| | |
| | | var pageCurr; |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" |
| | | }).use(['table','laydate', 'form', 'admin'], function(){ |
| | | var table = layui.table; |
| | | var $ = layui.jquery; |
| | | var layer = layui.layer; |
| | | var layDate = layui.laydate; |
| | | var form = layui.form; |
| | | var admin = layui.admin; |
| | | |
| | | // æ°æ®æ¸²æ |
| | | tableIns = table.render({ |
| | | elem: '#basCrnp', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | url: baseUrl+'/basCrnp/list/auth', |
| | | page: true, |
| | | limit: 15, |
| | | limits: [15, 30, 50, 100, 200, 500], |
| | | toolbar: '#toolbar', |
| | | cellMinWidth: 50, |
| | | height: 'full-120', |
| | | cols: [[ |
| | | {type: 'checkbox'} |
| | | ,{field: 'crnNo', align: 'center',title: 'ç¼å·'} |
| | | ,{field: 'status$', align: 'center',title: 'ç¶æ'} |
| | | ,{field: 'wrkNo', align: 'center',title: 'å·¥ä½å·'} |
| | | ,{field: 'inEnable', align: 'center',title: 'å¯å
¥(checkBox)'} |
| | | ,{field: 'outEnable', align: 'center',title: 'å¯åº(checkBox)'} |
| | | ,{field: 'createBy', align: 'center',title: 'å建人å'} |
| | | ,{field: 'createTime$', align: 'center',title: 'å建æ¶é´'} |
| | | ,{field: 'updateBy', align: 'center',title: 'ä¿®æ¹äººå'} |
| | | ,{field: 'updateTime$', align: 'center',title: 'ä¿®æ¹æ¶é´'} |
| | | ,{field: 'memo', align: 'center',title: '夿³¨'} |
| | | |
| | | ,{fixed: 'right', title:'æä½', align: 'center', toolbar: '#operate', width:120} |
| | | ]], |
| | | request: { |
| | | pageName: 'curr', |
| | | pageSize: 'limit' |
| | | }, |
| | | parseData: function (res) { |
| | | return { |
| | | 'code': res.code, |
| | | 'msg': res.msg, |
| | | 'count': res.data.total, |
| | | 'data': res.data.records |
| | | } |
| | | }, |
| | | response: { |
| | | statusCode: 200 |
| | | }, |
| | | done: function(res, curr, count) { |
| | | if (res.code === 403) { |
| | | top.location.href = baseUrl+"/"; |
| | | } |
| | | pageCurr=curr; |
| | | limit(); |
| | | } |
| | | }); |
| | | |
| | | // ç嬿åºäºä»¶ |
| | | table.on('sort(basCrnp)', function (obj) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | searchData['orderByField'] = obj.field; |
| | | searchData['orderByType'] = obj.type; |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: 1} |
| | | }); |
| | | }); |
| | | |
| | | // çå¬å¤´å·¥å
·æ äºä»¶ |
| | | table.on('toolbar(basCrnp)', function (obj) { |
| | | var checkStatus = table.checkStatus(obj.config.id).data; |
| | | switch(obj.event) { |
| | | case 'addData': |
| | | showEditModel(); |
| | | break; |
| | | case 'deleteData': |
| | | if (checkStatus.length === 0) { |
| | | layer.msg('è¯·éæ©è¦å é¤çæ°æ®', {icon: 2}); |
| | | return; |
| | | } |
| | | del(checkStatus.map(function (d) { |
| | | return d.crnNo; |
| | | })); |
| | | break; |
| | | case 'exportData': |
| | | admin.confirm('ç¡®å®å¯¼åºExcelå', {shadeClose: true}, function(){ |
| | | var titles=[]; |
| | | var fields=[]; |
| | | obj.config.cols[0].map(function (col) { |
| | | if (col.type === 'normal' && col.hide === false && col.toolbar == null) { |
| | | titles.push(col.title); |
| | | fields.push(col.field); |
| | | } |
| | | }); |
| | | var exportData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | exportData[this.name] = this.value; |
| | | }); |
| | | var param = { |
| | | 'basCrnp': exportData, |
| | | 'fields': fields |
| | | }; |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnp/export/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: JSON.stringify(param), |
| | | dataType:'json', |
| | | contentType:'application/json;charset=UTF-8', |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.closeAll(); |
| | | if (res.code === 200) { |
| | | table.exportFile(titles,res.data,'xls'); |
| | | } else if (res.code === 403) { |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}) |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | break; |
| | | } |
| | | }); |
| | | |
| | | // çå¬è¡å·¥å
·äºä»¶ |
| | | table.on('tool(basCrnp)', function(obj){ |
| | | var data = obj.data; |
| | | switch (obj.event) { |
| | | case 'edit': |
| | | showEditModel(data); |
| | | break; |
| | | case "del": |
| | | del([data.crnNo]); |
| | | break; |
| | | } |
| | | }); |
| | | |
| | | /* å¼¹çª - æ°å¢ãä¿®æ¹ */ |
| | | function showEditModel(mData) { |
| | | admin.open({ |
| | | type: 1, |
| | | area: '600px', |
| | | title: (mData ? 'ä¿®æ¹' : 'æ·»å ') + '订åç¶æ', |
| | | content: $('#editDialog').html(), |
| | | success: function (layero, dIndex) { |
| | | layDateRender(mData); |
| | | form.val('detail', mData); |
| | | form.on('submit(editSubmit)', function (data) { |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnp/"+(mData?'update':'add')+"/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: data.field, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.close(loadIndex); |
| | | if (res.code === 200){ |
| | | layer.close(dIndex); |
| | | layer.msg(res.msg, {icon: 1}); |
| | | tableReload(); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | }else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | return false; |
| | | }); |
| | | $(layero).children('.layui-layer-content').css('overflow', 'visible'); |
| | | layui.form.render('select'); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /* å é¤ */ |
| | | function del(ids) { |
| | | layer.confirm('ç¡®å®è¦å é¤é䏿°æ®åï¼', { |
| | | skin: 'layui-layer-admin', |
| | | shade: .1 |
| | | }, function (i) { |
| | | layer.close(i); |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnp/delete/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: {ids: ids}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.close(loadIndex); |
| | | if (res.code === 200){ |
| | | layer.msg(res.msg, {icon: 1}); |
| | | tableReload(); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | |
| | | // æç´¢ |
| | | form.on('submit(search)', function (data) { |
| | | pageCurr = 1; |
| | | tableReload(false); |
| | | }); |
| | | |
| | | // éç½® |
| | | form.on('submit(reset)', function (data) { |
| | | pageCurr = 1; |
| | | clearFormVal($('#search-box')); |
| | | tableReload(false); |
| | | }); |
| | | |
| | | // æ¶é´éæ©å¨ |
| | | function layDateRender(data) { |
| | | setTimeout(function () { |
| | | layDate.render({ |
| | | elem: '.layui-laydate-range' |
| | | ,type: 'datetime' |
| | | ,range: true |
| | | }); |
| | | layDate.render({ |
| | | elem: '#createTime\\$', |
| | | type: 'datetime', |
| | | value: data!==undefined?data['createTime\\$']:null |
| | | }); |
| | | layDate.render({ |
| | | elem: '#updateTime\\$', |
| | | type: 'datetime', |
| | | value: data!==undefined?data['updateTime\\$']:null |
| | | }); |
| | | |
| | | }, 300); |
| | | } |
| | | layDateRender(); |
| | | |
| | | }); |
| | | |
| | | // å
³éå¨ä½ |
| | | $(document).on('click','#data-detail-close', function () { |
| | | parent.layer.closeAll(); |
| | | }); |
| | | |
| | | function tableReload(child) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: pageCurr} |
| | | }); |
| | | } |
| New file |
| | |
| | | var pageCurr; |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" |
| | | }).use(['table','laydate', 'form', 'admin'], function(){ |
| | | var table = layui.table; |
| | | var $ = layui.jquery; |
| | | var layer = layui.layer; |
| | | var layDate = layui.laydate; |
| | | var form = layui.form; |
| | | var admin = layui.admin; |
| | | |
| | | // æ°æ®æ¸²æ |
| | | tableIns = table.render({ |
| | | elem: '#basCrnpErr', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | url: baseUrl+'/basCrnpErr/list/auth', |
| | | page: true, |
| | | limit: 15, |
| | | limits: [15, 30, 50, 100, 200, 500], |
| | | toolbar: '#toolbar', |
| | | cellMinWidth: 50, |
| | | height: 'full-120', |
| | | cols: [[ |
| | | {type: 'checkbox'} |
| | | ,{field: 'id', align: 'center',title: 'ç¼å·'} |
| | | ,{field: 'errorCode', align: 'center',title: 'å¼å¸¸ç '} |
| | | ,{field: 'errName', align: 'center',title: 'å¼å¸¸'} |
| | | ,{field: 'modiUser$', align: 'center',title: 'ä¿®æ¹äººå'} |
| | | ,{field: 'modiTime$', align: 'center',title: 'ä¿®æ¹æ¶é´'} |
| | | ,{field: 'appeUser$', align: 'center',title: 'æ·»å 人å'} |
| | | ,{field: 'appeTime$', align: 'center',title: 'æ·»å æ¶é´'} |
| | | |
| | | ,{fixed: 'right', title:'æä½', align: 'center', toolbar: '#operate', width:120} |
| | | ]], |
| | | request: { |
| | | pageName: 'curr', |
| | | pageSize: 'limit' |
| | | }, |
| | | parseData: function (res) { |
| | | return { |
| | | 'code': res.code, |
| | | 'msg': res.msg, |
| | | 'count': res.data.total, |
| | | 'data': res.data.records |
| | | } |
| | | }, |
| | | response: { |
| | | statusCode: 200 |
| | | }, |
| | | done: function(res, curr, count) { |
| | | if (res.code === 403) { |
| | | top.location.href = baseUrl+"/"; |
| | | } |
| | | pageCurr=curr; |
| | | limit(); |
| | | } |
| | | }); |
| | | |
| | | // ç嬿åºäºä»¶ |
| | | table.on('sort(basCrnpErr)', function (obj) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | searchData['orderByField'] = obj.field; |
| | | searchData['orderByType'] = obj.type; |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: 1} |
| | | }); |
| | | }); |
| | | |
| | | // çå¬å¤´å·¥å
·æ äºä»¶ |
| | | table.on('toolbar(basCrnpErr)', function (obj) { |
| | | var checkStatus = table.checkStatus(obj.config.id).data; |
| | | switch(obj.event) { |
| | | case 'addData': |
| | | showEditModel(); |
| | | break; |
| | | case 'deleteData': |
| | | if (checkStatus.length === 0) { |
| | | layer.msg('è¯·éæ©è¦å é¤çæ°æ®', {icon: 2}); |
| | | return; |
| | | } |
| | | del(checkStatus.map(function (d) { |
| | | return d.id; |
| | | })); |
| | | break; |
| | | case 'exportData': |
| | | admin.confirm('ç¡®å®å¯¼åºExcelå', {shadeClose: true}, function(){ |
| | | var titles=[]; |
| | | var fields=[]; |
| | | obj.config.cols[0].map(function (col) { |
| | | if (col.type === 'normal' && col.hide === false && col.toolbar == null) { |
| | | titles.push(col.title); |
| | | fields.push(col.field); |
| | | } |
| | | }); |
| | | var exportData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | exportData[this.name] = this.value; |
| | | }); |
| | | var param = { |
| | | 'basCrnpErr': exportData, |
| | | 'fields': fields |
| | | }; |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnpErr/export/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: JSON.stringify(param), |
| | | dataType:'json', |
| | | contentType:'application/json;charset=UTF-8', |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.closeAll(); |
| | | if (res.code === 200) { |
| | | table.exportFile(titles,res.data,'xls'); |
| | | } else if (res.code === 403) { |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}) |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | break; |
| | | } |
| | | }); |
| | | |
| | | // çå¬è¡å·¥å
·äºä»¶ |
| | | table.on('tool(basCrnpErr)', function(obj){ |
| | | var data = obj.data; |
| | | switch (obj.event) { |
| | | case 'edit': |
| | | showEditModel(data); |
| | | break; |
| | | case "del": |
| | | del([data.id]); |
| | | break; |
| | | } |
| | | }); |
| | | |
| | | /* å¼¹çª - æ°å¢ãä¿®æ¹ */ |
| | | function showEditModel(mData) { |
| | | admin.open({ |
| | | type: 1, |
| | | area: '600px', |
| | | title: (mData ? 'ä¿®æ¹' : 'æ·»å ') + '订åç¶æ', |
| | | content: $('#editDialog').html(), |
| | | success: function (layero, dIndex) { |
| | | layDateRender(mData); |
| | | form.val('detail', mData); |
| | | form.on('submit(editSubmit)', function (data) { |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnpErr/"+(mData?'update':'add')+"/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: data.field, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.close(loadIndex); |
| | | if (res.code === 200){ |
| | | layer.close(dIndex); |
| | | layer.msg(res.msg, {icon: 1}); |
| | | tableReload(); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | }else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | return false; |
| | | }); |
| | | $(layero).children('.layui-layer-content').css('overflow', 'visible'); |
| | | layui.form.render('select'); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /* å é¤ */ |
| | | function del(ids) { |
| | | layer.confirm('ç¡®å®è¦å é¤é䏿°æ®åï¼', { |
| | | skin: 'layui-layer-admin', |
| | | shade: .1 |
| | | }, function (i) { |
| | | layer.close(i); |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnpErr/delete/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: {ids: ids}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.close(loadIndex); |
| | | if (res.code === 200){ |
| | | layer.msg(res.msg, {icon: 1}); |
| | | tableReload(); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | |
| | | // æç´¢ |
| | | form.on('submit(search)', function (data) { |
| | | pageCurr = 1; |
| | | tableReload(false); |
| | | }); |
| | | |
| | | // éç½® |
| | | form.on('submit(reset)', function (data) { |
| | | pageCurr = 1; |
| | | clearFormVal($('#search-box')); |
| | | tableReload(false); |
| | | }); |
| | | |
| | | // æ¶é´éæ©å¨ |
| | | function layDateRender(data) { |
| | | setTimeout(function () { |
| | | layDate.render({ |
| | | elem: '.layui-laydate-range' |
| | | ,type: 'datetime' |
| | | ,range: true |
| | | }); |
| | | layDate.render({ |
| | | elem: '#modiTime\\$', |
| | | type: 'datetime', |
| | | value: data!==undefined?data['modiTime\\$']:null |
| | | }); |
| | | layDate.render({ |
| | | elem: '#appeTime\\$', |
| | | type: 'datetime', |
| | | value: data!==undefined?data['appeTime\\$']:null |
| | | }); |
| | | |
| | | }, 300); |
| | | } |
| | | layDateRender(); |
| | | |
| | | }); |
| | | |
| | | // å
³éå¨ä½ |
| | | $(document).on('click','#data-detail-close', function () { |
| | | parent.layer.closeAll(); |
| | | }); |
| | | |
| | | function tableReload(child) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: pageCurr} |
| | | }); |
| | | } |
| New file |
| | |
| | | var pageCurr; |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" |
| | | }).use(['table','laydate', 'form', 'admin'], function(){ |
| | | var table = layui.table; |
| | | var $ = layui.jquery; |
| | | var layer = layui.layer; |
| | | var layDate = layui.laydate; |
| | | var form = layui.form; |
| | | var admin = layui.admin; |
| | | |
| | | // æ°æ®æ¸²æ |
| | | tableIns = table.render({ |
| | | elem: '#basCrnpErrLog', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | url: baseUrl+'/basCrnpErrLog/list/auth', |
| | | page: true, |
| | | limit: 15, |
| | | limits: [15, 30, 50, 100, 200, 500], |
| | | toolbar: '#toolbar', |
| | | cellMinWidth: 50, |
| | | height: 'full-120', |
| | | cols: [[ |
| | | {type: 'checkbox'} |
| | | ,{field: 'id', align: 'center',title: 'ç¼å·'} |
| | | ,{field: 'wrkNo', align: 'center',title: 'å·¥ä½å·'} |
| | | ,{field: 'startTime$', align: 'center',title: 'åçæ¶é´'} |
| | | ,{field: 'endTime$', align: 'center',title: 'ç»ææ¶é´'} |
| | | ,{field: 'wrkSts$', align: 'center',title: 'å·¥ä½ç¶æ'} |
| | | ,{field: 'ioType$', align: 'center',title: 'å
¥åºåºç±»å'} |
| | | ,{field: 'crnNo', align: 'center',title: 'å åæºå·'} |
| | | ,{field: 'locNo', align: 'center',title: 'ç®æ åºä½'} |
| | | ,{field: 'staNo', align: 'center',title: 'ç®æ ç«'} |
| | | ,{field: 'sourceStaNo', align: 'center',title: 'æºç«'} |
| | | ,{field: 'sourceLocNo', align: 'center',title: 'æºåºä½'} |
| | | ,{field: 'barcode', align: 'center',title: 'æ¡ç '} |
| | | ,{field: 'errCode', align: 'center',title: 'å¼å¸¸ç '} |
| | | ,{field: 'error', align: 'center',title: 'å¼å¸¸'} |
| | | ,{field: 'status$', align: 'center',title: 'å¼å¸¸æ
åµ'} |
| | | ,{field: 'createTime$', align: 'center',title: 'æ·»å æ¶é´'} |
| | | ,{field: 'createBy$', align: 'center',title: 'æ·»å 人å'} |
| | | ,{field: 'updateTime$', align: 'center',title: 'ä¿®æ¹æ¶é´'} |
| | | ,{field: 'updateBy$', align: 'center',title: 'ä¿®æ¹äººå'} |
| | | ,{field: 'memo', align: 'center',title: '夿³¨'} |
| | | ,{field: 'systemStatus', align: 'center',title: 'ç³»ç»ç¶ææ°æ®'} |
| | | |
| | | ,{fixed: 'right', title:'æä½', align: 'center', toolbar: '#operate', width:120} |
| | | ]], |
| | | request: { |
| | | pageName: 'curr', |
| | | pageSize: 'limit' |
| | | }, |
| | | parseData: function (res) { |
| | | return { |
| | | 'code': res.code, |
| | | 'msg': res.msg, |
| | | 'count': res.data.total, |
| | | 'data': res.data.records |
| | | } |
| | | }, |
| | | response: { |
| | | statusCode: 200 |
| | | }, |
| | | done: function(res, curr, count) { |
| | | if (res.code === 403) { |
| | | top.location.href = baseUrl+"/"; |
| | | } |
| | | pageCurr=curr; |
| | | limit(); |
| | | } |
| | | }); |
| | | |
| | | // ç嬿åºäºä»¶ |
| | | table.on('sort(basCrnpErrLog)', function (obj) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | searchData['orderByField'] = obj.field; |
| | | searchData['orderByType'] = obj.type; |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: 1} |
| | | }); |
| | | }); |
| | | |
| | | // çå¬å¤´å·¥å
·æ äºä»¶ |
| | | table.on('toolbar(basCrnpErrLog)', function (obj) { |
| | | var checkStatus = table.checkStatus(obj.config.id).data; |
| | | switch(obj.event) { |
| | | case 'addData': |
| | | showEditModel(); |
| | | break; |
| | | case 'deleteData': |
| | | if (checkStatus.length === 0) { |
| | | layer.msg('è¯·éæ©è¦å é¤çæ°æ®', {icon: 2}); |
| | | return; |
| | | } |
| | | del(checkStatus.map(function (d) { |
| | | return d.id; |
| | | })); |
| | | break; |
| | | case 'exportData': |
| | | admin.confirm('ç¡®å®å¯¼åºExcelå', {shadeClose: true}, function(){ |
| | | var titles=[]; |
| | | var fields=[]; |
| | | obj.config.cols[0].map(function (col) { |
| | | if (col.type === 'normal' && col.hide === false && col.toolbar == null) { |
| | | titles.push(col.title); |
| | | fields.push(col.field); |
| | | } |
| | | }); |
| | | var exportData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | exportData[this.name] = this.value; |
| | | }); |
| | | var param = { |
| | | 'basCrnpErrLog': exportData, |
| | | 'fields': fields |
| | | }; |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnpErrLog/export/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: JSON.stringify(param), |
| | | dataType:'json', |
| | | contentType:'application/json;charset=UTF-8', |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.closeAll(); |
| | | if (res.code === 200) { |
| | | table.exportFile(titles,res.data,'xls'); |
| | | } else if (res.code === 403) { |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}) |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | break; |
| | | } |
| | | }); |
| | | |
| | | // çå¬è¡å·¥å
·äºä»¶ |
| | | table.on('tool(basCrnpErrLog)', function(obj){ |
| | | var data = obj.data; |
| | | switch (obj.event) { |
| | | case 'edit': |
| | | showEditModel(data); |
| | | break; |
| | | case "del": |
| | | del([data.id]); |
| | | break; |
| | | } |
| | | }); |
| | | |
| | | /* å¼¹çª - æ°å¢ãä¿®æ¹ */ |
| | | function showEditModel(mData) { |
| | | admin.open({ |
| | | type: 1, |
| | | area: '600px', |
| | | title: (mData ? 'ä¿®æ¹' : 'æ·»å ') + '订åç¶æ', |
| | | content: $('#editDialog').html(), |
| | | success: function (layero, dIndex) { |
| | | layDateRender(mData); |
| | | form.val('detail', mData); |
| | | form.on('submit(editSubmit)', function (data) { |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnpErrLog/"+(mData?'update':'add')+"/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: data.field, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.close(loadIndex); |
| | | if (res.code === 200){ |
| | | layer.close(dIndex); |
| | | layer.msg(res.msg, {icon: 1}); |
| | | tableReload(); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | }else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | return false; |
| | | }); |
| | | $(layero).children('.layui-layer-content').css('overflow', 'visible'); |
| | | layui.form.render('select'); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /* å é¤ */ |
| | | function del(ids) { |
| | | layer.confirm('ç¡®å®è¦å é¤é䏿°æ®åï¼', { |
| | | skin: 'layui-layer-admin', |
| | | shade: .1 |
| | | }, function (i) { |
| | | layer.close(i); |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnpErrLog/delete/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: {ids: ids}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.close(loadIndex); |
| | | if (res.code === 200){ |
| | | layer.msg(res.msg, {icon: 1}); |
| | | tableReload(); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | |
| | | // æç´¢ |
| | | form.on('submit(search)', function (data) { |
| | | pageCurr = 1; |
| | | tableReload(false); |
| | | }); |
| | | |
| | | // éç½® |
| | | form.on('submit(reset)', function (data) { |
| | | pageCurr = 1; |
| | | clearFormVal($('#search-box')); |
| | | tableReload(false); |
| | | }); |
| | | |
| | | // æ¶é´éæ©å¨ |
| | | function layDateRender(data) { |
| | | setTimeout(function () { |
| | | layDate.render({ |
| | | elem: '.layui-laydate-range' |
| | | ,type: 'datetime' |
| | | ,range: true |
| | | }); |
| | | layDate.render({ |
| | | elem: '#startTime\\$', |
| | | type: 'datetime', |
| | | value: data!==undefined?data['startTime\\$']:null |
| | | }); |
| | | layDate.render({ |
| | | elem: '#endTime\\$', |
| | | type: 'datetime', |
| | | value: data!==undefined?data['endTime\\$']:null |
| | | }); |
| | | layDate.render({ |
| | | elem: '#createTime\\$', |
| | | type: 'datetime', |
| | | value: data!==undefined?data['createTime\\$']:null |
| | | }); |
| | | layDate.render({ |
| | | elem: '#updateTime\\$', |
| | | type: 'datetime', |
| | | value: data!==undefined?data['updateTime\\$']:null |
| | | }); |
| | | |
| | | }, 300); |
| | | } |
| | | layDateRender(); |
| | | |
| | | }); |
| | | |
| | | // å
³éå¨ä½ |
| | | $(document).on('click','#data-detail-close', function () { |
| | | parent.layer.closeAll(); |
| | | }); |
| | | |
| | | function tableReload(child) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: pageCurr} |
| | | }); |
| | | } |
| New file |
| | |
| | | var pageCurr; |
| | | layui.config({ |
| | | base: baseUrl + "/static/layui/lay/modules/" |
| | | }).use(['table','laydate', 'form', 'admin'], function(){ |
| | | var table = layui.table; |
| | | var $ = layui.jquery; |
| | | var layer = layui.layer; |
| | | var layDate = layui.laydate; |
| | | var form = layui.form; |
| | | var admin = layui.admin; |
| | | |
| | | // æ°æ®æ¸²æ |
| | | tableIns = table.render({ |
| | | elem: '#basCrnpOpt', |
| | | headers: {token: localStorage.getItem('token')}, |
| | | url: baseUrl+'/basCrnpOpt/list/auth', |
| | | page: true, |
| | | limit: 15, |
| | | limits: [15, 30, 50, 100, 200, 500], |
| | | toolbar: '#toolbar', |
| | | cellMinWidth: 50, |
| | | height: 'full-120', |
| | | cols: [[ |
| | | {type: 'checkbox'} |
| | | ,{field: 'id', align: 'center',title: 'ç¼å·'} |
| | | ,{field: 'wrkNo', align: 'center',title: 'å·¥ä½å·'} |
| | | ,{field: 'crnNo', align: 'center',title: 'å åæºå·'} |
| | | ,{field: 'sendTime$', align: 'center',title: 'ä¸åæ¶é´'} |
| | | ,{field: 'mode', align: 'center',title: 'ä½ä¸'} |
| | | ,{field: 'sourceLocNo', align: 'center',title: 'èµ·ç¹åºä½'} |
| | | ,{field: 'targetLocNo', align: 'center',title: 'ç®æ åºä½'} |
| | | ,{field: 'updateTime$', align: 'center',title: 'ä¿®æ¹æ¶é´'} |
| | | ,{field: 'updateBy$', align: 'center',title: 'ä¿®æ¹äººå'} |
| | | ,{field: 'memo', align: 'center',title: '夿³¨'} |
| | | ,{field: 'command', align: 'center',title: 'å½ä»¤'} |
| | | ,{field: 'systemStatus', align: 'center',title: 'ç³»ç»ç¶æ'} |
| | | ,{field: 'send$', align: 'center',title: 'ä¸åç¶æ'} |
| | | ,{field: 'response', align: 'center',title: '请æ±ååº'} |
| | | |
| | | ,{fixed: 'right', title:'æä½', align: 'center', toolbar: '#operate', width:120} |
| | | ]], |
| | | request: { |
| | | pageName: 'curr', |
| | | pageSize: 'limit' |
| | | }, |
| | | parseData: function (res) { |
| | | return { |
| | | 'code': res.code, |
| | | 'msg': res.msg, |
| | | 'count': res.data.total, |
| | | 'data': res.data.records |
| | | } |
| | | }, |
| | | response: { |
| | | statusCode: 200 |
| | | }, |
| | | done: function(res, curr, count) { |
| | | if (res.code === 403) { |
| | | top.location.href = baseUrl+"/"; |
| | | } |
| | | pageCurr=curr; |
| | | limit(); |
| | | } |
| | | }); |
| | | |
| | | // ç嬿åºäºä»¶ |
| | | table.on('sort(basCrnpOpt)', function (obj) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | searchData['orderByField'] = obj.field; |
| | | searchData['orderByType'] = obj.type; |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: 1} |
| | | }); |
| | | }); |
| | | |
| | | // çå¬å¤´å·¥å
·æ äºä»¶ |
| | | table.on('toolbar(basCrnpOpt)', function (obj) { |
| | | var checkStatus = table.checkStatus(obj.config.id).data; |
| | | switch(obj.event) { |
| | | case 'addData': |
| | | showEditModel(); |
| | | break; |
| | | case 'deleteData': |
| | | if (checkStatus.length === 0) { |
| | | layer.msg('è¯·éæ©è¦å é¤çæ°æ®', {icon: 2}); |
| | | return; |
| | | } |
| | | del(checkStatus.map(function (d) { |
| | | return d.id; |
| | | })); |
| | | break; |
| | | case 'exportData': |
| | | admin.confirm('ç¡®å®å¯¼åºExcelå', {shadeClose: true}, function(){ |
| | | var titles=[]; |
| | | var fields=[]; |
| | | obj.config.cols[0].map(function (col) { |
| | | if (col.type === 'normal' && col.hide === false && col.toolbar == null) { |
| | | titles.push(col.title); |
| | | fields.push(col.field); |
| | | } |
| | | }); |
| | | var exportData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | exportData[this.name] = this.value; |
| | | }); |
| | | var param = { |
| | | 'basCrnpOpt': exportData, |
| | | 'fields': fields |
| | | }; |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnpOpt/export/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: JSON.stringify(param), |
| | | dataType:'json', |
| | | contentType:'application/json;charset=UTF-8', |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.closeAll(); |
| | | if (res.code === 200) { |
| | | table.exportFile(titles,res.data,'xls'); |
| | | } else if (res.code === 403) { |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}) |
| | | } |
| | | } |
| | | }); |
| | | }); |
| | | break; |
| | | } |
| | | }); |
| | | |
| | | // çå¬è¡å·¥å
·äºä»¶ |
| | | table.on('tool(basCrnpOpt)', function(obj){ |
| | | var data = obj.data; |
| | | switch (obj.event) { |
| | | case 'edit': |
| | | showEditModel(data); |
| | | break; |
| | | case "del": |
| | | del([data.id]); |
| | | break; |
| | | } |
| | | }); |
| | | |
| | | /* å¼¹çª - æ°å¢ãä¿®æ¹ */ |
| | | function showEditModel(mData) { |
| | | admin.open({ |
| | | type: 1, |
| | | area: '600px', |
| | | title: (mData ? 'ä¿®æ¹' : 'æ·»å ') + '订åç¶æ', |
| | | content: $('#editDialog').html(), |
| | | success: function (layero, dIndex) { |
| | | layDateRender(mData); |
| | | form.val('detail', mData); |
| | | form.on('submit(editSubmit)', function (data) { |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnpOpt/"+(mData?'update':'add')+"/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: data.field, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.close(loadIndex); |
| | | if (res.code === 200){ |
| | | layer.close(dIndex); |
| | | layer.msg(res.msg, {icon: 1}); |
| | | tableReload(); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | }else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | return false; |
| | | }); |
| | | $(layero).children('.layui-layer-content').css('overflow', 'visible'); |
| | | layui.form.render('select'); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | /* å é¤ */ |
| | | function del(ids) { |
| | | layer.confirm('ç¡®å®è¦å é¤é䏿°æ®åï¼', { |
| | | skin: 'layui-layer-admin', |
| | | shade: .1 |
| | | }, function (i) { |
| | | layer.close(i); |
| | | var loadIndex = layer.load(2); |
| | | $.ajax({ |
| | | url: baseUrl+"/basCrnpOpt/delete/auth", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | data: {ids: ids}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | layer.close(loadIndex); |
| | | if (res.code === 200){ |
| | | layer.msg(res.msg, {icon: 1}); |
| | | tableReload(); |
| | | } else if (res.code === 403){ |
| | | top.location.href = baseUrl+"/"; |
| | | } else { |
| | | layer.msg(res.msg, {icon: 2}); |
| | | } |
| | | } |
| | | }) |
| | | }); |
| | | } |
| | | |
| | | // æç´¢ |
| | | form.on('submit(search)', function (data) { |
| | | pageCurr = 1; |
| | | tableReload(false); |
| | | }); |
| | | |
| | | // éç½® |
| | | form.on('submit(reset)', function (data) { |
| | | pageCurr = 1; |
| | | clearFormVal($('#search-box')); |
| | | tableReload(false); |
| | | }); |
| | | |
| | | // æ¶é´éæ©å¨ |
| | | function layDateRender(data) { |
| | | setTimeout(function () { |
| | | layDate.render({ |
| | | elem: '.layui-laydate-range' |
| | | ,type: 'datetime' |
| | | ,range: true |
| | | }); |
| | | layDate.render({ |
| | | elem: '#sendTime\\$', |
| | | type: 'datetime', |
| | | value: data!==undefined?data['sendTime\\$']:null |
| | | }); |
| | | layDate.render({ |
| | | elem: '#updateTime\\$', |
| | | type: 'datetime', |
| | | value: data!==undefined?data['updateTime\\$']:null |
| | | }); |
| | | |
| | | }, 300); |
| | | } |
| | | layDateRender(); |
| | | |
| | | }); |
| | | |
| | | // å
³éå¨ä½ |
| | | $(document).on('click','#data-detail-close', function () { |
| | | parent.layer.closeAll(); |
| | | }); |
| | | |
| | | function tableReload(child) { |
| | | var searchData = {}; |
| | | $.each($('#search-box [name]').serializeArray(), function() { |
| | | searchData[this.name] = this.value; |
| | | }); |
| | | tableIns.reload({ |
| | | where: searchData, |
| | | page: {curr: pageCurr} |
| | | }); |
| | | } |
| | |
| | | var baseUrl = "/rcs"; |
| | | var baseUrl = "/wcs"; |
| | | |
| | | // èµå¼ |
| | | function setVal(el, val) { |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title></title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| | | <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all"> |
| | | <link rel="stylesheet" href="../../../static/css/cool.css" media="all"> |
| | | </head> |
| | | <body> |
| | | |
| | | <div class="layui-fluid"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-body"> |
| | | <div class="layui-form toolbar" id="search-box"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="id" placeholder="ç¼å·" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width: 300px"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="èµ·å§æ¶é´ - ç»æ¢æ¶é´" autocomplete="off" style="width: 300px"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="condition" placeholder="请è¾å
¥" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline">  |
| | | <button class="layui-btn icon-btn" lay-filter="search" lay-submit> |
| | | <i class="layui-icon"></i>æç´¢ |
| | | </button> |
| | | <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> |
| | | <i class="layui-icon"></i>éç½® |
| | | </button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <table class="layui-hide" id="basCrnp" lay-filter="basCrnp"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <script type="text/html" id="toolbar"> |
| | | <div class="layui-btn-container"> |
| | | <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">æ°å¢</button> |
| | | <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">å é¤</button> |
| | | <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导åº</button> |
| | | </div> |
| | | </script> |
| | | |
| | | <script type="text/html" id="operate"> |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">ä¿®æ¹</a> |
| | | <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">å é¤</a> |
| | | </script> |
| | | |
| | | <script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script> |
| | | <script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/basCrnp/basCrnp.js" charset="utf-8"></script> |
| | | </body> |
| | | <!-- 表åå¼¹çª --> |
| | | <script type="text/html" id="editDialog"> |
| | | <form id="detail" lay-filter="detail" class="layui-form admin-form model-form"> |
| | | <input name="crnNo" type="hidden"> |
| | | <div class="layui-row"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ç¶æ: </label> |
| | | <div class="layui-input-block"> |
| | | <select name="status"> |
| | | <option value="">è¯·éæ©ç¶æ</option> |
| | | <option value="1">æ£å¸¸</option> |
| | | <option value="0">ç¦ç¨</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å·¥ä½å·: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="wrkNo" placeholder="请è¾å
¥å·¥ä½å·"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å¯å
¥(checkBox): </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="inEnable" placeholder="请è¾å
¥å¯å
¥(checkBox)"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å¯åº(checkBox): </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="outEnable" placeholder="请è¾å
¥å¯åº(checkBox)"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">夿³¨: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="memo" placeholder="请è¾å
¥å¤æ³¨"> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <hr class="layui-bg-gray"> |
| | | <div class="layui-form-item text-right"> |
| | | <button class="layui-btn" lay-filter="editSubmit" lay-submit="">ä¿å</button> |
| | | <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">åæ¶</button> |
| | | </div> |
| | | </form> |
| | | </script> |
| | | </html> |
| | | |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title></title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| | | <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" href="../../static/css/cool.css" media="all"> |
| | | <link rel="stylesheet" href="../../static/css/common.css" media="all"> |
| | | </head> |
| | | <body> |
| | | |
| | | <!-- 详æ
--> |
| | | <div id="data-detail" class="layer_self_wrap"> |
| | | <form id="detail" class="layui-form"> |
| | | <!-- |
| | | <div class="layui-inline" style="display: none"> |
| | | <label class="layui-form-label"><span class="not-null">*</span>ç¼ããå·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="id" class="layui-input" type="text" placeholder="ç¼å·"> |
| | | </div> |
| | | </div> |
| | | --> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label"><span class="not-null">*</span>ç¼ããå·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="crnNo" class="layui-input" type="text" onkeyup="check(this.id, 'basCrnp')" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ç¶ããæï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <select id="status"> |
| | | <option value="" style="display: none"></option> |
| | | <option value="1">æ£å¸¸</option> |
| | | <option value="0">ç¦ç¨</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å·¥ ä½ å·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="wrkNo" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label" style="font-size: x-small">å¯å
¥(checkBox)ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="inEnable" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label" style="font-size: x-small">å¯åº(checkBox)ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="outEnable" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å建人åï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="createBy" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å建æ¶é´ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="createTime$" class="layui-input" type="text" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä¿®æ¹äººåï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="updateBy" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä¿®æ¹æ¶é´ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="updateTime$" class="layui-input" type="text" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å¤ããæ³¨ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="memo" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <hr class="layui-bg-gray"> |
| | | |
| | | <div id="data-detail-btn" class="layui-btn-container layui-form-item"> |
| | | <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">ä¿å</div> |
| | | <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">ä¿®æ¹</div> |
| | | <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">å
³é</div> |
| | | </div> |
| | | |
| | | <div id="prompt"> |
| | | 温馨æç¤ºï¼è¯·ä»ç»å¡«åç¸å
³ä¿¡æ¯ï¼<span class="extrude"><span class="not-null">*</span> 为å¿
å¡«é项ã</span> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | </body> |
| | | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> |
| | | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/basCrnp/basCrnp.js" charset="utf-8"></script> |
| | | </html> |
| | | |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title></title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| | | <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all"> |
| | | <link rel="stylesheet" href="../../../static/css/cool.css" media="all"> |
| | | </head> |
| | | <body> |
| | | |
| | | <div class="layui-fluid"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-body"> |
| | | <div class="layui-form toolbar" id="search-box"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="id" placeholder="ç¼å·" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width: 300px"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="èµ·å§æ¶é´ - ç»æ¢æ¶é´" autocomplete="off" style="width: 300px"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="condition" placeholder="请è¾å
¥" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline">  |
| | | <button class="layui-btn icon-btn" lay-filter="search" lay-submit> |
| | | <i class="layui-icon"></i>æç´¢ |
| | | </button> |
| | | <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> |
| | | <i class="layui-icon"></i>éç½® |
| | | </button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <table class="layui-hide" id="basCrnpErr" lay-filter="basCrnpErr"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <script type="text/html" id="toolbar"> |
| | | <div class="layui-btn-container"> |
| | | <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">æ°å¢</button> |
| | | <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">å é¤</button> |
| | | <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导åº</button> |
| | | </div> |
| | | </script> |
| | | |
| | | <script type="text/html" id="operate"> |
| | | <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">ä¿®æ¹</a> |
| | | <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">å é¤</a> |
| | | </script> |
| | | |
| | | <script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script> |
| | | <script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/basCrnpErr/basCrnpErr.js" charset="utf-8"></script> |
| | | </body> |
| | | <!-- 表åå¼¹çª --> |
| | | <script type="text/html" id="editDialog"> |
| | | <form id="detail" lay-filter="detail" class="layui-form admin-form model-form"> |
| | | <input name="id" type="hidden"> |
| | | <div class="layui-row"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å¼å¸¸ç : </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="errorCode" placeholder="请è¾å
¥å¼å¸¸ç "> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å¼å¸¸: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="errName" placeholder="请è¾å
¥å¼å¸¸"> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <hr class="layui-bg-gray"> |
| | | <div class="layui-form-item text-right"> |
| | | <button class="layui-btn" lay-filter="editSubmit" lay-submit="">ä¿å</button> |
| | | <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">åæ¶</button> |
| | | </div> |
| | | </form> |
| | | </script> |
| | | </html> |
| | | |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title></title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| | | <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" href="../../static/css/cool.css" media="all"> |
| | | <link rel="stylesheet" href="../../static/css/common.css" media="all"> |
| | | </head> |
| | | <body> |
| | | |
| | | <!-- 详æ
--> |
| | | <div id="data-detail" class="layer_self_wrap"> |
| | | <form id="detail" class="layui-form"> |
| | | <!-- |
| | | <div class="layui-inline" style="display: none"> |
| | | <label class="layui-form-label"><span class="not-null">*</span>ç¼ããå·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="id" class="layui-input" type="text" placeholder="ç¼å·"> |
| | | </div> |
| | | </div> |
| | | --> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label"><span class="not-null">*</span>ç¼ããå·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'basCrnpErr')" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å¼ å¸¸ ç ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="errorCode" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å¼ãã常ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="errName" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä¿®æ¹äººåï¼</label> |
| | | <div class="layui-input-inline cool-auto-complete"> |
| | | <input id="modiUser" class="layui-input" type="text" lay-verify="number" style="display: none"> |
| | | <input id="modiUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥..." onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="userQueryBymodiUser" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="userQueryBymodiUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä¿®æ¹æ¶é´ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="modiTime$" class="layui-input" type="text" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">æ·»å 人åï¼</label> |
| | | <div class="layui-input-inline cool-auto-complete"> |
| | | <input id="appeUser" class="layui-input" type="text" lay-verify="number" style="display: none"> |
| | | <input id="appeUser$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥..." onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="userQueryByappeUser" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="userQueryByappeUserSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">æ·»å æ¶é´ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="appeTime$" class="layui-input" type="text" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <hr class="layui-bg-gray"> |
| | | |
| | | <div id="data-detail-btn" class="layui-btn-container layui-form-item"> |
| | | <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">ä¿å</div> |
| | | <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">ä¿®æ¹</div> |
| | | <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">å
³é</div> |
| | | </div> |
| | | |
| | | <div id="prompt"> |
| | | 温馨æç¤ºï¼è¯·ä»ç»å¡«åç¸å
³ä¿¡æ¯ï¼<span class="extrude"><span class="not-null">*</span> 为å¿
å¡«é项ã</span> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | </body> |
| | | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> |
| | | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/basCrnpErr/basCrnpErr.js" charset="utf-8"></script> |
| | | </html> |
| | | |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title></title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| | | <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all"> |
| | | <link rel="stylesheet" href="../../../static/css/cool.css" media="all"> |
| | | </head> |
| | | <body> |
| | | |
| | | <div class="layui-fluid"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-body"> |
| | | <div class="layui-form toolbar" id="search-box"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="id" placeholder="ç¼å·" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width: 300px"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="èµ·å§æ¶é´ - ç»æ¢æ¶é´" autocomplete="off" style="width: 300px"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="condition" placeholder="请è¾å
¥" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline">  |
| | | <button class="layui-btn icon-btn" lay-filter="search" lay-submit> |
| | | <i class="layui-icon"></i>æç´¢ |
| | | </button> |
| | | <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> |
| | | <i class="layui-icon"></i>éç½® |
| | | </button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <table class="layui-hide" id="basCrnpErrLog" lay-filter="basCrnpErrLog"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <script type="text/html" id="toolbar"> |
| | | <div class="layui-btn-container"> |
| | | <!-- <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">æ°å¢</button>--> |
| | | <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">å é¤</button> |
| | | <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导åº</button> |
| | | </div> |
| | | </script> |
| | | |
| | | <script type="text/html" id="operate"> |
| | | <!-- <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">ä¿®æ¹</a>--> |
| | | <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">å é¤</a> |
| | | </script> |
| | | |
| | | <script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script> |
| | | <script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/basCrnpErrLog/basCrnpErrLog.js" charset="utf-8"></script> |
| | | </body> |
| | | <!-- 表åå¼¹çª --> |
| | | <script type="text/html" id="editDialog"> |
| | | <form id="detail" lay-filter="detail" class="layui-form admin-form model-form"> |
| | | <input name="id" type="hidden"> |
| | | <div class="layui-row"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å·¥ä½å·: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="wrkNo" placeholder="请è¾å
¥å·¥ä½å·"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">åçæ¶é´: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="startTime" id="startTime$" placeholder="请è¾å
¥åçæ¶é´"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ç»ææ¶é´: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="endTime" id="endTime$" placeholder="请è¾å
¥ç»ææ¶é´"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å·¥ä½ç¶æ: </label> |
| | | <div class="layui-input-block cool-auto-complete"> |
| | | <input class="layui-input" name="wrkSts" placeholder="请è¾å
¥å·¥ä½ç¶æ" style="display: none"> |
| | | <input id="wrkSts$" name="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥å·¥ä½ç¶æ" onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å
¥åºåºç±»å: </label> |
| | | <div class="layui-input-block cool-auto-complete"> |
| | | <input class="layui-input" name="ioType" placeholder="请è¾å
¥å
¥åºåºç±»å" style="display: none"> |
| | | <input id="ioType$" name="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥å
¥åºåºç±»å" onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å åæºå·: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="crnNo" placeholder="请è¾å
¥å åæºå·"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ç®æ åºä½: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="locNo" placeholder="请è¾å
¥ç®æ åºä½"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ç®æ ç«: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="staNo" placeholder="请è¾å
¥ç®æ ç«"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">æºç«: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="sourceStaNo" placeholder="请è¾å
¥æºç«"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">æºåºä½: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="sourceLocNo" placeholder="请è¾å
¥æºåºä½"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">æ¡ç : </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="barcode" placeholder="请è¾å
¥æ¡ç "> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å¼å¸¸ç : </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="errCode" placeholder="请è¾å
¥å¼å¸¸ç "> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å¼å¸¸: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="error" placeholder="请è¾å
¥å¼å¸¸"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å¼å¸¸æ
åµ: </label> |
| | | <div class="layui-input-block"> |
| | | <select name="status"> |
| | | <option value="">è¯·éæ©å¼å¸¸æ
åµ</option> |
| | | <option value="1">æªå¤ç</option> |
| | | <option value="2">已修å¤</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">æ·»å æ¶é´: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="createTime" id="createTime$" placeholder="请è¾å
¥æ·»å æ¶é´"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">æ·»å 人å: </label> |
| | | <div class="layui-input-block cool-auto-complete"> |
| | | <input class="layui-input" name="createBy" placeholder="请è¾å
¥æ·»å 人å" style="display: none"> |
| | | <input id="createBy$" name="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥æ·»å 人å" onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ä¿®æ¹æ¶é´: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="updateTime" id="updateTime$" placeholder="请è¾å
¥ä¿®æ¹æ¶é´"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ä¿®æ¹äººå: </label> |
| | | <div class="layui-input-block cool-auto-complete"> |
| | | <input class="layui-input" name="updateBy" placeholder="请è¾å
¥ä¿®æ¹äººå" style="display: none"> |
| | | <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥ä¿®æ¹äººå" onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">夿³¨: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="memo" placeholder="请è¾å
¥å¤æ³¨"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ç³»ç»ç¶ææ°æ®: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="systemStatus" placeholder="请è¾å
¥ç³»ç»ç¶ææ°æ®"> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <hr class="layui-bg-gray"> |
| | | <div class="layui-form-item text-right"> |
| | | <button class="layui-btn" lay-filter="editSubmit" lay-submit="">ä¿å</button> |
| | | <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">åæ¶</button> |
| | | </div> |
| | | </form> |
| | | </script> |
| | | </html> |
| | | |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title></title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| | | <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" href="../../static/css/cool.css" media="all"> |
| | | <link rel="stylesheet" href="../../static/css/common.css" media="all"> |
| | | </head> |
| | | <body> |
| | | |
| | | <!-- 详æ
--> |
| | | <div id="data-detail" class="layer_self_wrap"> |
| | | <form id="detail" class="layui-form"> |
| | | <!-- |
| | | <div class="layui-inline" style="display: none"> |
| | | <label class="layui-form-label"><span class="not-null">*</span>ç¼ããå·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="id" class="layui-input" type="text" placeholder="ç¼å·"> |
| | | </div> |
| | | </div> |
| | | --> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label"><span class="not-null">*</span>ç¼ããå·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'basCrnpErrLog')" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å·¥ ä½ å·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="wrkNo" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">åçæ¶é´ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="startTime$" class="layui-input" type="text" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ç»ææ¶é´ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="endTime$" class="layui-input" type="text" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å·¥ä½ç¶æï¼</label> |
| | | <div class="layui-input-inline cool-auto-complete"> |
| | | <input id="wrkSts" class="layui-input" type="text" lay-verify="number" style="display: none"> |
| | | <input id="wrkSts$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥..." onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="basWrkStatusQueryBywrkSts" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="basWrkStatusQueryBywrkStsSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å
¥åºåºç±»åï¼</label> |
| | | <div class="layui-input-inline cool-auto-complete"> |
| | | <input id="ioType" class="layui-input" type="text" lay-verify="number" style="display: none"> |
| | | <input id="ioType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥..." onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="basWrkIotypeQueryByioType" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="basWrkIotypeQueryByioTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å åæºå·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="crnNo" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ç®æ åºä½ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="locNo" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ç® æ ç«ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="staNo" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">æºããç«ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="sourceStaNo" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">æº åº ä½ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="sourceLocNo" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">æ¡ããç ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="barcode" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å¼ å¸¸ ç ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="errCode" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å¼ãã常ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="error" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å¼å¸¸æ
åµï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <select id="status"> |
| | | <option value="" style="display: none"></option> |
| | | <option value="1">æªå¤ç</option> |
| | | <option value="2">已修å¤</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">æ·»å æ¶é´ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="createTime$" class="layui-input" type="text" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">æ·»å 人åï¼</label> |
| | | <div class="layui-input-inline cool-auto-complete"> |
| | | <input id="createBy" class="layui-input" type="text" lay-verify="number" style="display: none"> |
| | | <input id="createBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥..." onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="userQueryBycreateBy" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="userQueryBycreateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä¿®æ¹æ¶é´ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="updateTime$" class="layui-input" type="text" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä¿®æ¹äººåï¼</label> |
| | | <div class="layui-input-inline cool-auto-complete"> |
| | | <input id="updateBy" class="layui-input" type="text" lay-verify="number" style="display: none"> |
| | | <input id="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥..." onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å¤ããæ³¨ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="memo" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label" style="font-size: x-small">ç³»ç»ç¶ææ°æ®ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="systemStatus" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <hr class="layui-bg-gray"> |
| | | |
| | | <div id="data-detail-btn" class="layui-btn-container layui-form-item"> |
| | | <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">ä¿å</div> |
| | | <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">ä¿®æ¹</div> |
| | | <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">å
³é</div> |
| | | </div> |
| | | |
| | | <div id="prompt"> |
| | | 温馨æç¤ºï¼è¯·ä»ç»å¡«åç¸å
³ä¿¡æ¯ï¼<span class="extrude"><span class="not-null">*</span> 为å¿
å¡«é项ã</span> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | </body> |
| | | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> |
| | | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/basCrnpErrLog/basCrnpErrLog.js" charset="utf-8"></script> |
| | | </html> |
| | | |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title></title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| | | <link rel="stylesheet" href="../../../static/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" href="../../../static/css/admin.css?v=318" media="all"> |
| | | <link rel="stylesheet" href="../../../static/css/cool.css" media="all"> |
| | | </head> |
| | | <body> |
| | | |
| | | <div class="layui-fluid"> |
| | | <div class="layui-card"> |
| | | <div class="layui-card-body"> |
| | | <div class="layui-form toolbar" id="search-box"> |
| | | <div class="layui-form-item"> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="id" placeholder="ç¼å·" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width: 300px"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="èµ·å§æ¶é´ - ç»æ¢æ¶é´" autocomplete="off" style="width: 300px"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="condition" placeholder="请è¾å
¥" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline">  |
| | | <button class="layui-btn icon-btn" lay-filter="search" lay-submit> |
| | | <i class="layui-icon"></i>æç´¢ |
| | | </button> |
| | | <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> |
| | | <i class="layui-icon"></i>éç½® |
| | | </button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <table class="layui-hide" id="basCrnpOpt" lay-filter="basCrnpOpt"></table> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <script type="text/html" id="toolbar"> |
| | | <div class="layui-btn-container"> |
| | | <!-- <button class="layui-btn layui-btn-sm" id="btn-add" lay-event="addData">æ°å¢</button>--> |
| | | <button class="layui-btn layui-btn-sm layui-btn-danger" id="btn-delete" lay-event="deleteData">å é¤</button> |
| | | <button class="layui-btn layui-btn-primary layui-btn-sm" id="btn-export" lay-event="exportData" style="float: right">导åº</button> |
| | | </div> |
| | | </script> |
| | | |
| | | <script type="text/html" id="operate"> |
| | | <!-- <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">ä¿®æ¹</a>--> |
| | | <a class="layui-btn layui-btn-danger layui-btn-xs btn-edit" lay-event="del">å é¤</a> |
| | | </script> |
| | | |
| | | <script type="text/javascript" src="../../../static/js/jquery/jquery-3.3.1.min.js"></script> |
| | | <script type="text/javascript" src="../../../static/layui/layui.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/common.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/cool.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../../static/js/basCrnpOpt/basCrnpOpt.js" charset="utf-8"></script> |
| | | </body> |
| | | <!-- 表åå¼¹çª --> |
| | | <script type="text/html" id="editDialog"> |
| | | <form id="detail" lay-filter="detail" class="layui-form admin-form model-form"> |
| | | <input name="id" type="hidden"> |
| | | <div class="layui-row"> |
| | | <div class="layui-col-md12"> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å·¥ä½å·: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="wrkNo" placeholder="请è¾å
¥å·¥ä½å·"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å åæºå·: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="crnNo" placeholder="请è¾å
¥å åæºå·"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ä¸åæ¶é´: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="sendTime" id="sendTime$" placeholder="请è¾å
¥ä¸åæ¶é´"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ä½ä¸: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="mode" placeholder="请è¾å
¥ä½ä¸"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">èµ·ç¹åºä½: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="sourceLocNo" placeholder="请è¾å
¥èµ·ç¹åºä½"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ç®æ åºä½: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="targetLocNo" placeholder="请è¾å
¥ç®æ åºä½"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ä¿®æ¹æ¶é´: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="updateTime" id="updateTime$" placeholder="请è¾å
¥ä¿®æ¹æ¶é´"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ä¿®æ¹äººå: </label> |
| | | <div class="layui-input-block cool-auto-complete"> |
| | | <input class="layui-input" name="updateBy" placeholder="请è¾å
¥ä¿®æ¹äººå" style="display: none"> |
| | | <input id="updateBy$" name="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥ä¿®æ¹äººå" onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">夿³¨: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="memo" placeholder="请è¾å
¥å¤æ³¨"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">å½ä»¤: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="command" placeholder="请è¾å
¥å½ä»¤"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ç³»ç»ç¶æ: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="systemStatus" placeholder="请è¾å
¥ç³»ç»ç¶æ"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">ä¸åç¶æ: </label> |
| | | <div class="layui-input-block"> |
| | | <select name="send"> |
| | | <option value="">è¯·éæ©ä¸åç¶æ</option> |
| | | <option value="0">æªä¸å</option> |
| | | <option value="1">å·²ä¸å</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">请æ±ååº: </label> |
| | | <div class="layui-input-block"> |
| | | <input class="layui-input" name="response" placeholder="请è¾å
¥è¯·æ±ååº"> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | <hr class="layui-bg-gray"> |
| | | <div class="layui-form-item text-right"> |
| | | <button class="layui-btn" lay-filter="editSubmit" lay-submit="">ä¿å</button> |
| | | <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">åæ¶</button> |
| | | </div> |
| | | </form> |
| | | </script> |
| | | </html> |
| | | |
| New file |
| | |
| | | <!DOCTYPE html> |
| | | <html lang="en"> |
| | | <head> |
| | | <meta charset="utf-8"> |
| | | <title></title> |
| | | <meta name="renderer" content="webkit"> |
| | | <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> |
| | | <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> |
| | | <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> |
| | | <link rel="stylesheet" href="../../static/css/cool.css" media="all"> |
| | | <link rel="stylesheet" href="../../static/css/common.css" media="all"> |
| | | </head> |
| | | <body> |
| | | |
| | | <!-- 详æ
--> |
| | | <div id="data-detail" class="layer_self_wrap"> |
| | | <form id="detail" class="layui-form"> |
| | | <!-- |
| | | <div class="layui-inline" style="display: none"> |
| | | <label class="layui-form-label"><span class="not-null">*</span>ç¼ããå·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="id" class="layui-input" type="text" placeholder="ç¼å·"> |
| | | </div> |
| | | </div> |
| | | --> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label"><span class="not-null">*</span>ç¼ããå·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="id" class="layui-input" type="text" onkeyup="check(this.id, 'basCrnpOpt')" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å·¥ ä½ å·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="wrkNo" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å åæºå·ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="crnNo" class="layui-input" type="text" lay-verify="number" > |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä¸åæ¶é´ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="sendTime$" class="layui-input" type="text" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä½ããä¸ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="mode" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">èµ·ç¹åºä½ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="sourceLocNo" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ç®æ åºä½ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="targetLocNo" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä¿®æ¹æ¶é´ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="updateTime$" class="layui-input" type="text" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä¿®æ¹äººåï¼</label> |
| | | <div class="layui-input-inline cool-auto-complete"> |
| | | <input id="updateBy" class="layui-input" type="text" lay-verify="number" style="display: none"> |
| | | <input id="updateBy$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请è¾å
¥..." onfocus=this.blur()> |
| | | <div class="cool-auto-complete-window"> |
| | | <input class="cool-auto-complete-window-input" data-key="userQueryByupdateBy" onkeyup="autoLoad(this.getAttribute('data-key'))"> |
| | | <select class="cool-auto-complete-window-select" data-key="userQueryByupdateBySelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å¤ããæ³¨ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="memo" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">å½ãã令ï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="command" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ç³»ç»ç¶æï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="systemStatus" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">ä¸åç¶æï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <select id="send"> |
| | | <option value="" style="display: none"></option> |
| | | <option value="0">æªä¸å</option> |
| | | <option value="1">å·²ä¸å</option> |
| | | </select> |
| | | </div> |
| | | </div> |
| | | <div class="layui-inline" style="width:31%;"> |
| | | <label class="layui-form-label">请æ±ååºï¼</label> |
| | | <div class="layui-input-inline"> |
| | | <input id="response" class="layui-input" type="text"> |
| | | </div> |
| | | </div> |
| | | |
| | | |
| | | <hr class="layui-bg-gray"> |
| | | |
| | | <div id="data-detail-btn" class="layui-btn-container layui-form-item"> |
| | | <div id="data-detail-submit-save" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="save">ä¿å</div> |
| | | <div id="data-detail-submit-edit" type="button" class="layui-btn layui-btn-normal" lay-submit lay-filter="edit">ä¿®æ¹</div> |
| | | <div id="data-detail-close" type="button" class="layui-btn" lay-submit lay-filter="close">å
³é</div> |
| | | </div> |
| | | |
| | | <div id="prompt"> |
| | | 温馨æç¤ºï¼è¯·ä»ç»å¡«åç¸å
³ä¿¡æ¯ï¼<span class="extrude"><span class="not-null">*</span> 为å¿
å¡«é项ã</span> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | </body> |
| | | <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> |
| | | <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> |
| | | <script type="text/javascript" src="../../static/js/basCrnpOpt/basCrnpOpt.js" charset="utf-8"></script> |
| | | </html> |
| | | |
| | |
| | | </head> |
| | | <body> |
| | | <div id="app"> |
| | | <div style="display: flex;justify-content: center;align-items: center;width: 100%;margin-top: 150px;"> |
| | | <div id="mapDataId" style="zoom: 0.7;position: relative;"> |
| | | <div class="pointContainer" v-for="(row,index) in map" :key="index"> |
| | | <div v-for="(col,idx) in row" :key="idx"> |
| | | <div v-if="col.value == 0"> |
| | | <!-- å轨é è·¯å¾ä¸ºç©¿æ¢è½¦é¢è®¡è·¯å¾åæ¾ç¤ºç©¿æ¢è½¦é¢è²åç©¿æ¢è½¦å· --> |
| | | <div :style="{background: checkAdvancePath(index,idx).length == 0 ? '':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item" v-if="col.data.length > 0">{{col.data}}</div> |
| | | <div :style="{background: checkAdvancePath(index,idx).length == 0 ? '':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item" v-else>{{checkAdvancePath(index,idx).length == 0 ? idx:checkAdvancePath(index,idx)}}</div> |
| | | </div> |
| | | <div v-else-if="col.value == 3"> |
| | | <!-- æ¯è½¨é è·¯å¾ä¸ºç©¿æ¢è½¦é¢è®¡è·¯å¾åæ¾ç¤ºç©¿æ¢è½¦é¢è²åç©¿æ¢è½¦å· --> |
| | | <div :style="{background: checkAdvancePath(index,idx).length == 0 ? '#5af':shuttleColorList[checkAdvancePath(index,idx)[0]]}" class="item">{{checkAdvancePath(index,idx).length == 0 ? '⇅⇄':checkAdvancePath(index,idx)}}</div> |
| | | </div> |
| | | <div v-else-if="col.value == 4"> |
| | | <!-- ç«ç¹ --> |
| | | <div class="site" :id="'site-' + col.data" @click="openSite(col.data)">{{col.data}}</div> |
| | | </div> |
| | | <div v-else-if="col.value == 5"> |
| | | <!-- å
çµæ¡© --> |
| | | <div class="item" style="font-size: 24px">⚡</div> |
| | | </div> |
| | | <div v-else-if="col.value == -999"> |
| | | <!-- è·¯å¾å ç¨åºå --> |
| | | <div class="item" style="background:#f83333;color: #fff;">{{idx}}</div> |
| | | </div> |
| | | <div v-else-if="col.value < 0"> |
| | | <!-- ç¦æ¢æ¾ç¤ºåºå --> |
| | | <div class="item" style="visibility: hidden">{{idx}}</div> |
| | | </div> |
| | | <div v-else> |
| | | <div class="item" v-if="col.data.length > 0">{{col.data}}</div> |
| | | <div class="item" v-else>{{idx}}-{{col.value}}</div> |
| | | </div> |
| | | </div> |
| | | <div style="display: flex;justify-content: center;align-items: center;width: 100%;margin-top: 30px;"> |
| | | <div id="mapDataId" style="zoom: 0.6;position: relative;"> |
| | | <table class="excel-table"> |
| | | <tr v-for="(row,index) in map" :key="index"> |
| | | <td |
| | | v-for="(col,idx) in row" :key="idx" |
| | | :rowspan="col.rowSpan" |
| | | :colspan="col.colSpan" |
| | | :style="{width: col.width}" |
| | | v-if="col.type != 'merge'" |
| | | > |
| | | <div v-if="col.type == 'none'"> |
| | | <div class="item" style="visibility: hidden">{{idx}}</div> |
| | | </div> |
| | | <div v-else-if="col.type == 'shelf'"> |
| | | <div class="shelf">{{col.shelfIdx}}</div> |
| | | </div> |
| | | <div v-else-if="col.type == 'devp'"> |
| | | <div class="site" :style="{height: col.rowPx}" :id="'site-' + col.value" @click="openSite(col.value)">{{col.value}}</div> |
| | | </div> |
| | | <div v-else-if="col.type == 'rgv'" style="position: relative;"> |
| | | <div class="rgv-item" v-if="getDeviceNo(col.value) != -1" :style="{width: col.width}" :id="'rgv-' + getDeviceNo(col.value)" @click="openRgv(getDeviceNo(col.value))">{{getDeviceNo(col.value)}}</div> |
| | | <div class="track-item" v-if="getTrackSiteNo(col.value) == -1"></div> |
| | | <div class="track-item" v-else :id="'rgvTrackSiteNo-' + getTrackSiteNo(col.value)"></div> |
| | | </div> |
| | | <div v-else-if="col.type == 'crn'"> |
| | | <div class="crn-item" v-if="getDeviceNo(col.value) != -1" :style="{width: col.width}" :id="'crn-' + getDeviceNo(col.value)" @click="openCrn(getDeviceNo(col.value))">{{getDeviceNo(col.value)}}</div> |
| | | <div class="track-item" v-if="getTrackSiteNo(col.value) == -1"></div> |
| | | <div class="track-item" v-else :id="'crnTrackSiteNo-' + getTrackSiteNo(col.value)"></div> |
| | | </div> |
| | | </td> |
| | | |
| | | <div> |
| | | <!-- æ¾ç¤ºè¡å· --> |
| | | <div class="item" style="background: none;color: #000;">#{{index+1}}</div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div |
| | | v-for="(car, idx) in currentLevShuttleList" |
| | | :style="{ |
| | | '--x-pos': getCarPosition(car.point.x, car.point.y)[1], |
| | | '--y-pos': getCarPosition(car.point.x, car.point.y)[0], |
| | | color: shuttleColorList[car.shuttleNo] |
| | | }" |
| | | class="sxcar" |
| | | :id="'sxcar-' + car.shuttleNo" |
| | | > |
| | | {{ car.shuttleNo }} |
| | | </div> |
| | | |
| | | <td> |
| | | <!-- æ¾ç¤ºè¡å· --> |
| | | <div class="item" style="background: none;color: #000;">#{{index+1}}</div> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | </div> |
| | | |
| | | <!--è¾åºæ¥¼å±--> |
| | | <div style="height: 100%;"> |
| | | <div class="floorBtnBox" v-for="(lev,idx) in floorList"> |
| | | <el-button :style="{background:currentLev === lev ? '#7DCDFF':''}" @click="changFloor(lev)">{{lev}}F</el-button> |
| | | </div> |
| | | <div> |
| | | <!-- <el-button @click="testMove()">æµè¯ç§»å¨è½¦</el-button>--> |
| | | <!-- <el-button @click="resetMap()">éç½®å°å¾</el-button>--> |
| | | <!-- <el-button @click="initLoc()">åå§ååºä½</el-button>--> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="footer"> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- ååç©¿æ¢è½¦ç¶æ --> |
| | | <!-- å åæºç¶æ --> |
| | | <div class="line-status"> |
| | | <div class="body-head">ç©¿æ¢è½¦ç¶æ</div> |
| | | <div class="body-head">å åæºç¶æ</div> |
| | | <div class="shuttle-status-box"> |
| | | <div v-for="(item,idx) in shuttleList" class="state"> |
| | | <span :style="{color: shuttleColorList[item.shuttleNo]}">ååç©¿æ¢è½¦ {{item.shuttleNo}}</span> |
| | | <span v-if="item.protocolStatus == 1" |
| | | class="state-ss shuttle-idle">{{item.protocolStatus$}}</span> |
| | | <span v-else-if="item.protocolStatus == 2" |
| | | class="state-ss shuttle-working">{{item.protocolStatus$}}</span> |
| | | <span v-else-if="item.protocolStatus == 3" |
| | | class="state-ss shuttle-waiting">{{item.protocolStatus$}}</span> |
| | | <span v-else-if="item.protocolStatus == 4" |
| | | class="state-ss shuttle-charging">{{item.protocolStatus$}}</span> |
| | | <span v-else-if="item.protocolStatus == 5" |
| | | class="state-ss shuttle-charging-waiting">{{item.protocolStatus$}}</span> |
| | | <span v-else-if="item.protocolStatus == 6" |
| | | class="state-ss shuttle-fixing">{{item.protocolStatus$}}</span> |
| | | <span v-else-if="item.protocolStatus == 7" |
| | | class="state-ss shuttle-offline">{{item.protocolStatus$}}</span> |
| | | <span v-else class="state-ss shuttle-offline">{{item.protocolStatus$}}</span> |
| | | <div v-for="(item,idx) in crnList" class="state"> |
| | | <span>å åæº {{item.crnNo}}</span> |
| | | <span v-if="item.crnStatus == 'machine-auto'" |
| | | class="state-ss machine-auto-flag">èªå¨</span> |
| | | <span v-else-if="item.crnStatus == 'machine-un-auto'" |
| | | class="state-ss machine-unauto-flag">éèªå¨/æå¨</span> |
| | | <span v-else-if="item.crnStatus == 'machine-error'" |
| | | class="state-ss machine-error-flag">å¼å¸¸</span> |
| | | <span v-else-if="item.crnStatus == 'machine-p-move'" |
| | | class="state-ss machine-p-move-flag">PToP</span> |
| | | <span v-else-if="item.crnStatus == 'machine-site-move'" |
| | | class="state-ss machine-site-move-flag">ç«å°ç«</span> |
| | | <span v-else-if="item.crnStatus == 'machine-stock-move'" |
| | | class="state-ss machine-stock-move-flag">åºå°åº</span> |
| | | <span v-else-if="item.crnStatus == 'machine-pakout'" |
| | | class="state-ss machine-take-flag">åºåº</span> |
| | | <span v-else-if="item.crnStatus == 'machine-pakin'" |
| | | class="state-ss machine-put-flag">å
¥åº</span> |
| | | <span v-else class="state-ss">{{item.crnStatus}}</span> |
| | | </div> |
| | | </div> |
| | | <div class="allStatus"><span>ææç¶æ</span></div> |
| | | <div class="allStatus item-group"> |
| | | <span class="shuttle-idle">空é²</span> |
| | | <span class="shuttle-working">ä½ä¸ä¸</span> |
| | | <span class="shuttle-waiting">çå¾
确认</span> |
| | | <span class="shuttle-charging">å
çµä¸</span> |
| | | <span class="shuttle-charging-waiting">å
çµä»»å¡çå¾
确认</span> |
| | | <span class="shuttle-fixing">æ
éä¿®å¤ä¸</span> |
| | | <span class="shuttle-offline">离线</span> |
| | | <span class="machine-put-flag">å
¥åº</span> |
| | | <span class="machine-take-flag">åºåº</span> |
| | | <span class="machine-stock-move-flag">åºå°åº</span> |
| | | <span class="machine-site-move-flag">ç«å°ç«</span> |
| | | <span class="machine-p-move-flag">PToP</span> |
| | | <span class="machine-error-flag">å¼å¸¸</span> |
| | | <span class="machine-auto-flag">èªå¨</span> |
| | | <span class="machine-unauto-flag">éèªå¨/æå¨</span> |
| | | </div> |
| | | </div> |
| | | <!-- æåæºç¶æ --> |
| | | <!-- è¾éçº¿ç¶æ --> |
| | | <div class="line-status"> |
| | | <div class="body-head">æåæºç¶æ</div> |
| | | <div class="lift-status-box"> |
| | | <div v-for="(item,idx) in liftList" class="state states"> |
| | | <span>æåæº {{item.liftNo}}</span> |
| | | <span v-if="item.protocolStatus == 1" |
| | | class="state-ss lift-idle">{{item.protocolStatus$}}</span> |
| | | <span v-else-if="item.protocolStatus == 2" |
| | | class="state-ss lift-working">{{item.protocolStatus$}}</span> |
| | | <span v-else-if="item.protocolStatus == 3" |
| | | class="state-ss lift-waiting">{{item.protocolStatus$}}</span> |
| | | <span v-else-if="item.protocolStatus == 4" |
| | | class="state-ss lift-offline">{{item.protocolStatus$}}</span> |
| | | <span v-else class="state-ss lift-offline">{{item.protocolStatus$}}</span> |
| | | </div> |
| | | <div class="body-head">è¾éçº¿ç¶æ</div> |
| | | <div class="state states"> |
| | | <span>è¿è¾çº¿æ»æ°</span> |
| | | <span class="line-ss">9</span> |
| | | </div> |
| | | <div class="allStatus"><span>ææç¶æ</span></div> |
| | | <div class="allStatus item-group"> |
| | | <span class="lift-idle">空é²</span> |
| | | <span class="lift-working">ä½ä¸ä¸</span> |
| | | <span class="lift-waiting">çå¾
确认</span> |
| | | <span class="lift-offline">离线</span> |
| | | <span class="site-auto-run-id">èªå¨+æç©+ID</span> |
| | | <span class="site-auto-run">èªå¨+æç©</span> |
| | | <span class="site-auto-id">èªå¨+ID</span> |
| | | <span class="site-auto">èªå¨</span> |
| | | <span class="site-unauto">éèªå¨/æå¨</span> |
| | | </div> |
| | | </div> |
| | | <!-- <!– è¾éçº¿ç¶æ –>--> |
| | | <!-- <div class="line-status">--> |
| | | <!-- <div class="body-head">è¾éçº¿ç¶æ</div>--> |
| | | <!-- <div class="state states">--> |
| | | <!-- <span>è¿è¾çº¿æ»æ°</span>--> |
| | | <!-- <span class="line-ss">9</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="allStatus"><span>ææç¶æ</span></div>--> |
| | | <!-- <div class="allStatus item-group">--> |
| | | <!-- <span class="site-auto-run-id">èªå¨+æç©+ID</span>--> |
| | | <!-- <span class="site-auto-run">èªå¨+æç©</span>--> |
| | | <!-- <span class="site-auto-id">èªå¨+ID</span>--> |
| | | <!-- <span class="site-auto">èªå¨</span>--> |
| | | <!-- <span class="site-unauto">éèªå¨/æå¨</span>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <!– æ¡ç è¡¨æ ¼ –>--> |
| | | <!-- <div class="bar-code">--> |
| | | <!-- <div class="body-head" id="code">æ¡ç æ«æå¨</div>--> |
| | | <!-- <div class="tablebox">--> |
| | | <!-- <div class="table-head">--> |
| | | <!-- <li><span>æ¡ç åç§°</span><span class="right">æ«ç æ¶é´</span></li>--> |
| | | <!-- </div>--> |
| | | <!-- <div id="barcode1" class="table-body">--> |
| | | <!-- <li v-for="(item,index) in codeList1" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="tablebox">--> |
| | | <!-- <div class="table-head">--> |
| | | <!-- <li><span>æ¡ç åç§°</span><span class="right">æ«ç æ¶é´</span></li>--> |
| | | <!-- </div>--> |
| | | <!-- <div id="barcode2" class="table-body">--> |
| | | <!-- <li v-for="(item,index) in codeList2" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- æ¡ç è¡¨æ ¼ --> |
| | | <div class="bar-code"> |
| | | <div class="body-head" id="code">æ¡ç æ«æå¨</div> |
| | | <div class="tablebox"> |
| | | <div class="table-head"> |
| | | <li><span>æ¡ç åç§°</span><span class="right">æ«ç æ¶é´</span></li> |
| | | </div> |
| | | <div id="barcode1" class="table-body"> |
| | | <li v-for="(item,index) in codeList1" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li> |
| | | </div> |
| | | </div> |
| | | <div class="tablebox"> |
| | | <div class="table-head"> |
| | | <li><span>æ¡ç åç§°</span><span class="right">æ«ç æ¶é´</span></li> |
| | | </div> |
| | | <div id="barcode2" class="table-body"> |
| | | <li v-for="(item,index) in codeList2" :key="index"><span>{{item.barcode}}</span><span class="right">{{item.time}}</span></li> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- è¾é设å¤å¼¹çª --> |
| | | <div id="siteWindow" :style="{display:siteWindow?'block':'none'}" class="animate__animated animate__fadeIn"> |
| | | <div id="siteWindow" :style="{display:siteWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn"> |
| | | <!-- 表头 --> |
| | | <div id="siteWindow-head"> |
| | | <div class="detailed"></div> |
| | |
| | | </div> |
| | | </div> |
| | | |
| | | <!-- å åæºå¼¹çª --> |
| | | <div id="crnWindow" :style="{display:crnWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn"> |
| | | <div id="crnWindow-head"> |
| | | <div class='detailed'></div> |
| | | <button @click="crnWindow = false"></button> |
| | | </div> |
| | | <form> |
| | | <!-- å åæºå· --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label" style> |
| | | <span>å åæºå·ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="crnNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- å·¥ä½å· --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>å·¥ä½å·ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="workNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- ç«æº --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>ç«æºï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="sourceStaNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- ç®æ ç« --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>ç®æ ç«ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="staNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- å·¥ä½ç¶æ --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>å·¥ä½ç¶æï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="wrkSts" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- åºå
¥ç±»å --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>åºå
¥ç±»åï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="ioType" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- æºåºä½ --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>æºåºä½ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="sourceLocNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- ç®æ åºä½ --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>ç®æ åºä½ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="locNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- å åæºç¶æ --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>å åæºç¶æï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="crnStatus" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- å¼å¸¸ --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>å¼å¸¸ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="error" value=""> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | |
| | | <!-- RGVå¼¹çª --> |
| | | <div id="rgvWindow" :style="{display:rgvWindow?'block':'none',zIndex: 999}" class="animate__animated animate__fadeIn"> |
| | | <div id="rgvWindow-head"> |
| | | <div class='detailed'></div> |
| | | <button @click="rgvWindow = false"></button> |
| | | </div> |
| | | <form> |
| | | <!-- RGVå· --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label" style> |
| | | <span>RGVå·ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="rgvNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- å·¥ä½å· --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>å·¥ä½å·ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="workNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- ç«æº --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>ç«æºï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="sourceStaNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- ç®æ ç« --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>ç®æ ç«ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="staNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- å·¥ä½ç¶æ --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>å·¥ä½ç¶æï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="wrkSts" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- åºå
¥ç±»å --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>åºå
¥ç±»åï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="ioType" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- æºåºä½ --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>æºåºä½ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="sourceLocNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- ç®æ åºä½ --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>ç®æ åºä½ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="locNo" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- RGVç¶æ --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>RGVç¶æï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="rgvStatus" value=""> |
| | | </div> |
| | | </div> |
| | | <!-- å¼å¸¸ --> |
| | | <div class="form-item"> |
| | | <div class="form-item-label"> |
| | | <span>å¼å¸¸ï¼</span> |
| | | </div> |
| | | <div class="form-item-input"> |
| | | <input type="text" name="error" value=""> |
| | | </div> |
| | | </div> |
| | | </form> |
| | | </div> |
| | | |
| | | </div> |
| | | <script> |
| | | var app = new Vue({ |
| | | el: '#app', |
| | | data: { |
| | | map: [],//å°å¾æ°æ® |
| | | currentLev: 1,//å°å¾å½åæ¥¼å± |
| | | siteWindow: false, //ç«ç¹å¼¹çªæ¾ç¤ºé»è®¤ä¸æ¾ç¤º |
| | | floorList: [], //å½åé¡¹ç®æ¥¼å± |
| | | shuttleList: [], //ååç©¿æ¢è½¦éå |
| | | currentLevShuttleList: [],//å½å楼å±ååç©¿æ¢è½¦éå |
| | | shuttleColorList: [],//ååç©¿æ¢è½¦é¢è²éå |
| | | crnWindow: false, //å åæºå¼¹çªæ¾ç¤ºé»è®¤ä¸æ¾ç¤º |
| | | rgvWindow: false, //rgvå¼¹çªæ¾ç¤ºé»è®¤ä¸æ¾ç¤º |
| | | crnList: [], //å åæºéå |
| | | liftList: [], //æåæºéå |
| | | systemStatus: true,//ç³»ç»è¿è¡ç¶æ |
| | | consoleInterval: null,//宿¶å¨åå¨åé |
| | | codeList1: [],//æ¡ç List |
| | | codeList2: [],//æ¡ç List |
| | | ws: null, |
| | | crnInitPosition: [], |
| | | rgvPosition: [], |
| | | }, |
| | | created() { |
| | | this.init() |
| | |
| | | }, |
| | | methods: { |
| | | init() { |
| | | this.getMap(this.currentLev) |
| | | this.getMap() |
| | | this.getSystemRunningStatus() //è·åç³»ç»è¿è¡ç¶æ |
| | | this.initLev()//åå§å楼å±ä¿¡æ¯ |
| | | |
| | | this.consoleInterval = setInterval(() => { |
| | | this.websocketConnect() |
| | | |
| | | this.getShuttleStateInfo() //è·åååç©¿æ¢è½¦ä¿¡æ¯ |
| | | this.getLiftStateInfo() //è·åæåæºä¿¡æ¯ |
| | | this.getCrnInfo() //è·åå åæºæ°æ® |
| | | this.getSiteInfo() //è·åè¾éç«ç¹æ°æ® |
| | | this.getMap(this.currentLev) //è·å宿¶å°å¾æ°æ® |
| | | this.getCodeData()//è·åæ¡ç |
| | | this.getRgvInfo() //è·åRGVæ°æ® |
| | | // this.getCodeData()//è·åæ¡ç |
| | | }, 1000) |
| | | }, |
| | | //è·åå°å¾æ°æ® |
| | | getMap(lev) { |
| | | this.sendWs(JSON.stringify({ |
| | | "url": "/console/map/auth", |
| | | "data": lev |
| | | })) |
| | | getMap() { |
| | | let rowPx = 35; |
| | | let colPx = 35; |
| | | |
| | | $.ajax({ |
| | | url: "./test.json", |
| | | method: "get", |
| | | success: (res) => { |
| | | let data = res.data; |
| | | let mapData = JSON.parse(data) |
| | | mapData.forEach((row) => { |
| | | let shelfIdx = 1; |
| | | row.forEach((col) => { |
| | | if (col.type == 'shelf') { |
| | | col.shelfIdx = shelfIdx; |
| | | shelfIdx++; |
| | | } |
| | | |
| | | col.rowPx = (col.rowSpan * rowPx) + "px"; |
| | | col.colPx = (col.colSpan * colPx) + "px"; |
| | | |
| | | col.width = (col.cellWidth / 30) + "px"; |
| | | }) |
| | | }) |
| | | this.map = mapData; |
| | | } |
| | | }) |
| | | }, |
| | | setMap(res) { |
| | | //è·åå°å¾æ°æ® |
| | | let data = res.data |
| | | let tmp = [] |
| | | for (let i = 1; i < data.length - 1; i++) { |
| | | tmp.push(data[i]) |
| | | } |
| | | // console.log(tmp) |
| | | this.map = tmp |
| | | openCrn(id) { |
| | | this.crnWindow = true; //æå¼ç«ç¹ä¿¡æ¯å¼¹çª |
| | | $(".detailed").empty(); |
| | | $('.detailed').append(id + 'å·å åæº'); |
| | | $.ajax({ |
| | | url: baseUrl + "/console/crn/detail", |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | data: { |
| | | crnNo: id |
| | | }, |
| | | method: 'post', |
| | | success: function(res) { |
| | | for (var val in res.data) { |
| | | var find = $("#crnWindow").find(":input[name='" + val + "']"); |
| | | if (find[0].type === 'text') { |
| | | find.val(res.data[val]); |
| | | } else if (find[0].type === 'checkbox') { |
| | | find.attr("checked", res.data[val] === 'Y'); |
| | | } |
| | | } |
| | | } |
| | | }) |
| | | }, |
| | | openRgv(id) { |
| | | this.rgvWindow = true; //æå¼RGVä¿¡æ¯å¼¹çª |
| | | $(".detailed").empty(); |
| | | $('.detailed').append(id + 'å·RGV'); |
| | | $.ajax({ |
| | | url: baseUrl + "/console/rgv/detail", |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | data: { |
| | | rgvNo: id |
| | | }, |
| | | method: 'post', |
| | | success: function(res) { |
| | | for (var val in res.data) { |
| | | var find = $("#rgvWindow").find(":input[name='" + val + "']"); |
| | | if (find[0].type === 'text') { |
| | | find.val(res.data[val]); |
| | | } else if (find[0].type === 'checkbox') { |
| | | find.attr("checked", res.data[val] === 'Y'); |
| | | } |
| | | } |
| | | } |
| | | |
| | | }) |
| | | }, |
| | | openSite(id) { |
| | | this.siteWindow = true; //æå¼ç«ç¹ä¿¡æ¯å¼¹çª |
| | |
| | | }, |
| | | getSiteInfo() { |
| | | //è·åè¾éç«ç¹æ°æ® |
| | | this.sendWs(JSON.stringify({ |
| | | "url": "/console/latest/data/site", |
| | | "data": {} |
| | | })) |
| | | }, |
| | | setSiteInfo(res) { |
| | | //è·åè¾éç«ç¹æ°æ® |
| | | if (res.code === 200){ |
| | | var sites = res.data; |
| | | for (var i = 0; i < sites.length; i++){ |
| | | var siteEl = $("#site-"+sites[i].siteId); |
| | | siteEl.attr("class", "site " + sites[i].siteStatus); |
| | | if (sites[i].workNo != null && sites[i].workNo>0) { |
| | | siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]"); |
| | | } else { |
| | | siteEl.html(sites[i].siteId); |
| | | } |
| | | } |
| | | } else if (res.code === 403){ |
| | | parent.location.href = baseUrl+"/login"; |
| | | } else { |
| | | console.log(res.msg); |
| | | } |
| | | }, |
| | | changFloor(lev) { |
| | | this.currentLev = lev |
| | | this.currentLevShuttleList = [] |
| | | this.getMap(lev) |
| | | }, |
| | | getShuttleStateInfo() { |
| | | this.sendWs(JSON.stringify({ |
| | | "url": "/shuttle/table/shuttle/state", |
| | | "data": {} |
| | | })) |
| | | }, |
| | | setShuttleStateInfo(res) { |
| | | // ååç©¿æ¢è½¦ä¿¡æ¯è¡¨è·å |
| | | let that = this |
| | | if (res.code == 200) { |
| | | let currentLevShuttle = []//å½å楼å±å°è½¦éå |
| | | res.data.forEach((item,idx) => { |
| | | if (item != null && item.point != undefined && item.point != null) { |
| | | if (item.point.z == that.currentLev) { |
| | | currentLevShuttle.push(item); |
| | | $.ajax({ |
| | | url: baseUrl + "/console/latest/data/site", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | if (res.code === 200) { |
| | | var sites = res.data; |
| | | for (var i = 0; i < sites.length; i++){ |
| | | var siteEl = $("#site-"+sites[i].siteId); |
| | | siteEl.attr("class", "site " + sites[i].siteStatus); |
| | | if (sites[i].workNo != null && sites[i].workNo>0) { |
| | | siteEl.html(sites[i].siteId + "[" + sites[i].workNo + "]"); |
| | | } else { |
| | | siteEl.html(sites[i].siteId); |
| | | } |
| | | } |
| | | } else if (res.code === 403) { |
| | | parent.location.href = baseUrl + "/login"; |
| | | } else { |
| | | console.log(res.msg); |
| | | } |
| | | }) |
| | | that.currentLevShuttleList = currentLevShuttle |
| | | that.shuttleList = res.data |
| | | |
| | | if (that.shuttleColorList.length == 0) { |
| | | let colorList = []//éæºå°è½¦é¢è² |
| | | res.data.forEach((item,idx) => { |
| | | colorList[item.shuttleNo] = that.colorRGB() |
| | | }) |
| | | that.shuttleColorList = colorList |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | getLiftStateInfo() { |
| | | // æåæºä¿¡æ¯è¡¨è·å |
| | | this.sendWs(JSON.stringify({ |
| | | "url": "/lift/table/lift/state", |
| | | "data": {} |
| | | })) |
| | | getCrnInfo() { |
| | | let that = this |
| | | //è·åå åæºæ°æ® |
| | | $.ajax({ |
| | | url: baseUrl + "/console/latest/data/crn", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | if (res.code === 200) { |
| | | var crns = res.data; |
| | | |
| | | if (that.crnInitPosition.length == 0) { |
| | | let position = [] |
| | | for (var i = 0; i < crns.length; i++) { |
| | | var crnEl = $("#crn-" + crns[i].crnId); |
| | | position.push({ |
| | | id: crns[i].crnId, |
| | | left: crnEl.offset().left + crnEl.width() |
| | | }) |
| | | } |
| | | that.crnInitPosition = position |
| | | return; |
| | | } |
| | | |
| | | let crnList = [] |
| | | for (var i = 0; i < crns.length; i++) { |
| | | var crnEl = $("#crn-" + crns[i].crnId); |
| | | crnEl.attr("class", "crn-item " + crns[i].crnStatus); |
| | | |
| | | if (crns[i].bay < 0 || crns[i].bay === -2) { |
| | | crns[i].bay = 1 |
| | | } |
| | | |
| | | let basePosition = 0; |
| | | that.crnInitPosition.forEach((item) => { |
| | | if (item.id == crns[i].crnId) { |
| | | basePosition = item.left |
| | | } |
| | | }) |
| | | |
| | | var offSet = crns[i].offset; |
| | | let finalOffset = basePosition + offSet; |
| | | if (finalOffset < basePosition) { |
| | | finalOffset = basePosition; |
| | | } |
| | | crnEl.animate({left: finalOffset + 'px'}, 1000); |
| | | |
| | | crnList.push({ |
| | | crnNo: crns[i].crnId, |
| | | crnStatus: crns[i].crnStatus |
| | | }) |
| | | } |
| | | that.crnList = crnList; |
| | | |
| | | } else if (res.code === 403) { |
| | | parent.location.href = baseUrl + "/login"; |
| | | } else { |
| | | console.log(res.msg); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | setLiftStateInfo(res) { |
| | | // æåæºä¿¡æ¯è¡¨è·å |
| | | if (res.code == 200) { |
| | | this.liftList = res.data |
| | | } |
| | | getRgvInfo() { |
| | | let that = this |
| | | //è·åRGVæ°æ® |
| | | $.ajax({ |
| | | url: baseUrl + "/console/latest/data/rgv", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | if (res.code === 200) { |
| | | var rgvs = res.data; |
| | | |
| | | if (that.rgvPosition.length == 0) { |
| | | let position = [] |
| | | for (var i = 0; i < rgvs.length; i++) { |
| | | var rgvEl = $("#rgv-" + rgvs[i].rgvId); |
| | | position.push({ |
| | | id: rgvs[i].rgvId, |
| | | trackSiteNo: rgvs[i].trackSiteNo, |
| | | initLeft: rgvEl.offset().left |
| | | }) |
| | | } |
| | | that.rgvPosition = position |
| | | return; |
| | | } |
| | | |
| | | for (var i = 0; i < rgvs.length; i++) { |
| | | var rgvEl = $("#rgv-" + rgvs[i].rgvId); |
| | | if (rgvs[i].rgvStatus == 'IDLE') { |
| | | rgvEl.attr("class", "rgv-item"); |
| | | }else if (rgvs[i].rgvStatus == 'WORKING') { |
| | | rgvEl.attr("class", "rgv-item machine-working"); |
| | | } |
| | | |
| | | let trackSiteNo = rgvs[i].trackSiteNo; |
| | | let trackSiteEl = $("#rgvTrackSiteNo-" + trackSiteNo); |
| | | |
| | | let flag = false; |
| | | that.rgvPosition.forEach((item) => { |
| | | if (item.id == rgvs[i].rgvId) { |
| | | if (item.trackSiteNo != trackSiteNo) { |
| | | flag = true |
| | | } |
| | | } |
| | | }) |
| | | |
| | | if (flag) { |
| | | let finalOffset = 0; |
| | | let targetPosition = trackSiteEl.parent().parent().position().left; |
| | | let rgvPosition = rgvEl.position().left; |
| | | let calcResult = targetPosition - rgvPosition |
| | | if (calcResult > 0) { |
| | | finalOffset = targetPosition + trackSiteEl.width(); |
| | | }else { |
| | | finalOffset = targetPosition; |
| | | } |
| | | |
| | | rgvEl.animate({left: finalOffset + "px"}, 500); |
| | | |
| | | let position = [] |
| | | that.rgvPosition.forEach((item) => { |
| | | if (item.id == rgvs[i].rgvId) { |
| | | item.trackSiteNo = trackSiteNo |
| | | } |
| | | position.push(item) |
| | | }) |
| | | that.rgvPosition = position |
| | | } |
| | | |
| | | } |
| | | } else if (res.code === 403) { |
| | | parent.location.href = baseUrl + "/login"; |
| | | } else { |
| | | console.log(res.msg); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | systemSwitch() { |
| | | // ç³»ç»å¼å
³ |
| | |
| | | } |
| | | }); |
| | | }, |
| | | getCarPosition(x,y) { |
| | | //计ç®ååç©¿æ¢è½¦å¾æ ä½ç½® |
| | | let top = (x * 35 - 35) + "px" //éè¦åå»å°è½¦èªå·±æå é«åº¦ |
| | | let left = (y * 35) + "px" //éè¦åå»å°è½¦èªå·±æå 宽度 |
| | | return [top,left]; |
| | | }, |
| | | testMove() { |
| | | let that = this |
| | | clearInterval(this.consoleInterval)//æ¸
ç宿¶å¨ |
| | | |
| | | let shuttleList = this.currentLevShuttleList |
| | | $.ajax({ |
| | | url: baseUrl + "/static/testMoveData.json", |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | method: 'GET', |
| | | success: function(res) { |
| | | shuttleList[0].moveAdvancePath = res |
| | | that.currentLevShuttleList = shuttleList |
| | | |
| | | let index = 0 |
| | | let tmp = null |
| | | tmp = setInterval(() => { |
| | | if (index < res.length) { |
| | | that.currentLevShuttleList[0].point.y = res[index].y |
| | | that.currentLevShuttleList[0].point.x = res[index].x |
| | | index++ |
| | | }else { |
| | | clearInterval(tmp) |
| | | that.init() |
| | | } |
| | | },1000) |
| | | } |
| | | }); |
| | | }, |
| | | colorRGB(){ |
| | | //éæºé¢è² |
| | | const r = Math.floor(Math.random()*256); |
| | | const g = Math.floor(Math.random()*256); |
| | | const b = Math.floor(Math.random()*256); |
| | | return `rgb(${r},${g},${b})`; |
| | | }, |
| | | checkAdvancePath(x,y) { |
| | | //æ£æµè·¯å¾æ¯å¦ä¸ºç©¿æ¢è½¦é¢è®¡è·¯å¾ï¼å¦xåyè·¯å¾æ¯ç©¿æ¢è½¦é¢è®¡è·¯å¾ï¼åè¿åå°è½¦å· |
| | | this.currentLevShuttleList.forEach((item,idx) => { |
| | | if (item.moveAdvancePath != null) { |
| | | item.moveAdvancePath.forEach((path,index) => { |
| | | if (path.x === x && path.y === y) { |
| | | return item.shuttleNo; |
| | | } |
| | | }) |
| | | } |
| | | }) |
| | | let data = [] |
| | | let shuttleList = this.currentLevShuttleList; |
| | | for (var i = 0; i < shuttleList.length; i++) { |
| | | let shuttle = shuttleList[i] |
| | | let moveAdvancePath = shuttle.moveAdvancePath |
| | | if (moveAdvancePath != null) { |
| | | for (var j = 0; j < moveAdvancePath.length; j++) { |
| | | let path = moveAdvancePath[j] |
| | | if (path.x-1 === x && path.y === y) {//è·¯å¾ç¬¦å |
| | | data.push(shuttle.shuttleNo) |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | return data;//è¿åå°è½¦å·éå |
| | | }, |
| | | resetMap() { |
| | | //éç½®å°å¾ |
| | | let that = this |
| | | $.ajax({ |
| | | url:baseUrl+"/console/map/resetMap/" + this.currentLev, |
| | | headers:{ |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | data:{}, |
| | | method:'get', |
| | | success:function (res) { |
| | | that.$message({ |
| | | message: that.currentLev + 'å±å°å¾éç½®å®æ', |
| | | type: 'success' |
| | | }); |
| | | } |
| | | }) |
| | | }, |
| | | initLev(){ |
| | | let that = this |
| | | $.ajax({ |
| | | url: baseUrl + "/console/map/lev/list", |
| | | headers: { |
| | | 'token': localStorage.getItem('token') |
| | | }, |
| | | data: {}, |
| | | method: 'get', |
| | | success: function(res) { |
| | | if (res.code === 200) { |
| | | that.floorList = res.data; |
| | | } else if (res.code === 403) { |
| | | parent.location.href = baseUrl + "/login"; |
| | | } else { |
| | | that.$message({ |
| | | message: res.msg, |
| | | type: 'error' |
| | | }); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | getCodeData(){ |
| | | this.sendWs(JSON.stringify({ |
| | | "url": "/console/barcode/output/site", |
| | | "data": {} |
| | | })) |
| | | |
| | | let that = this |
| | | //è·åRGVæ°æ® |
| | | $.ajax({ |
| | | url: baseUrl + "/console/barcode/output/site", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | if (res.code === 200) { |
| | | var rgvs = res.data; |
| | | |
| | | if (that.rgvPosition.length == 0) { |
| | | let position = [] |
| | | for (var i = 0; i < rgvs.length; i++) { |
| | | var rgvEl = $("#rgv-" + rgvs[i].rgvId); |
| | | position.push({ |
| | | id: rgvs[i].rgvId, |
| | | trackSiteNo: rgvs[i].trackSiteNo, |
| | | initLeft: rgvEl.offset().left |
| | | }) |
| | | } |
| | | that.rgvPosition = position |
| | | return; |
| | | } |
| | | |
| | | for (var i = 0; i < rgvs.length; i++) { |
| | | var rgvEl = $("#rgv-" + rgvs[i].rgvId); |
| | | if (rgvs[i].rgvStatus == 'IDLE') { |
| | | rgvEl.attr("class", "rgv-item"); |
| | | }else if (rgvs[i].rgvStatus == 'WORKING') { |
| | | rgvEl.attr("class", "rgv-item machine-working"); |
| | | } |
| | | |
| | | let trackSiteNo = rgvs[i].trackSiteNo; |
| | | let trackSiteEl = $("#rgvTrackSiteNo-" + trackSiteNo); |
| | | |
| | | let flag = false; |
| | | that.rgvPosition.forEach((item) => { |
| | | if (item.id == rgvs[i].rgvId) { |
| | | if (item.trackSiteNo != trackSiteNo) { |
| | | flag = true |
| | | } |
| | | } |
| | | }) |
| | | |
| | | if (flag) { |
| | | let finalOffset = 0; |
| | | let targetPosition = trackSiteEl.parent().parent().position().left; |
| | | let rgvPosition = rgvEl.position().left; |
| | | let calcResult = targetPosition - rgvPosition |
| | | if (calcResult > 0) { |
| | | finalOffset = targetPosition + trackSiteEl.width(); |
| | | }else { |
| | | finalOffset = targetPosition; |
| | | } |
| | | |
| | | rgvEl.animate({left: finalOffset + "px"}, 500); |
| | | |
| | | let position = [] |
| | | that.rgvPosition.forEach((item) => { |
| | | if (item.id == rgvs[i].rgvId) { |
| | | item.trackSiteNo = trackSiteNo |
| | | } |
| | | position.push(item) |
| | | }) |
| | | that.rgvPosition = position |
| | | } |
| | | |
| | | } |
| | | } else if (res.code === 403) { |
| | | parent.location.href = baseUrl + "/login"; |
| | | } else { |
| | | console.log(res.msg); |
| | | } |
| | | } |
| | | }); |
| | | }, |
| | | setCodeData(res) { |
| | | if(res.code === 200){ |
| | |
| | | } |
| | | } |
| | | }, |
| | | websocketConnect() { |
| | | if (this.ws == null) { |
| | | this.ws = new WebSocket("ws://" + window.location.host + baseUrl + "/console/websocket"); |
| | | this.ws.onopen = this.webSocketOnOpen |
| | | this.ws.onerror = this.webSocketOnError |
| | | this.ws.onmessage = this.webSocketOnMessage |
| | | this.ws.onclose = this.webSocketClose |
| | | getDeviceNo(obj) { |
| | | if (this.isJson(obj)) { |
| | | let data = JSON.parse(obj) |
| | | if (data.deviceNo == null || data.deviceNo == undefined) { |
| | | return -1; |
| | | } |
| | | return data.deviceNo; |
| | | }else { |
| | | return -1; |
| | | } |
| | | }, |
| | | webSocketOnOpen(e) { |
| | | console.log("open"); |
| | | }, |
| | | webSocketOnError(e) { |
| | | this.ws = null; |
| | | console.log(e); |
| | | }, |
| | | webSocketOnMessage(e) { |
| | | const result = JSON.parse(e.data); |
| | | if (result.url == "/shuttle/table/shuttle/state") { |
| | | this.setShuttleStateInfo(JSON.parse(result.data)) |
| | | }else if (result.url == "/lift/table/lift/state") { |
| | | this.setLiftStateInfo(JSON.parse(result.data)) |
| | | }else if (result.url == "/console/latest/data/site") { |
| | | this.setSiteInfo(JSON.parse(result.data)) |
| | | }else if (result.url == "/console/map/auth") { |
| | | this.setMap(JSON.parse(result.data)) |
| | | }else if (result.url == "/console/barcode/output/site") { |
| | | this.setCodeData(JSON.parse(result.data)) |
| | | getTrackSiteNo(obj) { |
| | | if (this.isJson(obj)) { |
| | | let data = JSON.parse(obj) |
| | | if (data.trackSiteNo == null || data.trackSiteNo == undefined) { |
| | | return -1; |
| | | } |
| | | return data.trackSiteNo; |
| | | }else { |
| | | return -1; |
| | | } |
| | | }, |
| | | webSocketClose(e) { |
| | | this.ws = null; |
| | | console.log("close"); |
| | | }, |
| | | sendWs(message) { |
| | | if (this.ws == null) { |
| | | return; |
| | | } |
| | | |
| | | if (this.ws.readyState == WebSocket.OPEN) { |
| | | this.ws.send(message); |
| | | isJson(str) { |
| | | try { |
| | | JSON.parse(str); |
| | | return true; |
| | | } catch (e) { |
| | | return false; |
| | | } |
| | | } |
| | | } |