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.core.exception.CoolException; import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.CombParam; 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; /** * 移动端接口控制器 * Created by vincent on 2020/6/10 */ @RestController @RequestMapping("mobile") public class MobileController extends BaseController { @Autowired private MobileService mobileService; @Autowired private LocMastService locMastService; @Autowired private LocDetlService locDetlService; @Autowired private WrkDetlService wrkDetlService; @Autowired private WaitMatinService waitMatinService; @Autowired private WaitMatchkService waitMatchkService; @Autowired private MatCodeService matCodeService; /** * 组托 */ @RequestMapping("/comb/auth") @ManagerAuth(memo = "组托") public R comb(@RequestBody CombParam combParam){ mobileService.comb(combParam, getUserId()); return R.ok(); } /** * 组托 */ @RequestMapping("/comb/form") @ManagerAuth(memo = "组托") public R combForm(@RequestParam CombParam combParam){ 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 locDetls = locDetlService.selectList(new EntityWrapper() .eq("loc_no", locNo).orderBy("appe_time", false)); List res = new ArrayList<>(); locDetls.forEach(locDetl -> { MobileLocDetlVo vo = new MobileLocDetlVo(); List 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 locDetls = locDetlService.selectList(new EntityWrapper() .eq("mat_no", matNo).orderBy("appe_time", false)); List res = new ArrayList<>(); locDetls.forEach(locDetl -> { MobileLocDetlVo vo = new MobileLocDetlVo(); List 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") @ManagerAuth public R getLocDetl(@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 locDetls = locDetlService.selectList(new EntityWrapper() .eq("loc_no", locNo).orderBy("appe_time", false)); List res = new ArrayList<>(); locDetls.forEach(locDetl -> { MobileLocDetlVo vo = new MobileLocDetlVo(); 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 locDetls = locDetlService.selectList(new EntityWrapper() .eq("mat_no", matNo).orderBy("appe_time", false)); List res = new ArrayList<>(); locDetls.forEach(locDetl -> { MobileLocDetlVo vo = new MobileLocDetlVo(); 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("/bill/query/auth") @ManagerAuth(memo = "根据通知单查询明细") public R billQuery(@RequestParam String billNo){ List waitMatins = waitMatinService.selectList(new EntityWrapper().eq("bill_no", billNo).last("and qty > in_qty")); List 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 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 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 wrapper = new EntityWrapper().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().eq("mat_no",matNo)); WaitMatchk waitMatchk1 = waitMatchkService.selectOne(new EntityWrapper().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); } }