| | |
| | | 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.core.annotations.ManagerAuth; |
| | | import com.core.common.BaseRes; |
| | | import com.core.common.Cools; |
| | | import com.core.common.R; |
| | | import com.zy.asrs.entity.LocDetl; |
| | | import com.zy.asrs.entity.LocMast; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.CombParam; |
| | | import com.zy.asrs.service.LocDetlService; |
| | | import com.zy.asrs.service.LocMastService; |
| | | import com.zy.asrs.service.MobileService; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.model.MobileLocDetlVo; |
| | | import com.zy.common.web.BaseController; |
| | | import com.zy.ints.entity.WaitMatchk; |
| | | import com.zy.ints.entity.WaitMatin; |
| | | import com.zy.ints.service.WaitMatchkService; |
| | | import com.zy.ints.service.WaitMatinService; |
| | | 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 java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | | private LocDetlService locDetlService; |
| | | @Autowired |
| | | private WrkDetlService wrkDetlService; |
| | | @Autowired |
| | | private WaitMatinService waitMatinService; |
| | | @Autowired |
| | | private WaitMatchkService waitMatchkService; |
| | | @Autowired |
| | | private MatCodeService matCodeService; |
| | | |
| | | /** |
| | | * 组托 |
| | |
| | | mobileService.comb(combParam, getUserId()); |
| | | return R.ok(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 组托 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 库存查询(根据物料编码和库位查询库存数量和捡料数量) |
| | | * @param locNo |
| | | * @param matNo |
| | | * @return |
| | | */ |
| | | @RequestMapping("/locDetl/stockQuery") |
| | | @ManagerAuth |
| | | public R stockQuery(@RequestParam(required = false)String locNo, |
| | | @RequestParam(required = false)String matNo){ |
| | | if (!Cools.isEmpty(locNo)) { |
| | | LocMast locMast = locMastService.selectById(locNo); |
| | | if (null == locMast || !"F".equals(locMast.getLocSts())) { |
| | | return R.parse(BaseRes.EMPTY); |
| | | } |
| | | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() |
| | | .eq("loc_no", locNo).orderBy("appe_time", false)); |
| | | List<MobileLocDetlVo> res = new ArrayList<>(); |
| | | locDetls.forEach(locDetl -> { |
| | | MobileLocDetlVo vo = new MobileLocDetlVo(); |
| | | List<WrkDetl> wrkDetlsList = wrkDetlService.queryWrkDetl(locDetl.getMatNo(), locDetl.getLocNo()); |
| | | final Double[] pickNum = {0.0}; |
| | | wrkDetlsList.forEach(item -> { |
| | | pickNum[0] = pickNum[0] + item.getQty(); |
| | | }); |
| | | vo.setPickNum(pickNum[0]); |
| | | vo.setLocNo(locDetl.getLocNo()); |
| | | vo.setMatNo(locDetl.getMatNo()); |
| | | vo.setMatName(locDetl.getMatName()); |
| | | vo.setCount(locDetl.getQty()); |
| | | res.add(vo); |
| | | }); |
| | | return R.ok().add(res); |
| | | } |
| | | if (!Cools.isEmpty(matNo)) { |
| | | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() |
| | | .eq("mat_no", matNo).orderBy("appe_time", false)); |
| | | List<MobileLocDetlVo> res = new ArrayList<>(); |
| | | locDetls.forEach(locDetl -> { |
| | | MobileLocDetlVo vo = new MobileLocDetlVo(); |
| | | List<WrkDetl> wrkDetlsList = wrkDetlService.queryWrkDetl(locDetl.getMatNo(), locDetl.getLocNo()); |
| | | final Double[] pickNum = {0.0}; |
| | | wrkDetlsList.forEach(item -> { |
| | | pickNum[0] = pickNum[0] + item.getQty(); |
| | | }); |
| | | vo.setPickNum(pickNum[0]); |
| | | vo.setLocNo(locDetl.getLocNo()); |
| | | vo.setMatNo(locDetl.getMatNo()); |
| | | vo.setMatName(locDetl.getMatName()); |
| | | vo.setCount(locDetl.getQty()); |
| | | res.add(vo); |
| | | }); |
| | | return R.ok().add(res); |
| | | } |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | |
| | | /** |
| | | * 根据库位号查找库存明细 |
| | | */ |
| | | @RequestMapping("/locDetl") |
| | |
| | | @RequestParam(required = false)String matNo){ |
| | | if (!Cools.isEmpty(locNo)) { |
| | | LocMast locMast = locMastService.selectById(locNo); |
| | | if (null == locMast || !"F".equals(locMast.getLocType())) { |
| | | if (null == locMast || !"F".equals(locMast.getLocSts())) { |
| | | return R.parse(BaseRes.EMPTY); |
| | | } |
| | | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() |
| | |
| | | locDetls.forEach(locDetl -> { |
| | | MobileLocDetlVo vo = new MobileLocDetlVo(); |
| | | vo.setLocNo(locDetl.getLocNo()); |
| | | vo.setMatnr(locDetl.getMatnr()); |
| | | vo.setMaktx(locDetl.getMaktx()); |
| | | vo.setCount(locDetl.getAnfme()); |
| | | vo.setMatNo(locDetl.getMatNo()); |
| | | vo.setMatName(locDetl.getMatName()); |
| | | vo.setCount(locDetl.getQty()); |
| | | res.add(vo); |
| | | }); |
| | | return R.ok().add(res); |
| | | } |
| | | if (!Cools.isEmpty(matNo)) { |
| | | List<LocDetl> locDetls = locDetlService.selectList(new EntityWrapper<LocDetl>() |
| | | .eq("matnr", matNo).orderBy("appe_time", false)); |
| | | .eq("mat_no", matNo).orderBy("appe_time", false)); |
| | | List<MobileLocDetlVo> res = new ArrayList<>(); |
| | | locDetls.forEach(locDetl -> { |
| | | MobileLocDetlVo vo = new MobileLocDetlVo(); |
| | | vo.setLocNo(locDetl.getLocNo()); |
| | | vo.setMatnr(locDetl.getMatnr()); |
| | | vo.setMaktx(locDetl.getMaktx()); |
| | | vo.setCount(locDetl.getAnfme()); |
| | | vo.setMatNo(locDetl.getMatNo()); |
| | | vo.setMatName(locDetl.getMatName()); |
| | | vo.setCount(locDetl.getQty()); |
| | | res.add(vo); |
| | | }); |
| | | return R.ok().add(res); |
| | | } |
| | | return R.parse(BaseRes.PARAM); |
| | | } |
| | | |
| | | /** |
| | | * 根据通知单查询明细 |
| | | */ |
| | | @RequestMapping("/bill/query/auth") |
| | | @ManagerAuth(memo = "根据通知单查询明细") |
| | | public R billQuery(@RequestParam String billNo){ |
| | | List<WaitMatin> waitMatins = waitMatinService.selectList(new EntityWrapper<WaitMatin>().eq("bill_no", billNo).last("and qty > in_qty")); |
| | | List<CombBillQueryVo> vos = new ArrayList<>(); |
| | | if (!Cools.isEmpty(waitMatins)) { |
| | | for (WaitMatin waitMatin : waitMatins) { |
| | | CombBillQueryVo vo = new CombBillQueryVo(); |
| | | vo.setMatNo(waitMatin.getMatNo()); |
| | | vo.setMatName(waitMatin.getMatName()); |
| | | vo.setCount(waitMatin.getQty()-waitMatin.getInQty()); |
| | | vo.setBillNo(waitMatin.getBillNo()); |
| | | vo.setSeqNo(waitMatin.getSeqNo()); |
| | | vo.setUnit(waitMatin.getUnit()); |
| | | vo.setSpecs(waitMatin.getSpecs()); |
| | | vo.setSize(waitMatin.getSize()); |
| | | vo.setColor(waitMatin.getColor()); |
| | | vos.add(vo); |
| | | } |
| | | } |
| | | return R.ok().add(vos); |
| | | } |
| | | |
| | | /** |
| | | * PDA盘点根据出库口查询对应物料信息 |
| | | */ |
| | | @RequestMapping("/check/queryMatFromDevNo") |
| | | public R queryMatFromDevNo(Integer devNo) { |
| | | List<WrkDetl> list = wrkDetlService.queryMatFromDevNo(devNo); |
| | | return R.ok().add(list); |
| | | } |
| | | |
| | | /** |
| | | * 根据PDA盘点数量,更新盘点通知档 |
| | | * @param param |
| | | * @return |
| | | */ |
| | | @RequestMapping("/stock/check") |
| | | @Transactional |
| | | @ManagerAuth |
| | | public R erpStockCheck(@RequestBody String param) { |
| | | Boolean flag = false; |
| | | JSONObject jsonObject = JSONObject.parseObject(param); |
| | | String checkListStr = jsonObject.getString("checkList"); |
| | | List<WaitMatchk> checkList = JSONArray.parseArray(checkListStr, WaitMatchk.class); |
| | | Long userId = 9527L; //getUserId();//9527L; |
| | | int seq = 0; |
| | | Date now = new Date(); |
| | | for (Integer i = 0; i < checkList.size(); i++) { |
| | | String locNo = checkList.get(i).getLocNo(); |
| | | String matNo = checkList.get(i).getMatNo(); |
| | | Double checkQty = checkList.get(i).getCheckQty(); |
| | | |
| | | Wrapper<WaitMatchk> wrapper = new EntityWrapper<WaitMatchk>().eq("loc_no",locNo).eq("mat_no",matNo); |
| | | WaitMatchk waitMatchk0 = waitMatchkService.selectOne(wrapper); |
| | | if(null != waitMatchk0){ |
| | | waitMatchk0.setCheckQty(checkQty); |
| | | flag = waitMatchkService.update(waitMatchk0,wrapper); |
| | | if(!flag){ |
| | | throw new CoolException("更新盘点通知档失败"); |
| | | } |
| | | } else { |
| | | MatCode matCode = matCodeService.selectOne(new EntityWrapper<MatCode>().eq("mat_no",matNo)); |
| | | WaitMatchk waitMatchk1 = waitMatchkService.selectOne(new EntityWrapper<WaitMatchk>().eq("loc_no",locNo).orderBy("seq_no",false)); |
| | | if(null != matCode) { |
| | | WaitMatchk waitMatchk = new WaitMatchk(); |
| | | waitMatchk.setLocNo(locNo); |
| | | waitMatchk.setMatNo(matNo); |
| | | if(null != waitMatchk1){ |
| | | waitMatchk.setBillNo(waitMatchk1.getBillNo()); |
| | | waitMatchk.setSeqNo(waitMatchk1.getSeqNo()+1); |
| | | waitMatchk.setZpallet(waitMatchk1.getZpallet()); |
| | | waitMatchk.setLinkErp(waitMatchk1.getLinkErp()); |
| | | waitMatchk.setIoStatus(waitMatchk1.getIoStatus()); |
| | | } else { |
| | | waitMatchk.setBillNo("0"); |
| | | waitMatchk.setSeqNo(seq++); |
| | | waitMatchk.setLinkErp(0); |
| | | waitMatchk.setIoStatus(1); |
| | | } |
| | | waitMatchk.setBillType(1);//抽盘 |
| | | waitMatchk.setMatName(matCode.getMatName()); |
| | | waitMatchk.setStockQty(0D); |
| | | waitMatchk.setCheckQty(checkQty); |
| | | waitMatchk.setModiTime(now); |
| | | waitMatchk.setModiUser(getUserId()); |
| | | waitMatchk.setAppeTime(now); |
| | | waitMatchk.setAppeUser(getUserId()); |
| | | flag = waitMatchkService.insert(waitMatchk); |
| | | if(!flag){ |
| | | throw new CoolException("新增盘点通知档数据失败"); |
| | | } |
| | | } |
| | | |
| | | } |
| | | } |
| | | return R.ok().add(flag); |
| | | } |
| | | } |