rev: 入库组盘

This commit is contained in:
2023-05-11 14:04:44 +08:00
parent eb7d4a2b40
commit 0115eab818
20 changed files with 807 additions and 87 deletions

View File

@@ -1,10 +1,22 @@
package org.nl.wms.masterdata_manage.controller.vehicle;
import io.swagger.annotations.ApiOperation;
import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* <p>
* 桶记录表 前端控制器
@@ -14,8 +26,17 @@ import org.springframework.web.bind.annotation.RestController;
* @since 2023-05-10
*/
@RestController
@RequestMapping("/mdPbBucketrecord")
@RequestMapping("/api/mdPbBucketrecord")
public class MdPbBucketrecordController {
@Autowired
private IMdPbBucketrecordService iMdPbBucketrecordService;
@GetMapping
@Log("查询桶记录表")
@ApiOperation("查询桶记录表")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
return new ResponseEntity<>(iMdPbBucketrecordService.queryAll(whereJson,page), HttpStatus.OK);
}
}

View File

@@ -1,8 +1,12 @@
package org.nl.wms.masterdata_manage.service.vehicle;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
import java.util.Map;
/**
* <p>
* 桶记录表 服务类
@@ -13,4 +17,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IMdPbBucketrecordService extends IService<MdPbBucketrecord> {
/**
* 查询桶记录表
* @param whereJson /
* @param page /
* @return Object /
*/
Object queryAll(Map whereJson, PageQuery page);
}

View File

@@ -3,6 +3,9 @@ package org.nl.wms.masterdata_manage.service.vehicle.dao.mapper;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.List;
import java.util.Map;
/**
* <p>
* 桶记录表 Mapper 接口
@@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface MdPbBucketrecordMapper extends BaseMapper<MdPbBucketrecord> {
List<Map> queryAll(Map<String,Object> map);
}

View File

@@ -1,5 +1,29 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.masterdata_manage.service.vehicle.dao.mapper.MdPbBucketrecordMapper">
<select id="queryAll" resultType="java.util.Map">
SELECT
re.*,
ma.material_name,
ma.material_code
FROM
MD_PB_BucketRecord re
LEFT JOIN md_me_materialbase ma ON ma.material_id = re.material_id
WHERE
1=1
<if test="material_id != null and material_id != ''">
and ma.material_id = #{material_id}
</if>
<if test="storagevehicle_type != null and storagevehicle_type != ''">
and re.storagevehicle_type = #{storagevehicle_type}
</if>
<if test="status != null and status != ''">
and re.status = #{status}
</if>
<if test="bucketunique != null and bucketunique != ''">
and ( re.bucketunique like '{bucketunique}%$' )
</if>
</select>
</mapper>

View File

@@ -1,11 +1,19 @@
package org.nl.wms.masterdata_manage.service.vehicle.impl;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import org.nl.wms.masterdata_manage.service.vehicle.dao.mapper.MdPbBucketrecordMapper;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* <p>
* 桶记录表 服务实现类
@@ -17,4 +25,12 @@ import org.springframework.stereotype.Service;
@Service
public class MdPbBucketrecordServiceImpl extends ServiceImpl<MdPbBucketrecordMapper, MdPbBucketrecord> implements IMdPbBucketrecordService {
@Override
public Object queryAll(Map whereJson, PageQuery pageQuery) {
Page<Object> page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize());
TableDataInfo build = TableDataInfo.build(baseMapper.queryAll(whereJson));
build.setTotalElements(page.getTotal());
return build;
}
}

View File

@@ -74,4 +74,20 @@ public class IStivtlostorivnCpInController {
return new ResponseEntity<>(iStIvtIostorinvCpService.getIosInvDis(whereJson),HttpStatus.OK);
}
@PostMapping("/vehicleCheck")
@Log("校验载具是否存在")
@ApiOperation("校验载具是否存在")
public ResponseEntity<Object> vehicleCheck(@RequestBody JSONObject whereJson){
iStIvtIostorinvCpService.vehicleCheck(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/confirmvehicle")
@Log("组盘")
@ApiOperation("组盘")
public ResponseEntity<Object> confirmvehicle(@RequestBody JSONObject whereJson){
iStIvtIostorinvCpService.confirmvehicle(whereJson);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -23,7 +23,7 @@ public interface IStIvtIostorinvCpService extends IService<StIvtIostorinvCp> {
* @param query,page /
* @return JSONObject
*/
JSONObject pageQuery(IostorInvQuery query, PageQuery page);
Object pageQuery(IostorInvQuery query, PageQuery page);
/**
* 创建
@@ -39,15 +39,38 @@ public interface IStIvtIostorinvCpService extends IService<StIvtIostorinvCp> {
/**
* 查询出入库单明细
* @param whereJson /
* @param whereJson
* {
* "bill_code": 单据号
* "iostorinv_id": 主表标识
* }
* @return List
* {
* "明细表所有字段"
* "material_code": 物料编码
* "material_name": 物料名称
* "material_spec": 物料批次
* }
*/
List getIosInvDtl(JSONObject whereJson);
/**
* 查询出入库单分配明细
* @param whereJson /
* @param whereJson
* {
* "iostorinvdtl_id": 明细表标识
* "iostorinv_id": 主表标识
* }
*
* @return List
* {
* "分配表所有字段"
* "bucketunique":箱号
* "qty": 数量
* "material_code": 物料编码
* "material_name": 物料名称
* "material_spec": 物料批次
* }
*/
List getIosInvDis(JSONObject whereJson);
@@ -59,16 +82,30 @@ public interface IStIvtIostorinvCpService extends IService<StIvtIostorinvCp> {
/**
* 组盘
* @param whereJson /
* @param whereJson
* {
* "dtl_row":{明细对象..}
* "vehicle_code": 托盘号
* "tableMater": [分配明细..]
* }
*/
void confirmvehicle(JSONObject whereJson);
/**
* 组盘
* @param ids /
* 删除
* @param ids
* {
* 主表id..
* }
*/
void delete(Long[] ids);
/**
* 校验载具是否存在
* @param whereJson
* {
* "storagevehicle_code" : 载具号
* }
*/
void vehicleCheck(JSONObject whereJson);
}

View File

@@ -1,5 +1,6 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp;
@@ -24,4 +25,6 @@ public interface IStIvtIostorinvdisCpService extends IService<StIvtIostorinvdisC
void batchInsert(Collection<StIvtIostorinvdisCp> list);
List<Map> queryInvDisByInvdtl(Map<String, Object> map);
List<StIvtIostorinvdisCp> onductDataDis(List<JSONObject> list, JSONObject json);
}

View File

@@ -2,8 +2,10 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -17,5 +19,13 @@ import java.util.Map;
*/
public interface IStIvtIostorinvdisdtlCpService extends IService<StIvtIostorinvdisdtlCp> {
/**
* 批量insert
* @param list
*/
void batchInsert(Collection<StIvtIostorinvdisdtlCp> list);
List<JSONObject> queryInvDisByInvdtl(Map<String, Object> map);
List<StIvtIostorinvdisdtlCp> onductDataDisDtl(List<JSONObject> list,JSONObject json);
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -16,6 +17,7 @@ import java.math.BigDecimal;
* @since 2023-05-04
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("st_ivt_iostorinvdis_cp")
public class StIvtIostorinvdisCp implements Serializable {
@@ -100,6 +102,7 @@ public class StIvtIostorinvdisCp implements Serializable {
/**
* 执行状态
*/
@Deprecated
private String work_status;
/**

View File

@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.dao;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.math.BigDecimal;
@@ -16,6 +17,7 @@ import java.math.BigDecimal;
* @since 2023-05-04
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@TableName("st_ivt_iostorinvdisdtl_cp")
public class StIvtIostorinvdisdtlCp implements Serializable {

View File

@@ -2,8 +2,11 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -17,6 +20,8 @@ import java.util.Map;
*/
public interface StIvtIostorinvdisdtlCpMapper extends BaseMapper<StIvtIostorinvdisdtlCp> {
Integer batchSave(@Param("entitys") Collection<StIvtIostorinvdisdtlCp> entitys);
List<JSONObject> queryInvDtlDisByInv(Map<String,Object> map);
}

View File

@@ -19,15 +19,15 @@
quality_scode,
ivt_level,
is_active,
work_statue,
work_status,
task_id,
storagevehicle_id,
storagevehicle_code,
storagevehicle_type,
is_issued,
qty_unit_id,
qty_unit_nam,
plan_qt,
qty_unit_name,
plan_qty,
real_qty,
point_id,
point_code,
@@ -50,15 +50,15 @@
#{item.quality_scode},
#{item.ivt_level},
#{item.is_active},
#{item.work_statue},
#{item.work_status},
#{item.task_id},
#{item.storagevehicle_id},
#{item.storagevehicle_code},
#{item.storagevehicle_type},
#{item.is_issued},
#{item.qty_unit_id},
#{item.qty_unit_nam},
#{item.plan_qt},
#{item.qty_unit_name},
#{item.plan_qty},
#{item.real_qty},
#{item.point_id},
#{item.point_code},

View File

@@ -1,6 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdisdtlCpMapper">
<insert id="batchSave" parameterType="org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp">
insert into ST_IVT_IOStorInvDisDtl_CP(
iostorinvdisdtl_id,
iostorinvdis_id,
iostorinv_id,
iostorinvdtl_id,
seq_no,
sect_id,
sect_code,
sect_name,
struct_id,
struct_code,
struct_name,
material_id,
pcsn,
quality_scode,
ivt_level,
is_active,
storagevehicle_id,
storagevehicle_code,
storagevehicle_type,
bucketunique,
qty_unit_id,
qty_unit_name,
real_qty)
values
<foreach item="item" collection="entitys" separator=",">
(
#{item.iostorinvdisdtl_id},
#{item.iostorinvdis_id},
#{item.iostorinv_id},
#{item.iostorinvdtl_id},
#{item.seq_no},
#{item.sect_id},
#{item.sect_code},
#{item.sect_name},
#{item.struct_id},
#{item.struct_code},
#{item.struct_name},
#{item.material_id},
#{item.pcsn},
#{item.quality_scode},
#{item.ivt_level},
#{item.is_active},
#{item.storagevehicle_id},
#{item.storagevehicle_code},
#{item.storagevehicle_type},
#{item.bucketunique},
#{item.qty_unit_id},
#{item.qty_unit_name},
#{item.real_qty})
</foreach>
</insert>
<select id="queryInvDtlDisByInv" resultType="java.util.Map">
SELECT
disdtl.*,

View File

@@ -1,5 +1,6 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -8,12 +9,20 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.jsonwebtoken.lang.Assert;
import org.jetbrains.annotations.NotNull;
import org.nl.common.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
import org.nl.wms.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.basedata.service.storage.IStIvtBsrealstorattrService;
import org.nl.wms.storage_manage.basedata.service.storage.dao.StIvtBsrealstorattr;
@@ -23,7 +32,7 @@ import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinv
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvCpMapper;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery;
import org.springframework.beans.factory.annotation.Autowired;
@@ -46,33 +55,35 @@ import java.util.stream.Collectors;
public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMapper, StIvtIostorinvCp> implements IStIvtIostorinvCpService {
@Autowired
protected IStIvtIostorinvdtlCpService iostorinvdtlCpService;
protected IStIvtIostorinvdtlCpService iostorinvdtlCpService; // 成品出入库明细表服务
@Autowired
protected IStIvtIostorinvdisCpService iostorinvdisCpService;
protected IStIvtIostorinvdisCpService iostorinvdisCpService; // 成品出入库分配表服务
@Autowired
protected IStIvtIostorinvdisdtlCpService iStIvtIostorinvdisdtlCpService;
protected IStIvtIostorinvdisdtlCpService iStIvtIostorinvdisdtlCpService; // 成品出入库分配明细表服务
@Autowired
protected IStIvtBsrealstorattrService stIvtBsrealstorattrService;
protected IStIvtBsrealstorattrService stIvtBsrealstorattrService; // 实物属性表表服务
@Autowired
protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息表服务
@Autowired
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
@Override
public JSONObject pageQuery(IostorInvQuery query, PageQuery page) {
public Object pageQuery(IostorInvQuery query, PageQuery page) {
// 查询条件
query.setIo_type(IOSEnum.IO_TYPE.code("入库"));
page.setSort("bill_code,ASC");
// 分页查询
Page<StIvtIostorinvCp> pageQuery = this.page(page.build(), query.build());
TableDataInfo<StIvtIostorinvCp> build = TableDataInfo.build(pageQuery);
// 组织前端返回数据
JSONObject json = new JSONObject();
json.put("content", pageQuery.getRecords());
json.put("totalElements", pageQuery.getTotal());
return json;
return build;
}
@Override
@@ -140,27 +151,116 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
@Override
@Transactional(rollbackFor = Exception.class)
public void confirmvehicle(JSONObject whereJson) {
WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo");
WQLObject vehicleMaterialTab = WQLObject.getWQLObject("md_pb_storagevehicleext");
WQLObject disTab = WQLObject.getWQLObject("st_ivt_iostorinvdis");
String storagevehicle_code = whereJson.getString("storagevehicle_code");
// 校验载具是否存在
JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + storagevehicle_code + "' and is_delete = '0' and is_used = '1'").uniqueResult(0);
if (ObjectUtil.isEmpty(jsonVehicle)) throw new BadRequestException("载具不存在");
JSONArray vehicleMaterial = vehicleMaterialTab.query("storagevehicle_code = '" + storagevehicle_code + "' and material_id IS not NULL ").getResultJSONArray(0);
if (vehicleMaterial.size()>0){
throw new BadRequestException("载具已被占用");
/*
1.插入分配明细表
2.插入分配表
3.更新明细表
4.更新扩展属性表
5.更新箱记录表 (有箱号才更新)
*/
JSONObject jsonDtl = whereJson.getJSONObject("dtl_row");
JSONArray tableDisDtl = whereJson.getJSONArray("tableMater");
/*
处理有箱号分配明细: 要插入分配明细表
*/
List<JSONObject> disDtlList = tableDisDtl
.stream()
.map(row -> (JSONObject) row)
.filter(row -> ObjectUtil.isNotEmpty(row.getString("bucketunique")))
.collect(Collectors.toList());
// 1.处理分配明细数据
JSONObject param = new JSONObject();
param.put("iostorinv_id",jsonDtl.getString("iostorinv_id"));
param.put("iostorinvdtl_id",jsonDtl.getString("iostorinvdtl_id"));
param.put("iostorinvdis_id",org.nl.common.utils.IdUtil.getStringId());
if (ObjectUtil.isNotEmpty(disDtlList)) {
// 2.调用分配明细方法处理
List<StIvtIostorinvdisdtlCp> disDtlDaoListAll = iStIvtIostorinvdisdtlCpService.onductDataDisDtl(disDtlList, param);
// 3.根据托盘分组
Map<String, List<StIvtIostorinvdisdtlCp>> collect = disDtlDaoListAll
.stream()
.collect(Collectors.groupingBy(StIvtIostorinvdisdtlCp::getStoragevehicle_code));
for (List<StIvtIostorinvdisdtlCp> disDtlDaoList : collect.values()) {
// 3.调用服务插入分配明细
iStIvtIostorinvdisdtlCpService.batchInsert(disDtlDaoList);
// 4.插入分配
StIvtIostorinvdisdtlCp disDtlDao = disDtlDaoList.get(0);
// 计算合计
BigDecimal qty = disDtlDaoList
.stream()
.map(StIvtIostorinvdisdtlCp::getReal_qty)
.reduce(BigDecimal.ZERO, BigDecimal::add);
// 插入分配明细
StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp()
.setIostorinvdis_id(IdUtil.getStringId())
.setIostorinv_id(param.getString("iostorinv_id"))
.setIostorinvdtl_id(param.getString("iostorinvdtl_id"))
.setSeq_no(1)
.setMaterial_id(disDtlDao.getMaterial_id())
.setPcsn(disDtlDao.getPcsn())
.setQuality_scode(disDtlDao.getQuality_scode())
.setIvt_level(disDtlDao.getIvt_level())
.setIs_active(true)
.setIs_issued(false)
.setWork_status("00") //TODO 暂时写死
.setStoragevehicle_id(disDtlDao.getStoragevehicle_id())
.setStoragevehicle_code(disDtlDao.getStoragevehicle_code())
.setStoragevehicle_type(disDtlDao.getStoragevehicle_type())
.setQty_unit_id(disDtlDao.getQty_unit_id())
.setQty_unit_name(disDtlDao.getQty_unit_name())
.setPlan_qty(qty)
.setReal_qty(qty);
iostorinvdisCpService.save(disDao);
// 5.回显分配明细表iostorinvdis_id标识
iStIvtIostorinvdisdtlCpService.update(
new StIvtIostorinvdisdtlCp().setIostorinvdis_id(disDao.getIostorinvdis_id()),
new QueryWrapper<StIvtIostorinvdisdtlCp>()
.eq("iostorinvdis_id", param.getString("iostorinvdis_id"))
.eq("storagevehicle_code", disDao.getStoragevehicle_code())
);
// 6.更新载具扩展属性表
MdPbStoragevehicleext vehicleDao = new MdPbStoragevehicleext();
vehicleDao.setMaterial_id(disDtlDao.getMaterial_id());
vehicleDao.setUpdate_id(SecurityUtils.getCurrentUserId());
vehicleDao.setUpdate_name(SecurityUtils.getCurrentNickName());
vehicleDao.setUpdate_time(new Date());
iMdPbStoragevehicleextService.update(
vehicleDao,new QueryWrapper<MdPbStoragevehicleext>().eq("storagevehicle_code", disDtlDao.getStoragevehicle_code())
);
}
}
// 更新分配明细载具号
JSONObject jsonDis = disTab.query("iostorinvdis_id = '" + whereJson.getString("iostorinvdis_id") + "'").uniqueResult(0);
// 校验此明细是否已经分配
if (ObjectUtil.isNotEmpty(jsonDis.getString("struct_id"))) {
throw new BadRequestException("此明细已分配不可组盘!");
/*
处理无箱号分配明细: 只插入分配表
*/
List<JSONObject> unDisDtlList = tableDisDtl
.stream()
.map(row -> (JSONObject) row)
.filter(row -> ObjectUtil.isEmpty(row.getString("bucketunique")))
.collect(Collectors.toList());
if (ObjectUtil.isNotEmpty(unDisDtlList)) {
// 1.调用分配处理方法
List<StIvtIostorinvdisCp> disDaoListAll = iostorinvdisCpService.onductDataDis(unDisDtlList, param);
// 2.批量插入
iostorinvdisCpService.batchInsert(disDaoListAll);
}
jsonDis.put("storagevehicle_id", jsonVehicle.getString("storagevehicle_id"));
jsonDis.put("storagevehicle_code", jsonVehicle.getString("storagevehicle_code"));
disTab.update(jsonDis);
}
@Override
@@ -174,6 +274,32 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
}
}
@Override
public void vehicleCheck(JSONObject whereJson) {
// 1.校验载具是否存在
MdPbStoragevehicleinfo daoVehicle = iMdPbStoragevehicleinfoService.getOne(
new QueryWrapper<MdPbStoragevehicleinfo>()
.eq("storagevehicle_code", whereJson.getString("storagevehicle_code"))
.eq("is_used", true)
);
if (ObjectUtil.isEmpty(daoVehicle)) throw new BadRequestException("此载具不存在或未启用");
// 2.校验载具是否已组盘
MdPbStoragevehicleext daoVehicleExt = iMdPbStoragevehicleextService.getOne(
new QueryWrapper<MdPbStoragevehicleext>()
.eq("storagevehicle_code", whereJson.getString("storagevehicle_code"))
);
if (ObjectUtil.isEmpty(daoVehicleExt)) {
// throw new BadRequestException("此载具扩展属性不存在,请维护!");
} else {
if (ObjectUtil.isNotEmpty(daoVehicleExt.getMaterial_id()))
throw new BadRequestException("此载具已组盘!");
}
}
@NotNull
private StIvtIostorinvCp packageMstForm(StIvtIostorinvCp stIvtIostorinvCp,JSONObject whereJson,Boolean isUpdate) {
JSONArray rows = whereJson.getJSONArray("tableData");
@@ -216,4 +342,5 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
return stIvtIostorinvCp;
}
}

View File

@@ -1,15 +1,26 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService;
import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdisCpMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.*;
/**
* <p>
@@ -22,6 +33,18 @@ import java.util.Map;
@Service
public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdisCpMapper, StIvtIostorinvdisCp> implements IStIvtIostorinvdisCpService {
@Autowired
protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息表服务
@Autowired
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
@Autowired
protected IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料信息表服务
@Autowired
protected IMdPbMeasureunitService iMdPbMeasureunitService; // 计量单位表服务
@Override
public void batchInsert(Collection<StIvtIostorinvdisCp> list) {
if (!CollectionUtils.isEmpty(list)){
@@ -33,4 +56,61 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl<StIvtIostorinvdi
public List queryInvDisByInvdtl(Map<String, Object> map) {
return baseMapper.queryInvDisByInvdtl(map);
}
@Override
public List<StIvtIostorinvdisCp> onductDataDis(List<JSONObject> list, JSONObject json) {
List<StIvtIostorinvdisCp> result = new ArrayList<>();
list.forEach(item -> {
// 获取载具信息
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
new QueryWrapper<MdPbStoragevehicleinfo>()
.eq("storagevehicle_code", item.getString("storagevehicle_code"))
);
// 获取物料信息
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne(
new QueryWrapper<MdMeMaterialbase>().eq("material_id", item.getString("material_id"))
);
// 获取计量单位
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getOne(
new QueryWrapper<MdPbMeasureunit>().eq("measure_unit_id", materDao.getBase_unit_id())
);
StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp()
.setIostorinvdis_id(json.getString("iostorinvdis_id"))
.setIostorinvdtl_id(json.getString("iostorinvdtl_id"))
.setIostorinv_id(json.getString("iostorinv_id"))
.setSeq_no(1)
.setMaterial_id(materDao.getMaterial_id())
.setPcsn(DateUtil.today())
.setQuality_scode("00") // TODO 暂时写
.setIvt_level("01") // TODO 暂时写
.setIs_active(true)
.setWork_status("00") // TODO 暂时写
.setStoragevehicle_id(vehicleDao.getStoragevehicle_id())
.setStoragevehicle_code(vehicleDao.getStoragevehicle_code())
.setStoragevehicle_type(vehicleDao.getStoragevehicle_type())
.setIs_issued(false)
.setQty_unit_id(unitDao.getMeasure_unit_id())
.setQty_unit_name(unitDao.getUnit_name())
.setPlan_qty(item.getBigDecimal("qty"))
.setReal_qty(item.getBigDecimal("qty"));
result.add(disDao);
// 更新载具扩展属性表
MdPbStoragevehicleext vehicleExtDao = new MdPbStoragevehicleext();
vehicleExtDao.setMaterial_id(item.getString("material_id"));
vehicleExtDao.setUpdate_id(SecurityUtils.getCurrentUserId());
vehicleExtDao.setUpdate_name(SecurityUtils.getCurrentNickName());
vehicleExtDao.setUpdate_time(new Date());
iMdPbStoragevehicleextService.update(
vehicleExtDao,new QueryWrapper<MdPbStoragevehicleext>().eq("storagevehicle_code", vehicleDao.getStoragevehicle_code())
);
});
return result;
}
}

View File

@@ -1,12 +1,26 @@
package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord;
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisdtlCpService;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp;
import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdisdtlCpMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -21,8 +35,72 @@ import java.util.Map;
@Service
public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdisdtlCpMapper, StIvtIostorinvdisdtlCp> implements IStIvtIostorinvdisdtlCpService {
@Autowired
protected IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具信息表服务
@Autowired
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
@Autowired
protected IMdPbBucketrecordService iMdPbBucketrecordService; // 包装箱记录表服务
@Override
public void batchInsert(Collection<StIvtIostorinvdisdtlCp> list) {
if (!CollectionUtils.isEmpty(list)){
baseMapper.batchSave(list);
}
}
@Override
public List<JSONObject> queryInvDisByInvdtl(Map<String, Object> map) {
return baseMapper.queryInvDtlDisByInv(map);
}
@Override
public List<StIvtIostorinvdisdtlCp> onductDataDisDtl(List<JSONObject> list, JSONObject json) {
List<StIvtIostorinvdisdtlCp> result = new ArrayList<>();
list.forEach(item -> {
// 获取载具信息
MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne(
new QueryWrapper<MdPbStoragevehicleinfo>()
.eq("storagevehicle_code", item.getString("storagevehicle_code"))
);
StIvtIostorinvdisdtlCp disDtlDao = new StIvtIostorinvdisdtlCp()
.setIostorinv_id(json.getString("iostorinv_id"))
.setIostorinvdtl_id(json.getString("iostorinvdtl_id"))
.setIostorinvdis_id(json.getString("iostorinvdis_id"))
.setIostorinvdisdtl_id(IdUtil.getStringId())
.setSeq_no(new BigDecimal(1))
.setMaterial_id(item.getString("material_id"))
.setPcsn(item.getString("pcsn"))
.setQuality_scode("00") // TODO 暂时写
.setIvt_level("01") // TODO 暂时写
.setIs_active(true)
.setStoragevehicle_id(vehicleDao.getStoragevehicle_id())
.setStoragevehicle_code(vehicleDao.getStoragevehicle_code())
.setStoragevehicle_type(vehicleDao.getStoragevehicle_type())
.setBucketunique(item.getString("bucketunique"))
.setQty_unit_id(item.getString("qty_unit_id"))
.setQty_unit_name(item.getString("qty_unit_name"))
.setReal_qty(item.getBigDecimal("qty"));
result.add(disDtlDao);
// 更新箱记录表
MdPbBucketrecord recodDao = new MdPbBucketrecord();
recodDao.setStoragevehicle_id(Long.getLong(vehicleDao.getStoragevehicle_id()));
recodDao.setStatus("02"); // TODO 暂时写死
recodDao.setStoragevehicle_code(vehicleDao.getStoragevehicle_code());
recodDao.setMakeup_optid(Long.getLong(SecurityUtils.getCurrentUserId()));
recodDao.setMakeup_optname(SecurityUtils.getCurrentNickName());
recodDao.setMakeup_time(DateUtil.now());
iMdPbBucketrecordService.update(
recodDao,new QueryWrapper<MdPbBucketrecord>().eq("bucketunique", item.getString("bucketunique"))
);
});
return result;
}
}

View File

@@ -0,0 +1,161 @@
<template>
<el-dialog
title="选择箱号"
append-to-body
:visible.sync="dialogVisible"
destroy-on-close
width="1200px"
@close="close"
@open="open"
>
<div class="head-container">
<div v-if="crud.props.searchToggle">
<!-- 搜索 -->
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="箱号">
<el-input
v-model="query.bucketunique"
size="mini"
clearable
placeholder="箱号"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="箱类型">
<el-select
v-model="query.storagevehicle_type"
size="mini"
clearable
placeholder="请选择"
class="filter-item"
style="width: 200px;"
>
<el-option
v-for="item in pointlist"
:key="item.point_code"
:label="item.point_name"
:value="item.point_code"
/>
</el-select>
</el-form-item>
<rrOperation />
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation />
<!--表格渲染-->
<el-table
ref="multipleTable"
v-loading="crud.loading"
:data="crud.data"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
@current-change="clickChange"
>
<el-table-column label="选择" width="55">
<template slot-scope="scope">
<el-radio v-model="tableRadio" :label="scope.row"><i /></el-radio>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip width="150" prop="bucketunique" label="箱号" />
<el-table-column show-overflow-tooltip width="150" prop="storagevehicle_type" label="箱类型" />
<el-table-column show-overflow-tooltip width="150" prop="status" label="状态" />
<el-table-column show-overflow-tooltip width="150" prop="material_code" label="物料编码" />
<el-table-column show-overflow-tooltip width="150" prop="material_name" label="物料名称" />
<el-table-column show-overflow-tooltip width="150" prop="pcsn" label="批次" />
<el-table-column show-overflow-tooltip width="150" prop="storage_qty" label="数量" />
<el-table-column show-overflow-tooltip width="150" prop="qty_unit_name" label="单位" />
<el-table-column show-overflow-tooltip width="150" prop="create_name" label="创建人" />
<el-table-column show-overflow-tooltip width="150" prop="create_time" label="创建时间" />
</el-table>
<!--分页组件-->
<pagination />
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button type="primary" @click="submit"> </el-button>
</span>
</el-dialog>
</template>
<script>
import CRUD, { crud, header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import pagination from '@crud/Pagination'
import DateRangePicker from '@/components/DateRangePicker/index'
import crudProductIn from '@/views/wms/storage_manage/product/productIn/productin'
const start = new Date()
export default {
name: 'AddBox',
components: { crudOperation, rrOperation, pagination, DateRangePicker },
cruds() {
return CRUD({
title: '用户',
url: '/api/mdPbBucketrecord',
crudMethod: {},
optShow: {
reset: true
}
})
},
mixins: [presenter(), header(), crud()],
props: {
dialogShow: {
type: Boolean,
default: false
},
addBoxParam: {
type: Object
}
},
data() {
return {
dialogVisible: false,
rows: [],
tableRadio: null,
tableData: []
}
},
watch: {
dialogShow: {
handler(newValue, oldValue) {
this.dialogVisible = newValue
}
}
},
methods: {
[CRUD.HOOK.beforeRefresh]() {
return true
},
open() {
this.query.material_id = this.addBoxParam.material_id
this.query.pcsn = this.addBoxParam.pcsn
this.crud.toQuery()
},
clickChange(item) {
this.tableRadio = item
},
close() {
this.$emit('update:dialogShow', false)
},
submit() {
this.$emit('update:dialogShow', false)
this.rows = this.$refs.multipleTable.selection
this.$emit('tableChanged2', this.tableRadio)
}
}
}
</script>

View File

@@ -71,12 +71,13 @@
style="width: 200px"
size="mini"
clearable
@blur="vehicleCheck(form.vehicle_code)"
placeholder="载具号"
/>
</el-form-item>
<el-form-item label="箱号:" prop="pageBox_code">
<el-input v-model="form.pageBox_code" size="mini" style="width: 200px" disabled placeholder="箱号" >
<el-input v-model="form.bucketunique" size="mini" style="width: 200px" disabled placeholder="箱号" >
<el-button slot="append" icon="el-icon-plus" @click="queryBox" />
</el-input>
</el-form-item>
@@ -140,7 +141,7 @@
type="primary"
icon="el-icon-plus"
size="mini"
@click="confirmvehicle()"
@click="pushVehicle()"
>
装入托盘
</el-button>
@@ -211,6 +212,8 @@
</el-card>
<StructDiv ref="child" :stor-id="storId" :dialog-show.sync="structShow" :sect-prop="sectProp" @tableChanged="tableChanged" />
<AddBox ref="child" :dialog-show.sync="addBoxShow" :add-box-param="boxParam" @tableChanged2="tableChanged2" />
</el-dialog>
</template>
@@ -220,10 +223,11 @@ import StructDiv from '@/views/wms/pub/StructDialog'
import crudProductIn from '@/views/wms/storage_manage/product/productIn/productin'
import crudPoint from '@/api/wms/sch/point'
import crudRegion from '@/api/wms/sch/region'
import AddBox from '@/views/wms/storage_manage/product/productIn/AddBox'
export default {
name: 'DivDialog',
components: { StructDiv },
components: { StructDiv, AddBox },
mixins: [crud()],
dicts: ['IO_BILL_STATUS', 'MD_OVERSTRUCT_TYPE'],
props: {
@@ -231,19 +235,12 @@ export default {
type: Boolean,
default: false
},
bussConfig: {
type: Object
},
openParam: {
type: Array,
default: () => {
return []
}
},
billType: {
type: String,
default: null
},
storId: {
type: String,
default: null
@@ -255,13 +252,13 @@ export default {
stor_id: '',
sect_id: '',
sectProp: null,
bucketProp: {},
structShow: false,
bucketObj: null,
divBtn: false,
bucketShow: false,
addBoxShow: false,
bucketuniqueObj: null,
sects: [],
sect_val: null,
dis_row: null,
form: {
dtl_row: null,
@@ -270,13 +267,14 @@ export default {
stor_id: '',
point_code: null,
vehicle_code: "",
pageBox_code: "",
bucketunique: "",
checked: true,
tableMater: []
},
storlist: [],
pointlist: [],
rules: {}
rules: {},
boxParam: {}
}
},
watch: {
@@ -302,6 +300,7 @@ export default {
close() {
this.form.tableMater = []
this.form.dtl_row = null
this.form.bucketunique = null
this.sectProp = null
this.$emit('update:dialogShow', false)
this.$emit('AddChanged')
@@ -317,21 +316,70 @@ export default {
clcikRowDis(row, column, event) {
this.dis_row = row
},
vehicleCheck() {
if (!this.form.dtl_row) {
this.crud.notify('请选择一条入库明细', CRUD.NOTIFICATION_TYPE.INFO)
this.form.storagevehicle_code = ''
vehicleCheck(vehicle_code) {
this.form.bucketunique = ''
// 校验载具号是否存在&&是否已被组盘
crudProductIn.vehicleCheck({ 'storagevehicle_code': vehicle_code }).then(res => {
this.crud.notify('查询成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
}).catch(() => {
this.form.vehicle_code = ''
})
},
queryBox() {
// 校验载具是否为空
if (!this.form.vehicle_code) {
this.crud.notify('请先填写载具号!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudProductIn.checkVehicle({
'storagevehicle_code': this.form.storagevehicle_code,
'dis_num': this.form.tableMater.length,
'iostorinv_id': this.form.dtl_row.iostorinv_id
}).then(res => {
if (!this.form.dtl_row) {
this.crud.notify('请选择一条明细!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
this.boxParam = {
'material_id': this.form.dtl_row.material_id,
'pcsn': this.form.dtl_row.pcsn
}
this.addBoxShow = true
},
pushVehicle() {
// 校验载具是否为空
if (!this.form.vehicle_code) {
this.crud.notify('载具号不能为空!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
// 校验明细不能为空
if (!this.form.dtl_row) {
this.crud.notify('请选择一条明细!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
// 有箱号
if (this.form.bucketunique) {
let fla = true
this.form.tableMater.forEach(item => {
if (item.bucketunique === this.bucketuniqueObj.bucketunique) {
fla = false
}
})
}).catch(err => {
this.form.storagevehicle_code = ''
})
if (fla) {
this.form.tableMater.splice(-1, 0, this.bucketuniqueObj)
this.form.bucketunique = ''
}
} else {
// 无箱号
if (!this.form.storage_qty) {
this.crud.notify('数量不能为0', CRUD.NOTIFICATION_TYPE.INFO)
return
}
const item = {
'storagevehicle_code': this.form.vehicle_code,
'material_id': this.form.dtl_row.material_id,
'material_code': this.form.dtl_row.material_code,
'material_name': this.form.dtl_row.material_name,
'qty': this.form.storage_qty
}
this.form.tableMater.splice(-1, 0, item)
}
},
tableRowClassName({ row, rowIndex }) {
row.index = rowIndex
@@ -384,23 +432,20 @@ export default {
}
},
confirmvehicle() {
if (this.dis_row === null) {
this.crud.notify('请选择一条分配明细', CRUD.NOTIFICATION_TYPE.INFO)
if (!this.form.dtl_row) {
this.crud.notify('请选择一条明细', CRUD.NOTIFICATION_TYPE.INFO)
return
}
if (this.dis_row.overstruct_type === '') {
this.crud.notify('载具超限不能为空', CRUD.NOTIFICATION_TYPE.INFO)
if (this.form.tableMater.length === 0) {
this.crud.notify('请先装入托盘!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudProductIn.confirmvehicle(this.dis_row).then(res => {
crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id }).then(res => {
this.openParam = res
})
crudProductIn.getDisDtl(this.form.dtl_row).then(res => {
this.form.tableMater = res
this.crud.notify('组盘成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
})
crudProductIn.confirmvehicle(this.form).then(res => {
this.crud.notify('组盘成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.form.vehicle_code = ''
this.form.bucketunique = ''
})
},
sectQueryChange(val) {
this.sectProp = val
@@ -436,6 +481,12 @@ export default {
this.form.tableMater = []
})
},
tableChanged2(row) {
this.form.bucketunique = row.bucketunique
row.storagevehicle_code = this.form.vehicle_code
row.qty = row.storage_qty
this.bucketuniqueObj = row
},
divPoint() {
if (!this.form.point_code) {
this.crud.notify('请选择入库点', CRUD.NOTIFICATION_TYPE.INFO)

View File

@@ -40,10 +40,28 @@ export function getIosInvDis(data) {
})
}
export function vehicleCheck(data) {
return request({
url: '/api/productIn/vehicleCheck',
method: 'post',
data
})
}
export function confirmvehicle(data) {
return request({
url: '/api/productIn/confirmvehicle',
method: 'post',
data
})
}
export default {
add,
edit,
del,
getIosInvDtl,
getIosInvDis
getIosInvDis,
vehicleCheck,
confirmvehicle
}