package com.zy.asrs.controller; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; import com.zy.asrs.entity.BasCrnp; import com.zy.asrs.entity.param.BasCrnpParam; import com.zy.asrs.service.BasCrnpService; import com.zy.common.web.BaseController; import com.zy.core.CrnThread; import com.zy.core.cache.CrnErrCache; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.CrnSlave; import com.zy.core.model.protocol.CrnProtocol; import com.zy.core.properties.SlaveProperties; 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; @Autowired private SlaveProperties slaveProperties; @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 Map param){ excludeTrash(param); EntityWrapper wrapper = new EntityWrapper<>(); convert(param, wrapper); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} // return R.ok(basCrnpService.selectPage(new Page<>(curr, limit), wrapper)); List basCrnpList = basCrnpService.selectList(wrapper); Page page = new Page(0, 100).setRecords(basCrnpList); page.setTotal(basCrnpList.size()); return R.ok(page); } private void convert(Map map, EntityWrapper wrapper){ for (Map.Entry 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(memo = "堆垛机添加") public R add(BasCrnp basCrnp) { basCrnp.setModiUser(getUserId()); basCrnp.setModiTime(new Date()); basCrnp.setAppeUser(getUserId()); basCrnp.setAppeTime(new Date()); basCrnpService.insert(basCrnp); return R.ok(); } @RequestMapping(value = "/basCrnp/update/auth") @ManagerAuth(memo = "堆垛机修改") public R update(BasCrnp basCrnp){ if (Cools.isEmpty(basCrnp) || null==basCrnp.getCrnNo()){ return R.error("请选择堆垛机再操作").add("请选择堆垛机再操作"); } basCrnp.setModiUser(getUserId()); basCrnp.setModiTime(new Date()); basCrnpService.updateById(basCrnp); return R.ok(); } @RequestMapping(value = "/basCrnp/update/demo/auth") @ManagerAuth(memo = "堆垛机修改Demo") public R updateDemo(BasCrnpParam basCrnpParam){ if (Cools.isEmpty(basCrnpParam) || null==basCrnpParam.getCrnNo()){ return R.error("请选择堆垛机再操作").add("请选择堆垛机再操作"); } BasCrnp basCrnp = basCrnpService.selectById(basCrnpParam.getCrnNo()); if (basCrnp == null) { return R.error("堆垛机尚未在数据库进行维护!").add("堆垛机尚未在数据库进行维护"); } if (basCrnpParam.getHpMk().equals("Y")){ // 获取堆垛机信息 CrnThread crnThread = (CrnThread) SlaveConnection.get(SlaveType.Crn, basCrnp.getCrnNo()); if (crnThread == null) { return R.error(); } CrnProtocol crnProtocol = crnThread.getCrnProtocol(); if (crnProtocol == null) { return R.error(); } if (Cools.isEmpty(basCrnpParam.getLocMastDemoCount()) || basCrnpParam.getLocMastDemoCount()<1){ return R.error("请输入测试库位数量").add("请输入测试库位数量"); } if (Cools.isEmpty(basCrnpParam.getLocMastDemo())){ return R.error("请输入测试库位列表").add("请输入测试库位列表"); } else { String[] split = basCrnpParam.getLocMastDemo().split(";"); if (split.length!=basCrnpParam.getLocMastDemoCount()){ return R.error("输入测试库位列表数量不匹配").add("输入测试库位列表数量不匹配"); } basCrnpParam.setLocMastDemoList(new ArrayList<>(Arrays.asList(split))); } if (Cools.isEmpty(basCrnpParam.getStaOutDemo())){ return R.error("请输入测试出库站").add("请输入测试出库站"); } else { CrnSlave crn = new CrnSlave(); for (CrnSlave crnSlave : slaveProperties.getCrn()) { if (crnSlave.getId().equals(crnProtocol.getCrnNo())){ crn = new CrnSlave(crnSlave); break; } } if (Cools.isEmpty(crnProtocol.getLaneNo()) || crnProtocol.getLaneNo()==0){ return R.error("堆垛机巷道号异常").add("堆垛机巷道号异常"); } if (!crn.getId().equals(crnProtocol.getLaneNo())) { for (CrnSlave crnOther : slaveProperties.getCrn()) { if (crnOther.getId().equals(crnProtocol.getLaneNo())) { crn.updateCrnInStn(crnOther); } } } boolean sign = false; for (CrnSlave.CrnStn crnStnInt : crn.getCrnInStn()){ if (crnStnInt.getStaNo().equals(basCrnpParam.getStaIntDemo())) { sign = true; break; } } if (!sign){ return R.error("入库站不在堆垛机巷道").add("入库站不在堆垛机巷道"); } sign = false; for (CrnSlave.CrnStn crnStnOut : crn.getCrnOutStn()){ if (crnStnOut.getStaNo().equals(basCrnpParam.getStaOutDemo())) { sign = true; break; } } if (!sign){ return R.error("出库站不在堆垛机巷道").add("出库站不在堆垛机巷道"); } } crnProtocol.setLocMastDemoCount(basCrnpParam.getLocMastDemoCount()); crnProtocol.setLocMastDemoList(basCrnpParam.getLocMastDemoList()); crnProtocol.setStaOutDemo(basCrnpParam.getStaOutDemo()); crnProtocol.setStaIntDemo(basCrnpParam.getStaIntDemo()); } basCrnp.setHpMk(basCrnpParam.getHpMk()); basCrnp.setModiUser(getUserId()); basCrnp.setModiTime(new Date()); basCrnpService.updateById(basCrnp); return R.ok(); } @RequestMapping(value = "/basCrnp/delete/auth") @ManagerAuth(memo = "堆垛机删除") public R delete(@RequestParam String param){ List list = JSONArray.parseArray(param, BasCrnp.class); if (Cools.isEmpty(list)){ return R.error(); } for (BasCrnp entity : list){ basCrnpService.delete(new EntityWrapper<>(entity)); } return R.ok(); } @RequestMapping(value = "/basCrnp/export/auth") @ManagerAuth(memo = "堆垛机导出") public R export(@RequestBody JSONObject param){ List fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); EntityWrapper wrapper = new EntityWrapper<>(); Map map = excludeTrash(param.getJSONObject("basCrnp")); convert(map, wrapper); List list = basCrnpService.selectList(wrapper); return R.ok(exportSupport(list, fields)); } @RequestMapping(value = "/basCrnpQuery/auth") @ManagerAuth public R query(String condition) { EntityWrapper wrapper = new EntityWrapper<>(); wrapper.like("crn_no", condition); // Page page = basCrnpService.selectPage(new Page<>(0, 10), wrapper); List basCrnpList = basCrnpService.selectList(wrapper); List> result = new ArrayList<>(); for (BasCrnp basCrnp : basCrnpList){ Map 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 wrapper = new EntityWrapper().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(); } }