| | |
| | | */ |
| | | void adjust(MobileAdjustParam param, Long userId, Long hostId); |
| | | |
| | | R WarehouseIn(String locNo, String barcode,Long hostId); |
| | | R WarehouseIn(String locNo, String barcode,Long hostId,Long userId); |
| | | |
| | | R WarehouseOut(CombParam combParam, Long hostId); |
| | | R WarehouseOut(CombParam combParam, Long hostId,Long userId); |
| | | R WarehouseOutV1(CombParam combParam, Long hostId,Long userId); |
| | | R WarehouseOutPickMergeV1(WarehouseOutPickMergeParam param, Long hostId,Long userId); |
| | | R WarehouseOutMergeBoardMany(WarehouseOutMergeBoardManyParam param, Long hostId,Long userId); |
| | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R WarehouseIn(String locNo, String barcode,Long hostId) { |
| | | public R WarehouseIn(String locNo, String barcode,Long hostId,Long userId) { |
| | | //判断库位状态 |
| | | LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, locNo).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L)); |
| | | if (Cools.isEmpty(locMast)){ |
| | | return R.error("该库位不存在"); |
| | | } |
| | | if (!locMast.getLocSts().equals("O")){ |
| | | return R.error("该库位状态为:"+locMast.getLocSts()+",禁止入库"); |
| | | } |
| | | // if (!locMast.getLocSts().equals("O")){ |
| | | // return R.error("该库位状态为:"+locMast.getLocSts()+",禁止入库"); |
| | | // } |
| | | //查询组托数据 |
| | | List<WaitPakin> list = waitPakinService.list(new LambdaQueryWrapper<WaitPakin>().eq(WaitPakin::getZpallet, barcode).eq(WaitPakin::getHostId, hostId)); |
| | | if (Cools.isEmpty(list)){ |
| | | return R.error("未找到组托信息"); |
| | | } |
| | | Date now = new Date(); |
| | | |
| | | //插入库存数据 |
| | | for (WaitPakin waitPakin: list){ |
| | | Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>().eq(Mat::getMatnr, waitPakin.getMatnr()).eq(Mat::getHostId, hostId)); |
| | | LocDetl locDetl = new LocDetl(); |
| | | locDetl.sync(mat); |
| | | locDetl.setLocNo(locNo); |
| | | //处理库存信息 |
| | | AdjDetl adjDetl = new AdjDetl(); |
| | | Mat mat = matService.getOne(new LambdaQueryWrapper<Mat>() |
| | | .eq(Mat::getMatnr, waitPakin.getMatnr()).eq(Mat::getHostId, hostId)); |
| | | LocDetl locDetl1=locDetlService.getOne(new LambdaQueryWrapper<LocDetl>() |
| | | .eq(LocDetl::getMatnr,waitPakin.getMatnr()) |
| | | .eq(LocDetl::getHostId,hostId) |
| | | .eq(LocDetl::getLocNo,locNo)); |
| | | double i=0.0; |
| | | if(!Cools.isEmpty(locDetl1)){ |
| | | i=locDetl1.getAnfme(); |
| | | locDetl1.setAnfme(locDetl1.getAnfme()+waitPakin.getAnfme()); |
| | | locDetlService.updateById(locDetl1); |
| | | adjDetl.setMatnr(locDetl1.getMatnr()); |
| | | adjDetl.setBatch(locDetl1.getBatch()); |
| | | adjDetl.setAdjQty(locDetl1.getAnfme()); |
| | | }else{ |
| | | LocDetl locDetl = new LocDetl(); |
| | | locDetl.sync(mat); |
| | | locDetl.setLocNo(locNo); |
| | | // locDetl.setBarcode(waitPakin.getBarcode()); |
| | | locDetl.setZpallet(waitPakin.getZpallet()); |
| | | locDetl.setAnfme(waitPakin.getAnfme()); |
| | | locDetl.setBatch(waitPakin.getBatch()); |
| | | locDetl.setZpallet(waitPakin.getZpallet()); |
| | | locDetl.setAnfme(waitPakin.getAnfme()); |
| | | locDetl.setBatch(waitPakin.getBatch()); |
| | | // locDetl.setWeight(waitPakin.getWeight()); |
| | | locDetl.setHostId(hostId); |
| | | locDetl.setModiTime(now); |
| | | locDetl.setAppeTime(now); |
| | | locDetlService.save(locDetl); |
| | | locDetl.setHostId(hostId); |
| | | locDetl.setModiTime(now); |
| | | locDetl.setAppeTime(now); |
| | | locDetlService.save(locDetl); |
| | | adjDetl.setMatnr(locDetl.getMatnr()); |
| | | adjDetl.setBatch(locDetl.getBatch()); |
| | | adjDetl.setAdjQty(locDetl.getAnfme()); |
| | | } |
| | | |
| | | try { |
| | | |
| | | adjDetl.setLocNo(locNo); |
| | | adjDetl.setOriQty(i); |
| | | adjDetl.setMemo("平庫上架"); |
| | | adjDetl.setModiUser(userId); |
| | | adjDetl.setAppeUser(userId); |
| | | adjDetl.setAppeTime(new Date()); |
| | | adjDetl.setModiTime(new Date()); |
| | | adjDetl.setOrderNo(waitPakin.getOrderNo()); |
| | | if (!adjDetlService.save(adjDetl)) { |
| | | throw new CoolException("保存库存调整记录失败"); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | throw new CoolException("更新库存数据出错" + e.getMessage()); |
| | | } |
| | | |
| | | //是否属于订单数据 |
| | | if (!Cools.isEmpty(waitPakin.getOrderNo())){ |
| | | Order order = orderService.selectByNo(waitPakin.getOrderNo(), hostId); |
| | |
| | | |
| | | @Override |
| | | @Transactional |
| | | public R WarehouseOut(CombParam combParam, Long hostId) { |
| | | public R WarehouseOut(CombParam combParam, Long hostId , Long userId) { |
| | | //判断库位状态 |
| | | LocMast locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, combParam.getLocno()).eq(LocMast::getHostId,hostId).eq(LocMast::getWhsType,1L)); |
| | | if (Cools.isEmpty(locMast)){ |
| | |
| | | orderService.checkComplete(combParam.getOrderNo(), hostId); |
| | | } |
| | | try { |
| | | double i=0.0; |
| | | double j=locDetl.getAnfme(); |
| | | //处理库存信息 |
| | | if (combMat.getAnfme().equals(locDetl.getAnfme())){ |
| | | //库存相等删除数据 |
| | |
| | | } |
| | | }else { |
| | | BigDecimal subtract = BigDecimal.valueOf(locDetl.getAnfme()).subtract(BigDecimal.valueOf(combMat.getAnfme())); |
| | | i=subtract.byteValue(); |
| | | locDetl.setAnfme(subtract.doubleValue()); |
| | | locDetlService.updateById(locDetl); |
| | | } |
| | | |
| | | try { |
| | | //处理库存信息 |
| | | AdjDetl adjDetl = new AdjDetl(); |
| | | adjDetl.setLocNo(locDetl.getLocNo()); |
| | | adjDetl.setMatnr(locDetl.getMatnr()); |
| | | adjDetl.setBatch(locDetl.getBatch()); |
| | | adjDetl.setOriQty(j); |
| | | adjDetl.setAdjQty(i); |
| | | adjDetl.setMemo("平庫下架"); |
| | | adjDetl.setModiUser(userId); |
| | | adjDetl.setAppeUser(userId); |
| | | adjDetl.setAppeTime(new Date()); |
| | | adjDetl.setModiTime(new Date()); |
| | | adjDetl.setOrderNo(combParam.getOrderNo()); |
| | | adjDetl.setHostId(hostId); |
| | | if (!adjDetlService.save(adjDetl)) { |
| | | throw new CoolException("保存库存调整记录失败"); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | throw new CoolException("更新库存数据出错" + e.getMessage()); |
| | | } |
| | | }catch (Exception e){ |
| | | throw new CoolException("更新库存数据出错"+e.getMessage()); |
| | |
| | | adjDetl.setMatnr(locDetl.getMatnr()); |
| | | adjDetl.setBatch(locDetl.getBatch()); |
| | | adjDetl.setOriQty(locDetl.getAnfme()); |
| | | adjDetl.setMemo("WarehouseOutV1-pick"); |
| | | adjDetl.setMemo("并板途中拣料"); |
| | | adjDetl.setModiUser(userId); |
| | | adjDetl.setAppeUser(userId); |
| | | adjDetl.setAppeTime(new Date()); |
| | |
| | | adjDetl.setBatch(locDetl.getBatch()); |
| | | adjDetl.setOriQty(originAnfme); |
| | | adjDetl.setAdjQty(locDetl.getAnfme()); |
| | | adjDetl.setMemo("WarehouseOutV1-pick"); |
| | | adjDetl.setMemo("拣料途中并板"); |
| | | adjDetl.setModiUser(userId); |
| | | adjDetl.setAppeUser(userId); |
| | | adjDetl.setAppeTime(new Date()); |
| | |
| | | </if> |
| | | and b.host_id = #{hostId} |
| | | and b.loc_sts = 'F' |
| | | and b.row1 in (1,2,3,4) |
| | | order by b.row1 |
| | | </select> |
| | | |
| | |
| | | where 1=1 |
| | | and b.loc_sts = 'F' |
| | | and b.host_id = #{map.hostId} |
| | | and b.row1 in (1,2,3,4) |
| | | <include refid="stockOutCondition"></include> |
| | | </select> |
| | | |
| | |
| | | |
| | | @RequestMapping(value = "/stock/out/list/auth") |
| | | @ManagerAuth |
| | | public R stockOutList(@RequestParam(defaultValue = "1")Integer curr, |
| | | @RequestParam(defaultValue = "10")Integer limit, |
| | | @RequestParam Map<String, Object> param){ |
| | | if (!Cools.isEmpty(param.get("modi_time"))){ |
| | | String val = String.valueOf(param.get("modi_time")); |
| | | if (val.contains(RANGE_TIME_LINK)) { |
| | | String[] dates = val.split(RANGE_TIME_LINK); |
| | | param.put("startTime", DateUtils.convert(dates[0])); |
| | | param.put("endTime", DateUtils.convert(dates[1])); |
| | | param.remove("modi_time"); |
| | | public R stockOutList(@RequestParam(defaultValue = "1") Integer curr, |
| | | @RequestParam(defaultValue = "10") Integer limit, |
| | | @RequestParam(required = false)String orderByField, |
| | | @RequestParam(required = false)String orderByType, |
| | | @RequestParam(required = false) String condition, |
| | | @RequestParam(required = false) String timeRange, |
| | | @RequestParam Map<String, Object> param) { |
| | | QueryWrapper<LocDetl> wrapper = new QueryWrapper<>(); |
| | | |
| | | if (!Cools.isEmpty(param.get("decrees"))) { |
| | | ArrayList<String> mats = new ArrayList<>(); |
| | | List<Mat> decrees = matService.list(new LambdaQueryWrapper<Mat>().like(Mat::getDecrees, param.get("decrees"))); |
| | | if (decrees.isEmpty()) { |
| | | mats.add("-1"); |
| | | }else { |
| | | for (Mat mat : decrees) { |
| | | mats.add(mat.getMatnr()); |
| | | } |
| | | } |
| | | wrapper.in("matnr", mats); |
| | | param.remove("decrees"); |
| | | } |
| | | param.put("hostId", getHostId()); |
| | | return R.ok(locDetlService.getStockOut(curr, limit, param)); |
| | | |
| | | convert(param,wrapper); |
| | | wrapper.eq("host_id", getHostId()); |
| | | // if (!Cools.isEmpty(condition)) { |
| | | // wrapper.like(LocDetl::getLocNo, condition); |
| | | // } |
| | | if (!Cools.isEmpty(timeRange)) { |
| | | String[] range = timeRange.split(RANGE_TIME_LINK); |
| | | wrapper.ge("appe_time", DateUtils.convert(range[0])); |
| | | wrapper.le("appe_time", DateUtils.convert(range[1])); |
| | | } |
| | | if (!Cools.isEmpty(param.get("locNo"))) { |
| | | wrapper.like("loc_no", param.get("locNo")); |
| | | } |
| | | |
| | | if (!Cools.isEmpty(param.get("zpallet"))) { |
| | | wrapper.like("zpallet", param.get("zpallet")); |
| | | } |
| | | |
| | | if (!Cools.isEmpty(orderByField)){ |
| | | wrapper.orderBy(true, "asc".equals(orderByType), humpToLine(orderByField)); |
| | | } |
| | | |
| | | param.remove("locNo"); |
| | | param.remove("owner"); |
| | | param.remove("matnr"); |
| | | allLike(LocDetl.class, param.keySet(), wrapper, condition); |
| | | return R.ok(locDetlService.page(new Page<>(curr, limit), wrapper)); |
| | | } |
| | | |
| | | @RequestMapping(value = "/locDetl/statis/export") |
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.zy.asrs.common.utils.TreeUtils; |
| | | import com.zy.asrs.common.wms.entity.LocDetl; |
| | | import com.zy.asrs.common.wms.entity.LocMast; |
| | | import com.zy.asrs.common.wms.entity.Mat; |
| | | import com.zy.asrs.common.wms.entity.OrderDetl; |
| | | import com.zy.asrs.common.wms.entity.*; |
| | | import com.zy.asrs.common.wms.service.LocDetlService; |
| | | import com.zy.asrs.common.wms.service.LocMastService; |
| | | import com.zy.asrs.common.wms.service.MatService; |
| | | import com.zy.asrs.common.wms.service.WrkMastService; |
| | | import com.zy.asrs.framework.annotations.ManagerAuth; |
| | | import com.zy.asrs.framework.common.Cools; |
| | | import com.zy.asrs.framework.common.R; |
| | |
| | | private LocDetlService locDetlService; |
| | | @Autowired |
| | | private LocMastService locMastService; |
| | | @Autowired |
| | | private WrkMastService wrkMastService; |
| | | |
| | | @RequestMapping(value = "/mat/{id}/auth") |
| | | @ManagerAuth |
| | |
| | | return R.ok(locDetls); |
| | | } |
| | | |
| | | @GetMapping("/mat/synchronous") |
| | | @ManagerAuth |
| | | public R synchronous(){ |
| | | int wrkConut=wrkMastService.count(new LambdaQueryWrapper<WrkMast>()); |
| | | if(wrkConut>0){ |
| | | return R.error("有工作中的任務,禁止同步库存信息"); |
| | | } |
| | | List<Mat> mats=matService.list(); |
| | | for (Mat mat:mats |
| | | ) { |
| | | List<LocDetl>locDetls=locDetlService.list(new LambdaQueryWrapper<LocDetl>() |
| | | .eq(LocDetl::getMatnr,mat.getMatnr())); |
| | | for (LocDetl locDetl:locDetls |
| | | ) { |
| | | locDetl.setMaktx(mat.getMaktx()); |
| | | locDetl.setSpecs(mat.getSpecs()); |
| | | locDetl.setModel(mat.getModel()); |
| | | locDetl.setSku(mat.getSku()); |
| | | locDetl.setItemNum(mat.getImgNum());//图号 |
| | | locDetl.setWeight(Double.parseDouble(mat.getWeight())); |
| | | locDetl.setLength(Double.parseDouble(mat.getLength())); |
| | | locDetlService.updateById(locDetl); |
| | | } |
| | | } |
| | | return R.ok(); |
| | | } |
| | | } |
| | |
| | | @Autowired |
| | | private MatService matService; |
| | | |
| | | |
| | | /** |
| | | * 平庫上架 |
| | | * @param locNo |
| | | * @param barcode |
| | | * @return |
| | | */ |
| | | @RequestMapping("/pda/WarehouseIn") |
| | | @ManagerAuth |
| | | public R WarehouseIn(@RequestParam String locNo, @RequestParam String barcode) { |
| | | return mobileService.WarehouseIn(locNo, barcode, getHostId()); |
| | | return mobileService.WarehouseIn(locNo, barcode, getHostId(), getUserId()); |
| | | } |
| | | |
| | | /** |
| | | * 平庫下架 |
| | | * @param combParam |
| | | * @return |
| | | */ |
| | | @RequestMapping("/pda/WarehouseOut") |
| | | @ManagerAuth |
| | | public R WarehouseOut(@RequestBody CombParam combParam) { |
| | | return mobileService.WarehouseOut(combParam, getHostId()); |
| | | return mobileService.WarehouseOut(combParam, getHostId(), getUserId()); |
| | | } |
| | | |
| | | @RequestMapping("/outBound/mat/list") |
| | |
| | | return R.ok().add(maps); |
| | | } |
| | | |
| | | @RequestMapping("/outBound/mat/list") |
| | | @RequestMapping("/outBound/order/list") |
| | | @ManagerAuth(memo = "获取出库订单") |
| | | public R outBound(@RequestParam(required = false) String matnr,@RequestParam(required = false) String orderNo){ |
| | | List<DocType> docTypes = docTypeService.list(new LambdaQueryWrapper<DocType>().like(DocType::getPakout, 1)); |
| | |
| | | throw new CoolException("保存工作档明细失败"); |
| | | } |
| | | |
| | | Order order = orderService.selectByNo(matParam.getOrderNo(), getHostId()); |
| | | if (order == null) { |
| | | throw new CoolException("Order is not exits"); |
| | | } |
| | | //更新订单工作数量 |
| | | orderDetlService.increaseWorkQtyByOrderNo(matParam.getOrderNo(), matParam.getMatnr(), matParam.getBatch(), matParam.getUseCount(), getHostId()); |
| | | orderService.updateSettle(order.getId(), 2L, getUserId(), getHostId()); |
| | | } |
| | | // 修改库位状态: F.在库 ====>>> R.出库预约/P.拣料/盘点/并板出库中 |
| | | locMast = locMastService.getOne(new LambdaQueryWrapper<LocMast>().eq(LocMast::getLocNo, param.getLocNo()).eq(LocMast::getHostId, getHostId())); |
| | |
| | | , {field: 'brand', align: 'center', title: '品牌', hide: true} |
| | | , {field: 'unit', align: 'center', title: '单位', hide: true} |
| | | , {field: 'price', align: 'center', title: '单价', hide: true} |
| | | , {field: 'sku', align: 'center', title: 'sku', hide: true} |
| | | , {field: 'sku', align: 'center', title: '俗称', hide: false} |
| | | , {field: 'units', align: 'center', title: '单位量', hide: true} |
| | | , {field: 'barcode', align: 'center', title: '托盘码', hide: true} |
| | | , {field: 'origin', align: 'center', title: '产地', hide: true} |
| | |
| | | , {field: 'brand', align: 'center', title: '品牌', hide: true} |
| | | , {field: 'unit', align: 'center', title: '单位', hide: true} |
| | | , {field: 'price', align: 'center', title: '单价', hide: true} |
| | | , {field: 'sku', align: 'center', title: 'sku', hide: true} |
| | | , {field: 'sku', align: 'center', title: '俗称', hide: false} |
| | | , {field: 'units', align: 'center', title: '单位量', hide: true} |
| | | , {field: 'barcode', align: 'center', title: '托盘码', hide: true} |
| | | , {field: 'origin', align: 'center', title: '产地', hide: true} |
| | |
| | | tableReload(false); |
| | | }); |
| | | |
| | | // 同步庫存 |
| | | form.on('submit(synchronous)', function (data) { |
| | | layer.confirm('确认同步庫存?', function(){ |
| | | http.get(baseUrl+"/hand/control/wrkMast", {workNo: data.wrkNo, type:1}, function (res) { |
| | | $(".layui-laypage-btn")[0].click(); |
| | | layer.msg(data.wrkNo + res.msg); |
| | | }) |
| | | layer.closeAll(); |
| | | |
| | | }); |
| | | }); |
| | | |
| | | // 时间选择器 |
| | | layDate.render({ |
| | | elem: '#createTime\\$', |
| | |
| | | } |
| | | }); |
| | | |
| | | $.ajax({ |
| | | url: baseUrl + "/license/getLicenseDays", |
| | | headers: {'token': localStorage.getItem('token')}, |
| | | method: 'POST', |
| | | success: function (res) { |
| | | if (res.code == 200) { |
| | | let days = res.data |
| | | if (days <= 30) { |
| | | $("#licenseShow").show() |
| | | $("#licenseDays").html(days) |
| | | } |
| | | }else { |
| | | top.location.href = baseUrl + "/login"; |
| | | } |
| | | } |
| | | }); |
| | | // $.ajax({ |
| | | // url: baseUrl + "/license/getLicenseDays", |
| | | // headers: {'token': localStorage.getItem('token')}, |
| | | // method: 'POST', |
| | | // success: function (res) { |
| | | // if (res.code == 200) { |
| | | // let days = res.data |
| | | // if (days <= 30) { |
| | | // $("#licenseShow").show() |
| | | // $("#licenseDays").html(days) |
| | | // } |
| | | // }else { |
| | | // top.location.href = baseUrl + "/login"; |
| | | // } |
| | | // } |
| | | // }); |
| | | |
| | | // 默认加载主页 |
| | | index.loadHome({ |
| | |
| | | <button class="layui-btn icon-btn" lay-filter="reset" lay-submit> |
| | | <i class="layui-icon"></i>重置 |
| | | </button> |
| | | <button class="layui-btn icon-btn" lay-filter="synchronous" lay-submit> |
| | | <i class="layui-icon"></i>同步庫存 |
| | | </button> |
| | | </div> |
| | | </div> |
| | | <table class="layui-hide" id="mat" lay-filter="mat"></table> |
| | |
| | | <input name="height" placeholder="高度" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | <div class="layui-form-item"> |
| | | <label class="layui-form-label">俗称</label> |
| | | <div class="layui-input-block"> |
| | | <input name="sku" placeholder="俗称" class="layui-input"> |
| | | </div> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | |
| | | <input class="layui-input" type="text" name="owner" placeholder="货主" autocomplete="off"> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="layui-inline"> |
| | | <div class="layui-input-inline"> |
| | | <input class="layui-input" type="text" name="condition" placeholder="请输入" autocomplete="off"> |
| | | </div> |
| | | |
| | | </div> |
| | | <!-- 待添加 --> |
| | | <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block"> |
| | | <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">搜索</button> |