| | |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.R; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.AdjDetl; |
| | | import com.zy.asrs.entity.AgvLocDetl; |
| | | import com.zy.asrs.entity.AgvLocMast; |
| | | import com.zy.asrs.entity.AgvWrkMast; |
| | | import com.zy.asrs.entity.param.LocMastInitParam; |
| | | import com.zy.asrs.service.AgvLockMastService; |
| | | import com.zy.asrs.service.AdjDetlService; |
| | | import com.zy.asrs.service.AgvLocDetlService; |
| | | import com.zy.asrs.service.AgvLocMastService; |
| | | import com.zy.asrs.service.AgvWrkMastService; |
| | | import com.zy.common.web.BaseController; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @RestController |
| | | @RequestMapping("/agv") |
| | | public class AgvLocMastController extends BaseController { |
| | | |
| | | @Autowired |
| | | private AgvLockMastService agvLockMastService; |
| | | private AgvLocMastService agvLockMastService; |
| | | @Autowired |
| | | private AgvWrkMastService agvWrkMastService; |
| | | @Autowired |
| | | private AgvLocDetlService agvLocDetlService; |
| | | @Autowired |
| | | private AdjDetlService adjDetlService; |
| | | |
| | | @RequestMapping(value = "/agvLocMast/list/auth") |
| | | @RequestMapping(value = "/locMast/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<String, Object> param){ |
| | | 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<String, Object> param) { |
| | | excludeTrash(param); |
| | | EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); |
| | | convert(param, wrapper); |
| | | if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} |
| | | return R.ok(agvLockMastService.selectPage(new Page<>(curr, limit), wrapper.eq("status",0))); |
| | | convert1(param, wrapper); |
| | | if (!Cools.isEmpty(orderByField)) { |
| | | wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType)); |
| | | } |
| | | return R.ok(agvLockMastService.selectPage(new Page<>(curr, limit), wrapper.eq("status", 0))); |
| | | } |
| | | |
| | | @RequestMapping(value = "/avgLocMast/add/auth") |
| | | @RequestMapping(value = "/locMast/add/auth") |
| | | @ManagerAuth(memo = "库位添加") |
| | | public R add(AgvLocMast agvLocMast) { |
| | | agvLocMast.setModiUser(getUserId()); |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/agvLocMast/update/auth") |
| | | @RequestMapping(value = "/locMast/update/auth") |
| | | @ManagerAuth(memo = "库位修改") |
| | | @Transactional |
| | | public R update(LocMast locMast){ |
| | | //to do |
| | | public R update(AgvLocMast locMast) { |
| | | if (Cools.isEmpty(locMast) || null == locMast.getLocNo()) { |
| | | return R.error("参数缺失"); |
| | | } |
| | | AgvWrkMast wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>() |
| | | .eq("source_loc_no", locMast.getLocNo()) |
| | | .or().eq("loc_no", locMast.getLocNo())); |
| | | if (!Cools.isEmpty(wrkMast)) { |
| | | return R.error("该库位正在作业,请先处理工作档"); |
| | | } |
| | | AgvLocMast oldLocMast = agvLockMastService.selectById(locMast.getLocNo()); |
| | | if (locMast.getLocSts().equals("F") && (oldLocMast.getLocSts().equals("D") || oldLocMast.getLocSts().equals("O"))) { |
| | | return R.error("当前操作已被阻止,请联系管理员"); |
| | | } |
| | | int br = 0; |
| | | if (locMast.getLocSts() == "O" || locMast.getLocSts() == "X") { |
| | | switch (locMast.getBarcode().substring(0, 2)) { |
| | | case "10": |
| | | br = 1; |
| | | break; |
| | | case "20": |
| | | br = 2; |
| | | break; |
| | | case "21": |
| | | br = 4; |
| | | break; |
| | | case "30": |
| | | br = 3; |
| | | break; |
| | | case "40": |
| | | br = 5; |
| | | break; |
| | | } |
| | | if (oldLocMast.getLocType1() != br) { |
| | | return R.error("货架和库位类型不匹配!"); |
| | | } |
| | | } |
| | | Date now = new Date(); |
| | | // 有物料时修改为空库位或者空板库位,则删除库存明细 |
| | | if (oldLocMast.getLocSts().equals("R") || oldLocMast.getLocSts().equals("F") || oldLocMast.getLocSts().equals("S")) { |
| | | if (locMast.getLocSts().equals("O") || locMast.getLocSts().equals("D")) { |
| | | List<AgvLocDetl> locDetls = agvLocDetlService.selectList(new EntityWrapper<AgvLocDetl>().eq("loc_no", locMast.getLocNo())); |
| | | for (AgvLocDetl locDetl : locDetls) { |
| | | // 保存调整记录 |
| | | AdjDetl adjDetl = new AdjDetl(); |
| | | adjDetl.setLocNo(locDetl.getLocNo()); |
| | | adjDetl.setMatnr(locDetl.getMatnr()); |
| | | adjDetl.setBatch(locDetl.getBatch()); |
| | | adjDetl.setOriQty(locDetl.getAnfme()); |
| | | adjDetl.setAdjQty(0.0D); |
| | | adjDetl.setModiTime(now); |
| | | adjDetl.setModiUser(getUserId()); |
| | | adjDetl.setAppeTime(now); |
| | | adjDetl.setAppeUser(getUserId()); |
| | | if (!adjDetlService.insert(adjDetl)) { |
| | | throw new CoolException("库位修改失败"); |
| | | } |
| | | } |
| | | if (!agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", locMast.getLocNo()))) { |
| | | throw new CoolException("库位明细删除失败"); |
| | | } |
| | | if (locMast.getLocSts().equals("O")) { |
| | | locMast.setBarcode(""); |
| | | } |
| | | } |
| | | } else if (oldLocMast.getLocSts().equals("D")) { |
| | | if (locMast.getLocSts().equals("O")) { |
| | | locMast.setBarcode(""); |
| | | } |
| | | } |
| | | locMast.setModiUser(getUserId()); |
| | | locMast.setModiTime(now); |
| | | if (!agvLockMastService.updateById(locMast)) { |
| | | throw new CoolException("主库位修改失败"); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/agvLocMast/delete/auth") |
| | | @RequestMapping(value = "/locMast/delete/auth") |
| | | @ManagerAuth(memo = "库位删除") |
| | | public R delete(@RequestParam String param){ |
| | | public R delete(@RequestParam String param) { |
| | | List<AgvLocMast> list = JSONArray.parseArray(param, AgvLocMast.class); |
| | | if (Cools.isEmpty(list)){ |
| | | return R.error(); |
| | | if (Cools.isEmpty(list)) { |
| | | return R.error("参数缺失"); |
| | | } |
| | | for (AgvLocMast entity : list){ |
| | | for (AgvLocMast entity : list) { |
| | | agvLockMastService.delete(new EntityWrapper<>(entity)); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/agvLocMast/export/auth") |
| | | @RequestMapping(value = "/locMast/export/auth") |
| | | @ManagerAuth(memo = "库位导出") |
| | | public R export(@RequestBody JSONObject param){ |
| | | public R export(@RequestBody JSONObject param) { |
| | | List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); |
| | | EntityWrapper<AgvLocMast> wrapper = new EntityWrapper<>(); |
| | | Map<String, Object> map = excludeTrash(param.getJSONObject("locMast")); |
| | |
| | | return R.ok(exportSupport(list, fields)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/agvLocMast/check/column/auth") |
| | | @RequestMapping(value = "/locMast/check/column/auth") |
| | | @ManagerAuth |
| | | public R query(@RequestBody JSONObject param) { |
| | | Wrapper<AgvLocMast> wrapper = new EntityWrapper<AgvLocMast>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val")); |
| | | if (null != agvLockMastService.selectOne(wrapper)){ |
| | | if (null != agvLockMastService.selectOne(wrapper)) { |
| | | return R.parse(BaseRes.REPEAT).add(getComment(AgvLocMast.class, String.valueOf(param.get("key")))); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/AgvLocMast/init/auth") |
| | | @RequestMapping(value = "/locMast/init/auth") |
| | | @ManagerAuth(memo = "初始化库位") |
| | | // @Transactional |
| | | public R init(LocMastInitParam param) { |
| | | //to do |
| | | //清空原有库位 |
| | | // agvLockMastService.clearLoc(); |
| | | //初始化一楼库位 |
| | | agvLockMastService.initLocFloor1(); |
| | | //初始化二楼库位 |
| | | // agvLockMastService.initLocFloor2(); |
| | | //初始化三楼站点 |
| | | // agvLockMastService.initLocFloor3(); |
| | | |
| | | return null; |
| | | return R.ok(); |
| | | } |
| | | |
| | | private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ |
| | | for (Map.Entry<String, Object> entry : map.entrySet()){ |
| | | @RequestMapping(value = "/locMast/{id}/auth") |
| | | @ManagerAuth |
| | | public R get(@PathVariable("id") String id) { |
| | | return R.ok(agvLockMastService.selectById(String.valueOf(id))); |
| | | } |
| | | |
| | | 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)){ |
| | | 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])); |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | private <T> void convert1(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.eq(entry.getKey(), val); |
| | | } |
| | | } |
| | | } |
| | | } |