| | |
| | | import com.baomidou.mybatisplus.mapper.Wrapper; |
| | | import com.baomidou.mybatisplus.plugins.Page; |
| | | import com.core.annotations.ManagerAuth; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.R; |
| | | import com.core.common.SpringUtils; |
| | | import com.core.common.*; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.entity.param.OrderDomainParam; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.common.CodeRes; |
| | | import com.zy.common.config.AdminInterceptor; |
| | | import com.zy.common.utils.BarcodeUtils; |
| | | import com.zy.common.utils.QrCode; |
| | | 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.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.imageio.ImageIO; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.awt.image.BufferedImage; |
| | | import java.io.IOException; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | |
| | | } |
| | | } |
| | | |
| | | @RequestMapping(value = "/ManPakOut/add/auth") |
| | | @ManagerAuth(memo = "生成拣货单") |
| | | @Transactional |
| | | public R manPakOutAdd(@RequestBody OrderDomainParam param){ |
| | | if (Cools.isEmpty(param)){ |
| | | return R.error("数据异常"); |
| | | } |
| | | if (!Cools.isEmpty(param.getOrderNo())){ |
| | | Order order = orderService.selectOne(new EntityWrapper<Order>() |
| | | .eq("order_no", param.getOrderNo()) |
| | | ); |
| | | if (Cools.isEmpty(order)){ |
| | | return R.error("单据不存在"); |
| | | } |
| | | List<OrderDetl> orderDetls =orderDetlService.selectList(new EntityWrapper<OrderDetl>() |
| | | .eq("order_no", param.getOrderNo()) |
| | | ); |
| | | if (Cools.isEmpty(orderDetls)){ |
| | | return R.error("单据明细为空"); |
| | | } |
| | | for (OrderDetl orderDetl : orderDetls){ |
| | | List<ManLocDetl> manLocDetls=null; |
| | | try{ |
| | | if (Cools.isEmpty(orderDetl.getBatch())){ |
| | | manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>() |
| | | .eq("matnr",orderDetl.getMatnr()) |
| | | ); |
| | | }else { |
| | | manLocDetls = manLocDetlService.selectList(new EntityWrapper<ManLocDetl>() |
| | | .eq("matnr",orderDetl.getMatnr()) |
| | | .eq("batch",orderDetl.getBatch()) |
| | | ); |
| | | } |
| | | }catch (Exception e){ |
| | | return R.error("添加拣货单失败"); |
| | | } |
| | | |
| | | if (!Cools.isEmpty(manLocDetls)){ |
| | | for (ManLocDetl manLocDetl:manLocDetls){ |
| | | Double statusAnfme = 0.0; |
| | | if (Cools.isEmpty(manLocDetl.getStatus())){ |
| | | manLocDetl.setStatus(1); |
| | | } |
| | | try{ |
| | | if (manLocDetl.getStatus$().equals("禁用")){ |
| | | if (Cools.isEmpty(manLocDetl.getBatch())){ |
| | | List<ManPakOut> manPakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>() |
| | | .eq("loc_no", manLocDetl.getLocNo()) |
| | | .eq("matnr", manLocDetl.getMatnr()) |
| | | .eq("status",0) |
| | | ); |
| | | if (!Cools.isEmpty(manPakOuts)){ |
| | | for (ManPakOut manPakOut:manPakOuts){ |
| | | statusAnfme=statusAnfme+manPakOut.getAnfme(); |
| | | } |
| | | } |
| | | }else { |
| | | List<ManPakOut> manPakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>() |
| | | .eq("loc_no", manLocDetl.getLocNo()) |
| | | .eq("matnr", manLocDetl.getMatnr()) |
| | | .eq("batch",manLocDetl.getBatch()) |
| | | .eq("status",0) |
| | | ); |
| | | if (!Cools.isEmpty(manPakOuts)){ |
| | | for (ManPakOut manPakOut:manPakOuts){ |
| | | statusAnfme=statusAnfme+manPakOut.getAnfme(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | return R.error("查询库存禁用数量失败"); |
| | | } |
| | | Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>() |
| | | .eq("loc_no", manLocDetl.getLocNo()) |
| | | .eq("matnr", manLocDetl.getMatnr()); |
| | | if (orderDetl.getAnfme() > manLocDetl.getAnfme()-statusAnfme){ |
| | | if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ |
| | | manLocDetl.setStatus(0); |
| | | try{ |
| | | if (Cools.isEmpty(manLocDetl.getBatch())){ |
| | | manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime())); |
| | | }else { |
| | | manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); |
| | | } |
| | | }catch (Exception e){ |
| | | return R.error("更新库存失败"); |
| | | } |
| | | orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme()); |
| | | }else { |
| | | return R.error("添加拣货单失败"); |
| | | } |
| | | }else if (orderDetl.getAnfme()-manLocDetl.getAnfme()-statusAnfme==0){ |
| | | if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ |
| | | manLocDetl.setStatus(0); |
| | | try{ |
| | | if (Cools.isEmpty(manLocDetl.getBatch())){ |
| | | manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime())); |
| | | }else { |
| | | manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); |
| | | } |
| | | }catch (Exception e){ |
| | | return R.error("更新库存失败"); |
| | | } |
| | | orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme()); |
| | | }else { |
| | | return R.error("添加拣货单失败"); |
| | | } |
| | | }else if (orderDetl.getAnfme()<manLocDetl.getAnfme()-statusAnfme){ |
| | | Double a=manLocDetl.getAnfme(); |
| | | manLocDetl.setAnfme(orderDetl.getAnfme()); |
| | | if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ |
| | | orderDetl.setAnfme(orderDetl.getAnfme()-manLocDetl.getAnfme()); |
| | | manLocDetl.setStatus(0); |
| | | manLocDetl.setAnfme(a); |
| | | try{ |
| | | if (Cools.isEmpty(manLocDetl.getBatch())){ |
| | | manLocDetlService.update(manLocDetl,wrapper.eq("modi_time",manLocDetl.getModiTime())); |
| | | }else { |
| | | manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); |
| | | } |
| | | }catch (Exception e){ |
| | | return R.error("更新库存失败"); |
| | | } |
| | | |
| | | }else { |
| | | return R.error("添加拣货单失败"); |
| | | } |
| | | }else { |
| | | return R.error("系统出错,请联系管理员"); |
| | | } |
| | | if (orderDetl.getAnfme()==0){ |
| | | break; |
| | | } |
| | | } |
| | | if (orderDetl.getAnfme()!=0){ |
| | | ManLocDetl manLocDetl=new ManLocDetl(); |
| | | manLocDetl.setAnfme(0.0); |
| | | manLocDetl.setMatnr(orderDetl.getMatnr()); |
| | | manLocDetl.setMaktx(orderDetl.getMaktx()); |
| | | manLocDetl.setMemo(orderDetl.getMemo()+"库存不足"); |
| | | if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ |
| | | continue; |
| | | }else { |
| | | return R.error("添加拣货单失败"); |
| | | } |
| | | } |
| | | }else { |
| | | ManLocDetl manLocDetl=new ManLocDetl(); |
| | | manLocDetl.setAnfme(0.0); |
| | | manLocDetl.setMatnr(orderDetl.getMatnr()); |
| | | manLocDetl.setMaktx(orderDetl.getMaktx()); |
| | | manLocDetl.setMemo(orderDetl.getMemo()+"无库存"); |
| | | if (addPakOUT(manLocDetl,param.getOrderNo()).equals(R.ok())){ |
| | | continue; |
| | | }else { |
| | | return R.error("添加拣货单失败"); |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | orderService.updateSettle(order.getId(),(long)2,null); |
| | | }else { |
| | | return R.error("单据编号异常"); |
| | | } |
| | | return R.ok("拣货单添加成功"); |
| | | } |
| | | private R addPakOUT(ManLocDetl manLocDetl,String OrderNo){ |
| | | ManPakOut manPakOut=new ManPakOut(); |
| | | manPakOut.setWrkNo(OrderNo+"-"+System.currentTimeMillis()); |
| | | manPakOut.setWrkSts((long)1); |
| | | manPakOut.setAnfme(manLocDetl.getAnfme()); |
| | | manPakOut.setLocNo(manLocDetl.getLocNo()); |
| | | manPakOut.setNodeId(manLocDetl.getNodeId()); |
| | | manPakOut.setMatnr(manLocDetl.getMatnr()); |
| | | manPakOut.setMaktx(manLocDetl.getMaktx()); |
| | | manPakOut.setSpecs(manLocDetl.getSpecs()); |
| | | manPakOut.setUnit(manLocDetl.getUnit()); |
| | | manPakOut.setBarcode(manLocDetl.getBarcode()); |
| | | manPakOut.setDocNum(OrderNo); |
| | | manPakOut.setStatus(0); |
| | | manPakOut.setCreateTime(new Date()); |
| | | if (!Cools.isEmpty(manLocDetl.getBatch())){ |
| | | manPakOut.setBatch(manLocDetl.getBatch()); |
| | | manPakOut.setUpdateTime(new Date()); |
| | | }else { |
| | | manPakOut.setUpdateTime(manLocDetl.getModiTime());//用于识别货物 |
| | | } |
| | | |
| | | manPakOut.setMemo(manLocDetl.getMemo()); |
| | | if (Cools.isEmpty(manPakOutService.selectOne(new EntityWrapper<ManPakOut>().eq("doc_num",OrderNo)))){ |
| | | manPakOut.setName(manLocDetl.getMaktx()); |
| | | } |
| | | try{ |
| | | if (!manPakOutService.insert(manPakOut)){ |
| | | return R.error("添加拣货明细失败,请联系管理员"); |
| | | } |
| | | }catch (Exception e){ |
| | | return R.error("添加拣货明细失败,请联系管理员"); |
| | | } |
| | | return R.ok(); |
| | | |
| | | } |
| | | |
| | | @RequestMapping("/manPakOut/finish") |
| | | public R finish(@RequestBody ManPakOut manPakOut){ |
| | | Wrapper<ManLocDetl> wrapper = new EntityWrapper<ManLocDetl>() |
| | | .eq("loc_no", manPakOut.getLocNo()) |
| | | .eq("matnr", manPakOut.getMatnr()); |
| | | try{ |
| | | if (Cools.isEmpty(manPakOut.getBatch())){ |
| | | List<ManLocDetl> manLocDetls = manLocDetlService.selectList(wrapper); |
| | | Double anfme=manPakOut.getAnfme(); |
| | | for (ManLocDetl manLocDetl:manLocDetls){ |
| | | if (anfme<manLocDetl.getAnfme()){ |
| | | manLocDetl.setAnfme(manLocDetl.getAnfme()-anfme); |
| | | manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); |
| | | anfme=0.0; |
| | | }else if (anfme>=manLocDetl.getAnfme()){ |
| | | manLocDetlService.delete(wrapper.eq("batch",manLocDetl.getBatch())); |
| | | anfme=anfme-manLocDetl.getAnfme(); |
| | | } |
| | | if (anfme==0.0){ |
| | | break; |
| | | } |
| | | } |
| | | }else { |
| | | ManLocDetl manLocDetl = manLocDetlService.selectOne(wrapper.eq("batch", manPakOut.getBatch())); |
| | | if (manPakOut.getAnfme()<manLocDetl.getAnfme()){ |
| | | manLocDetl.setAnfme(manLocDetl.getAnfme()-manPakOut.getAnfme()); |
| | | manLocDetlService.update(manLocDetl,wrapper.eq("batch",manLocDetl.getBatch())); |
| | | }else if (manPakOut.getAnfme()-manLocDetl.getAnfme()==0){ |
| | | manLocDetlService.delete(wrapper.eq("batch",manLocDetl.getBatch())); |
| | | } |
| | | } |
| | | }catch (Exception e){ |
| | | return R.error("更新库存数量失败"); |
| | | } |
| | | |
| | | |
| | | ManPakOut out = Cools.isEmpty(manPakOut.getBatch())? manPakOutService.selectOne(new EntityWrapper<ManPakOut>() |
| | | .eq("wrk_no", manPakOut.getWrkNo()) |
| | | .eq("matnr", manPakOut.getMatnr())) |
| | | :manPakOutService.selectOne(new EntityWrapper<ManPakOut>() |
| | | .eq("wrk_no", manPakOut.getWrkNo()) |
| | | .eq("matnr", manPakOut.getMatnr()) |
| | | .eq("batch",manPakOut.getBatch())); |
| | | out.setWrkSts(manPakOut.getWrkSts()); |
| | | out.setZpallet(manPakOut.getZpallet()); |
| | | out.setAnfme(manPakOut.getAnfme()); |
| | | out.setNodeId(manPakOut.getNodeId()); |
| | | out.setLocNo(manPakOut.getLocNo()); |
| | | out.setMatnr(manPakOut.getMatnr()); |
| | | out.setMaktx(manPakOut.getMaktx()); |
| | | out.setBatch(manPakOut.getBatch()); |
| | | out.setStatus(manPakOut.getStatus()); |
| | | boolean update =Cools.isEmpty(manPakOut.getBatch())? manPakOutService.update(out, new EntityWrapper<ManPakOut>() |
| | | .eq("wrk_no", manPakOut.getWrkNo()) |
| | | .eq("matnr", manPakOut.getMatnr())) |
| | | :manPakOutService.update(out, new EntityWrapper<ManPakOut>() |
| | | .eq("wrk_no", manPakOut.getWrkNo()) |
| | | .eq("matnr", manPakOut.getMatnr()) |
| | | .eq("batch",manPakOut.getBatch())); |
| | | try { |
| | | Order order = orderService.selectOne(new EntityWrapper<Order>().eq("order_no", manPakOut.getDocNum())); |
| | | List<ManPakOut> pakOuts = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", order.getOrderNo())); |
| | | if (Cools.isEmpty(pakOuts)){ |
| | | return R.error("查询拣货单明细失败"); |
| | | }else { |
| | | Long settle = order.getSettle(); |
| | | for (ManPakOut pakOut:pakOuts){ |
| | | if (pakOut.getStatus()==0 || pakOut.getStatus()==8){ |
| | | order.setSettle(settle); |
| | | break; |
| | | }else { |
| | | order.setSettle(4L); |
| | | } |
| | | } |
| | | } |
| | | orderService.updateSettle(order.getId(),order.getSettle(),(long)9527); |
| | | }catch (Exception e){ |
| | | return R.error("更新订单状态失败"); |
| | | } |
| | | return update? R.ok("更新成功") : R.error("更新失败"); |
| | | } |
| | | |
| | | @RequestMapping("/manPakOut/notIssued") |
| | | public R notIssued(){ |
| | | List<Order> orders = orderService.selectList(new EntityWrapper<Order>().eq("settle", 1L).or().eq("settle", 2L)); |
| | |
| | | } |
| | | return R.ok(orders1); |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | ManPakOutService bean = SpringUtils.getBean(ManPakOutService.class); |
| | | ManPakOut out = bean.selectOne(null); |
| | | System.out.println("JSON.toJSONString(out) = " + JSON.toJSONString(out)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/ManPakOut/print/auth") |
| | | @ManagerAuth(memo = "订单编码打印") |
| | | public R manPakOutPrint(@RequestParam(value = "param[]") String[] param) { |
| | | if(Cools.isEmpty(param)) { |
| | | return R.parse(CodeRes.EMPTY); |
| | | } |
| | | List<ManPakOut> res = new ArrayList<>(); |
| | | for (String orderNo : param){ |
| | | res = manPakOutService.selectList(new EntityWrapper<ManPakOut>().eq("doc_num", orderNo)); |
| | | } |
| | | return R.ok().add(res); |
| | | } |
| | | @RequestMapping(value = "/ManPakOut/code/auth") |
| | | // @ManagerAuth(memo = "物料编码条形码获取(type:1(条形码);2(二维码)") |
| | | public R manPakOutCodeBarcode(@RequestParam(defaultValue = "2") Integer type |
| | | , @RequestParam String param |
| | | , HttpServletResponse response) throws Exception { |
| | | AdminInterceptor.cors(response); |
| | | if (Cools.isEmpty(param)){ |
| | | return R.parse(BaseRes.EMPTY); |
| | | } |
| | | BufferedImage img; |
| | | if (type == 1) { |
| | | img = BarcodeUtils.encode(param); |
| | | } else { |
| | | img = QrCode.createImg(param); |
| | | } |
| | | if (!ImageIO.write(img, "jpg", response.getOutputStream())) { |
| | | throw new IOException("Could not write an image of format jpg"); |
| | | } |
| | | response.getOutputStream().flush(); |
| | | response.getOutputStream().close(); |
| | | return R.ok(); |
| | | } |
| | | } |