rev:退料组盘页面优化
This commit is contained in:
@@ -127,4 +127,16 @@ public class GroupController {
|
||||
iMdPbGroupplateService.importExcel(file, request);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryVehicle")
|
||||
@Log("查询点位下的载具")
|
||||
public ResponseEntity<Object> queryVehicle(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(iMdPbGroupplateService.queryVehicle(whereJson), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/queryVehicleType")
|
||||
@Log("获取载具类型")
|
||||
public ResponseEntity<Object> queryVehicleType(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(iMdPbGroupplateService.queryVehicleType(whereJson), HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,9 +85,9 @@ public interface IPdmBomCallMaterialService extends IService<PdmBomCallMaterial>
|
||||
* @param whereJson {
|
||||
* material_id
|
||||
* }
|
||||
* @return List<PdmBomCallMaterial>
|
||||
* @return List<PdmBomCallMaterialDto>
|
||||
*/
|
||||
List<PdmBomCallMaterial> queryMaterialBom(JSONObject whereJson);
|
||||
List<PdmBomCallMaterialDto> queryMaterialBom(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 添加领导人
|
||||
|
||||
@@ -46,5 +46,12 @@ public interface PdmBomCallMaterialMapper extends BaseMapper<PdmBomCallMaterial>
|
||||
*/
|
||||
List<PdmBomCallMaterialDto> queryBomInfo(@Param("param") JSONObject whereJson);
|
||||
|
||||
|
||||
/**
|
||||
* 查询当天工单
|
||||
* @param whereJson {
|
||||
* material_id
|
||||
* }
|
||||
* @return List<PdmBomCallMaterialDto>
|
||||
*/
|
||||
List<PdmBomCallMaterialDto> queryMaterialBom(@Param("param") JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -129,4 +129,25 @@
|
||||
ORDER BY bom.create_time Desc
|
||||
</select>
|
||||
|
||||
<select id="queryMaterialBom" resultType="org.nl.wms.pdm_manage.service.dto.PdmBomCallMaterialDto">
|
||||
SELECT
|
||||
bom.*,
|
||||
mater.material_code,
|
||||
mater.material_name,
|
||||
mater.material_spec
|
||||
FROM
|
||||
pdm_bom_callmaterial bom
|
||||
INNER JOIN md_me_materialbase mater ON mater.material_id = bom.material_id
|
||||
<where>
|
||||
bom.bom_status = '5'
|
||||
|
||||
<if test="param.to_day != null and param.to_day != ''">
|
||||
AND
|
||||
bom.start_time = #{param.to_day}
|
||||
</if>
|
||||
</where>
|
||||
|
||||
ORDER BY bom.real_weigh_qty Desc
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
||||
@@ -157,14 +157,10 @@ public class PdmBomCallMaterialServiceImpl extends ServiceImpl<PdmBomCallMateria
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PdmBomCallMaterial> queryMaterialBom(JSONObject whereJson) {
|
||||
return this.list(
|
||||
new QueryWrapper<PdmBomCallMaterial>().lambda()
|
||||
.eq(PdmBomCallMaterial::getStart_time, DateUtil.today())
|
||||
.eq(PdmBomCallMaterial::getMaterial_id, whereJson.getString("material_id"))
|
||||
.eq(PdmBomCallMaterial::getBom_status, BomEnum.CALL_BOM_STATUS.code("完成"))
|
||||
.orderByDesc(PdmBomCallMaterial::getReal_weigh_qty)
|
||||
);
|
||||
public List<PdmBomCallMaterialDto> queryMaterialBom(JSONObject whereJson) {
|
||||
whereJson.put("to_day", DateUtil.today());
|
||||
this.baseMapper.queryMaterialBom(whereJson);
|
||||
return this.baseMapper.queryMaterialBom(whereJson);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -7,7 +7,9 @@ import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.pda.util.PdaResponse;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@@ -119,4 +121,22 @@ public interface IMdPbGroupplateService extends IService<GroupPlate> {
|
||||
* @param dto 实体类
|
||||
*/
|
||||
void outReceiveGroup(GroupPlate dto);
|
||||
|
||||
/**
|
||||
* 查询点位下的载具
|
||||
* @param whereJson {
|
||||
* point_code
|
||||
* }
|
||||
* @return List<SchBaseTask>
|
||||
*/
|
||||
List<SchBaseTask> queryVehicle(JSONObject whereJson);
|
||||
|
||||
/**
|
||||
* 获取载具类型
|
||||
* @param whereJson {
|
||||
* vehicle_code
|
||||
* }
|
||||
* @return MdPbStoragevehicleinfo
|
||||
*/
|
||||
MdPbStoragevehicleinfo queryVehicleType(JSONObject whereJson);
|
||||
}
|
||||
|
||||
@@ -5,15 +5,11 @@ import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.NumberUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
@@ -35,6 +31,10 @@ import org.nl.wms.pdm_manage.service.IPdmBomCallMaterialDtlService;
|
||||
import org.nl.wms.pdm_manage.service.IPdmBomCallMaterialService;
|
||||
import org.nl.wms.pdm_manage.service.dao.PdmBomCallMaterial;
|
||||
import org.nl.wms.pdm_manage.service.dao.PdmBomCallMaterialDtl;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.CallReceiveEmpTask;
|
||||
import org.nl.wms.warehouse_management.enums.IOSConstant;
|
||||
import org.nl.wms.warehouse_management.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
|
||||
@@ -42,7 +42,6 @@ import org.nl.wms.warehouse_management.service.dao.GroupPlate;
|
||||
import org.nl.wms.warehouse_management.service.dao.mapper.MdPbGroupplateMapper;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
@@ -104,6 +103,9 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
||||
@Autowired
|
||||
private IPdmBomCallMaterialDtlService iPdmBomCallMaterialDtlService;
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService iSchBaseTaskService;
|
||||
|
||||
@Override
|
||||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
||||
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()),
|
||||
@@ -232,7 +234,7 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void outReceiveGroup(GroupPlate dto){
|
||||
public void outReceiveGroup(GroupPlate dto) {
|
||||
// 插入组盘记录
|
||||
dto.setGroup_id(this.create(dto));
|
||||
// 转换为集合
|
||||
@@ -249,6 +251,13 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
||||
.in(PdmBomCallMaterial::getBom_code, bomCodeList)
|
||||
.orderByDesc(PdmBomCallMaterial::getReal_weigh_qty)
|
||||
);
|
||||
// 判断所选工单物料是否一致
|
||||
boolean is_like = bomDaoList.stream()
|
||||
.allMatch(row -> row.getMaterial_id().equals(dto.getMaterial_id()));
|
||||
if (!is_like) {
|
||||
throw new BadRequestException("当前所有工单物料不一致,请重新选择!");
|
||||
}
|
||||
|
||||
// 判断工单总的可退重量是否满足组盘总量
|
||||
Double sumQty = bomDaoList.stream()
|
||||
.map(row -> row.getReal_weigh_qty().doubleValue())
|
||||
@@ -277,6 +286,23 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SchBaseTask> queryVehicle(JSONObject whereJson) {
|
||||
// 查询此点位下正在执行的空载具任务
|
||||
return iSchBaseTaskService.list(
|
||||
new QueryWrapper<SchBaseTask>().lambda()
|
||||
.eq(SchBaseTask::getIs_delete, IOSConstant.ZERO)
|
||||
.eq(SchBaseTask::getPoint_code2, whereJson.getString("point_code"))
|
||||
.eq(SchBaseTask::getConfig_code, CallReceiveEmpTask.class.getSimpleName())
|
||||
.eq(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode())
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public MdPbStoragevehicleinfo queryVehicleType(JSONObject whereJson) {
|
||||
return iMdPbStoragevehicleinfoService.getByCode(whereJson.getString("vehicle_code"));
|
||||
}
|
||||
|
||||
/**
|
||||
* 创建退料明细
|
||||
*
|
||||
@@ -300,7 +326,7 @@ public class MdPbGroupplateServiceImpl extends ServiceImpl<MdPbGroupplateMapper,
|
||||
dtlDao.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
dtlDao.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
dtlDao.setCreate_time(DateUtil.now());
|
||||
dtlDao.setConfirm_time( "" );
|
||||
dtlDao.setConfirm_time("");
|
||||
dtlDao.setRemark("由退料组盘创建");
|
||||
dtlDao.setGroup_id(plate.getGroup_id());
|
||||
iPdmBomCallMaterialDtlService.save(dtlDao);
|
||||
|
||||
@@ -10,6 +10,70 @@
|
||||
@open="open"
|
||||
>
|
||||
<el-form ref="form2" :model="formMst" :rules="rules" size="mini" label-width="110px">
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="关联工单" prop="bom_list">
|
||||
<el-select
|
||||
v-model="formMst.bom_list"
|
||||
multiple
|
||||
size="mini"
|
||||
style="width: 280px;"
|
||||
class="filter-item"
|
||||
@change="queryBomMater"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in bomList"
|
||||
:label="item.bom_code"
|
||||
:value="item.bom_code"
|
||||
>
|
||||
<span style="float: left">{{ item.bom_code }}</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px">{{'可退重量:'+ item.real_weigh_qty }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="当前点位" prop="point_code">
|
||||
<el-select
|
||||
v-model="formMst.point_code"
|
||||
size="mini"
|
||||
@change="queryVehicle"
|
||||
placeholder="全部"
|
||||
style="width: 220px"
|
||||
class="filter-item"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in pointList"
|
||||
:key="item.point_code"
|
||||
:label="item.point_name"
|
||||
:value="item.point_code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="载具编码" prop="storagevehicle_code">
|
||||
<el-select
|
||||
v-model="formMst.storagevehicle_code"
|
||||
size="mini"
|
||||
placeholder="全部"
|
||||
style="width: 220px"
|
||||
class="filter-item"
|
||||
@change="queryVehicleType"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in vehicleList"
|
||||
:key="item.vehicle_code"
|
||||
:label="item.vehicle_code"
|
||||
:value="item.vehicle_code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="物料编码" prop="material_code">
|
||||
@@ -20,6 +84,7 @@
|
||||
style="width: 220px"
|
||||
class="filter-item"
|
||||
filterable
|
||||
disabled
|
||||
@change="queryMater"
|
||||
>
|
||||
<el-option
|
||||
@@ -47,8 +112,22 @@
|
||||
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="载具编码" prop="storagevehicle_code">
|
||||
<el-input v-model="formMst.storagevehicle_code" style="width: 220px;" />
|
||||
<el-form-item label="机台编码" prop="device_code">
|
||||
<el-select
|
||||
disabled
|
||||
v-model="formMst.device_code"
|
||||
size="mini"
|
||||
style="width: 220px;"
|
||||
class="filter-item"
|
||||
@change="crud.toQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in deviceList"
|
||||
:key="item.device_code"
|
||||
:label="item.device_code"
|
||||
:value="item.device_code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
@@ -125,7 +204,7 @@
|
||||
size="mini"
|
||||
style="width: 220px;"
|
||||
class="filter-item"
|
||||
@change="crud.toQuery"
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.QUALITY_TYPE"
|
||||
@@ -143,7 +222,7 @@
|
||||
size="mini"
|
||||
style="width: 220px;"
|
||||
class="filter-item"
|
||||
@change="crud.toQuery"
|
||||
disabled
|
||||
>
|
||||
<el-option
|
||||
v-for="item in dict.storagevehicle_type"
|
||||
@@ -155,48 +234,6 @@
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item label="关联工单" prop="bom_list">
|
||||
<el-select
|
||||
v-model="formMst.bom_list"
|
||||
multiple
|
||||
size="mini"
|
||||
style="width: 280px;"
|
||||
class="filter-item"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in bomList"
|
||||
:label="item.bom_code"
|
||||
:value="item.bom_code"
|
||||
>
|
||||
<span style="float: left">{{ item.bom_code }}</span>
|
||||
<span style="float: right; color: #8492a6; font-size: 13px">{{'可退重量:'+ item.real_weigh_qty }}</span>
|
||||
</el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="8">
|
||||
<el-form-item label="机台编码" prop="device_code">
|
||||
<el-select
|
||||
v-model="formMst.device_code"
|
||||
size="mini"
|
||||
style="width: 220px;"
|
||||
class="filter-item"
|
||||
@change="crud.toQuery"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in deviceList"
|
||||
:key="item.device_code"
|
||||
:label="item.device_code"
|
||||
:value="item.device_code"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-row>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="执行标准" prop="execution_stand">
|
||||
@@ -238,7 +275,7 @@ import CRUD, { crud } from '@crud/crud'
|
||||
import crudGroup from '@/views/wms/basedata/group/group'
|
||||
import crudDeviceinfo from '@/views/wms/basedata/deviceInfo/deviceinfo'
|
||||
import crudCallMaterial from '@/views/wms/pdm/callmaterial/callmaterial'
|
||||
|
||||
import crudPoint from '@/views/wms/sch/point/schBasePoint'
|
||||
export default {
|
||||
name: 'WeighDialog',
|
||||
mixins: [crud()],
|
||||
@@ -262,7 +299,7 @@ export default {
|
||||
remark: null,
|
||||
status: null,
|
||||
supp_code: null,
|
||||
quality_time: null,
|
||||
quality_time: new Date(),
|
||||
produce_time: new Date(),
|
||||
execution_stand: null,
|
||||
bake_num: 0,
|
||||
@@ -280,7 +317,9 @@ export default {
|
||||
pcsnList: [],
|
||||
materList: [],
|
||||
deviceList: [],
|
||||
pointList: [],
|
||||
bomList: [],
|
||||
vehicleList: [],
|
||||
current: null,
|
||||
dialogVisible: false,
|
||||
rules: {
|
||||
@@ -359,6 +398,14 @@ export default {
|
||||
crudDeviceinfo.getDevice({}).then(res => {
|
||||
this.deviceList = res
|
||||
})
|
||||
// 查询工单信息
|
||||
crudCallMaterial.queryMaterialBom({}).then(res => {
|
||||
this.bomList = res
|
||||
})
|
||||
const area_type = 'INOUR01'
|
||||
crudPoint.getPointList({ 'region_code': area_type }).then(res => {
|
||||
this.pointList = res
|
||||
})
|
||||
},
|
||||
outReceiveGroup() {
|
||||
if (!this.formMst.material_id) {
|
||||
@@ -408,19 +455,43 @@ export default {
|
||||
this.formMst.material_spec = row.material_spec
|
||||
this.formMst.material_name = row.material_name
|
||||
this.formMst.material_id = row.material_id
|
||||
// 查询工单信息
|
||||
crudCallMaterial.queryMaterialBom({ 'material_id': this.formMst.material_id }).then(res => {
|
||||
if (res.length === 0) {
|
||||
this.formMst.bom_list = []
|
||||
}
|
||||
this.bomList = res
|
||||
})
|
||||
}).catch(() => {
|
||||
this.formMst.material_spec = ''
|
||||
this.formMst.material_name = ''
|
||||
this.formMst.material_code = ''
|
||||
this.formMst.material_id = ''
|
||||
})
|
||||
},
|
||||
queryBomMater(value) {
|
||||
if (value.length === 0) {
|
||||
this.formMst.material_spec = ''
|
||||
this.formMst.material_name = ''
|
||||
this.formMst.material_code = ''
|
||||
this.formMst.material_id = ''
|
||||
this.formMst.device_code = ''
|
||||
} else {
|
||||
const bom_code = value[0]
|
||||
for (let i = 0; i < this.bomList.length; i++) {
|
||||
const row = this.bomList[i]
|
||||
if (row.bom_code === bom_code) {
|
||||
// 给物料编码赋值
|
||||
this.formMst.material_code = row.material_code
|
||||
this.queryMater(row.material_code)
|
||||
// 给机台编码赋值
|
||||
this.formMst.device_code = row.device_code
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
queryVehicle(value) {
|
||||
crudGroup.queryVehicle({ 'point_code': value }).then(res => {
|
||||
this.vehicleList = res
|
||||
})
|
||||
},
|
||||
queryVehicleType(value) {
|
||||
crudGroup.queryVehicleType({ 'vehicle_code': value }).then(res => {
|
||||
this.formMst.box_type = res.storagevehicle_type
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,5 +96,22 @@ export function outReceiveGroup(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export function queryVehicle(data) {
|
||||
return request({
|
||||
url: 'api/group/queryVehicle',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function queryVehicleType(data) {
|
||||
return request({
|
||||
url: 'api/group/queryVehicleType',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, edit, del, queryMater, queryMaterList, checkVehicle,
|
||||
querySupp, copySave, printDelete, excelImport, getPcsn, outReceiveGroup }
|
||||
querySupp, copySave, printDelete, excelImport, getPcsn, outReceiveGroup,
|
||||
queryVehicle, queryVehicleType }
|
||||
|
||||
Reference in New Issue
Block a user