工单修改,新建工单时增加可以多选择所需存放的固化室
This commit is contained in:
@@ -10,6 +10,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description /
|
* @description /
|
||||||
@@ -91,6 +92,12 @@ public class PdmBdWorkorder implements Serializable {
|
|||||||
@ApiModelProperty(value = "外部标识")
|
@ApiModelProperty(value = "外部标识")
|
||||||
private String ext_id;
|
private String ext_id;
|
||||||
|
|
||||||
|
@ApiModelProperty(value = "外部数据")
|
||||||
|
private String ext_data;
|
||||||
|
|
||||||
|
@TableField(exist = false)
|
||||||
|
private List<String> ghs;
|
||||||
|
|
||||||
@ApiModelProperty(value = "是否删除")
|
@ApiModelProperty(value = "是否删除")
|
||||||
private Boolean is_delete;
|
private Boolean is_delete;
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -50,6 +51,11 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
|||||||
public IPage<PdmBdWorkorder> queryAll(PdmBdWorkorderQuery query, PageQuery page){
|
public IPage<PdmBdWorkorder> queryAll(PdmBdWorkorderQuery query, PageQuery page){
|
||||||
IPage<PdmBdWorkorder> pages = new Page<>(page.getPage() + 1, page.getSize());
|
IPage<PdmBdWorkorder> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||||
pages = pdmBdWorkorderMapper.selectPageLeftJoin(pages, query);
|
pages = pdmBdWorkorderMapper.selectPageLeftJoin(pages, query);
|
||||||
|
for(PdmBdWorkorder pdmBdWorkorder:pages.getRecords()){
|
||||||
|
if(ObjectUtil.isNotEmpty(pdmBdWorkorder.getExt_data())) {
|
||||||
|
pdmBdWorkorder.setGhs(Arrays.asList(pdmBdWorkorder.getExt_data().split(",")));
|
||||||
|
}
|
||||||
|
}
|
||||||
return pages;
|
return pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,7 +64,6 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
|||||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||||
String nickName = SecurityUtils.getCurrentNickName();
|
String nickName = SecurityUtils.getCurrentNickName();
|
||||||
String now = DateUtil.now();
|
String now = DateUtil.now();
|
||||||
|
|
||||||
// 点位编码和点位名称为父点位
|
// 点位编码和点位名称为父点位
|
||||||
entity.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
entity.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr());
|
||||||
entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||||
@@ -68,6 +73,11 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
|||||||
entity.setUpdate_id(currentUserId);
|
entity.setUpdate_id(currentUserId);
|
||||||
entity.setUpdate_name(nickName);
|
entity.setUpdate_name(nickName);
|
||||||
entity.setUpdate_time(now);
|
entity.setUpdate_time(now);
|
||||||
|
StringBuilder sb=new StringBuilder();
|
||||||
|
for(String ghs:entity.getGhs()){
|
||||||
|
sb.append(ghs).append(',');
|
||||||
|
}
|
||||||
|
entity.setExt_data(sb.toString());
|
||||||
pdmBdWorkorderMapper.insert(entity);
|
pdmBdWorkorderMapper.insert(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,7 +94,11 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
|||||||
entity.setUpdate_id(currentUserId);
|
entity.setUpdate_id(currentUserId);
|
||||||
entity.setUpdate_name(nickName);
|
entity.setUpdate_name(nickName);
|
||||||
entity.setUpdate_time(now);
|
entity.setUpdate_time(now);
|
||||||
|
StringBuilder sb=new StringBuilder();
|
||||||
|
for(String ghs:entity.getGhs()){
|
||||||
|
sb.append(ghs).append(',');
|
||||||
|
}
|
||||||
|
entity.setExt_data(sb.toString());
|
||||||
pdmBdWorkorderMapper.updateById(entity);
|
pdmBdWorkorderMapper.updateById(entity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
import org.nl.common.utils.SecurityUtils;
|
import org.nl.common.utils.SecurityUtils;
|
||||||
|
import org.nl.system.service.dict.dao.Dict;
|
||||||
import org.nl.wms.sch.point.service.ISchBasePointService;
|
import org.nl.wms.sch.point.service.ISchBasePointService;
|
||||||
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
import org.nl.wms.sch.point.service.dao.SchBasePoint;
|
||||||
import org.nl.wms.sch.point.service.dao.mapper.SchBasePointMapper;
|
import org.nl.wms.sch.point.service.dao.mapper.SchBasePointMapper;
|
||||||
@@ -182,7 +183,9 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
|||||||
public List<SchBasePoint> getPointList(SchBasePoint region) {
|
public List<SchBasePoint> getPointList(SchBasePoint region) {
|
||||||
if (ObjectUtil.isEmpty(region)) return this.list();
|
if (ObjectUtil.isEmpty(region)) return this.list();
|
||||||
return pointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>()
|
return pointMapper.selectList(new LambdaQueryWrapper<SchBasePoint>()
|
||||||
.eq(SchBasePoint::getRegion_code, region.getRegion_code()));
|
.eq(SchBasePoint::getRegion_code, region.getRegion_code())
|
||||||
|
.eq(ObjectUtil.isNotEmpty(region.getPoint_type()),SchBasePoint::getPoint_type, region.getPoint_type())
|
||||||
|
.orderByAsc(SchBasePoint::getPoint_code));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -177,38 +177,52 @@ public class TBXMLTask extends AbstractTask {
|
|||||||
// 获取物料
|
// 获取物料
|
||||||
MdBaseMaterial material = materialService.getById(workorder.getMaterial_id());
|
MdBaseMaterial material = materialService.getById(workorder.getMaterial_id());
|
||||||
// 获取固化方案
|
// 获取固化方案
|
||||||
Param curingPlan = paramService.findByCode("CuringPlan");
|
// Param curingPlan = paramService.findByCode("CuringPlan");
|
||||||
List<SchBasePoint> points = new ArrayList<>();
|
List<SchBasePoint> points = new ArrayList<>();
|
||||||
if (curingPlan.getValue().equals(GeneralDefinition.NOT_MIXING)) {
|
List<String> ghsList=new ArrayList<>();
|
||||||
// 不可混料-需要根据工单上物料的信息
|
//固化室逻辑调整,现在去哪个固化室取决于工单,原有限制不变,原有混料规则废弃
|
||||||
// 1 获取含有该物料并且没满的固化室。
|
if(ObjectUtil.isNotEmpty(workorder.getExt_data())) {
|
||||||
points = tbxMapper.getNotFullByMaterial(nextRegionStr, vehicle_type, workorder.getMaterial_id());
|
ghsList=Arrays.asList(workorder.getExt_data().split(","));
|
||||||
} else if (curingPlan.getValue().equals(GeneralDefinition.CAN_MIXING)) {
|
|
||||||
// 可混料, 要与物料工艺号相同
|
|
||||||
// 1 获取同工艺号的位置
|
|
||||||
points = tbxMapper.getCanMiningPoint(nextRegionStr, vehicle_type, material.getTechnique_num());
|
|
||||||
} else {
|
|
||||||
// 自定义混料
|
|
||||||
// 获取自定义混料对应的plan_code(计划编码)
|
|
||||||
Param currentMaterials = paramService.getOne(new LambdaQueryWrapper<Param>().eq(Param::getCode, "CurrentMaterials"));
|
|
||||||
// 获取plan_code对应的物料数组
|
|
||||||
List<String> details = solidifyPlanService.details(currentMaterials.getValue());
|
|
||||||
// 判断是否在自定义配方内
|
|
||||||
if (details.contains(material.getMaterial_id())) {
|
|
||||||
// 1 寻找可存放的固化室
|
|
||||||
points = tbxMapper.getSamePlanPoint(nextRegionStr, details, vehicle_type);
|
|
||||||
if (points.size() == 0) {
|
|
||||||
// 2 没找到需要找个相同物料可用的位置
|
|
||||||
// hint: 获取含有该物料并且没满的固化室。
|
|
||||||
points = tbxMapper.getNotFullByMaterial(nextRegionStr, vehicle_type, workorder.getMaterial_id());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// 2 没有对应的固化室、没有同工艺号的固化室、没有计划方案对应的固化室,就找新的固化室
|
points = tbxMapper.getNotFullByMaterial(nextRegionStr, vehicle_type, workorder.getMaterial_id(),ghsList);
|
||||||
|
// if (curingPlan.getValue().equals(GeneralDefinition.NOT_MIXING)) {
|
||||||
|
// // 不可混料-需要根据工单上物料的信息
|
||||||
|
// // 1 获取含有该物料并且没满的固化室。
|
||||||
|
// points = tbxMapper.getNotFullByMaterial(nextRegionStr, vehicle_type, workorder.getMaterial_id());
|
||||||
|
// } else if (curingPlan.getValue().equals(GeneralDefinition.CAN_MIXING)) {
|
||||||
|
// // 可混料, 要与物料工艺号相同
|
||||||
|
// // 1 获取同工艺号的位置
|
||||||
|
// points = tbxMapper.getCanMiningPoint(nextRegionStr, vehicle_type, material.getTechnique_num());
|
||||||
|
// } else {
|
||||||
|
// // 自定义混料
|
||||||
|
// // 获取自定义混料对应的plan_code(计划编码)
|
||||||
|
// Param currentMaterials = paramService.getOne(new LambdaQueryWrapper<Param>().eq(Param::getCode, "CurrentMaterials"));
|
||||||
|
// // 获取plan_code对应的物料数组
|
||||||
|
// List<String> details = solidifyPlanService.details(currentMaterials.getValue());
|
||||||
|
// // 判断是否在自定义配方内
|
||||||
|
// if (details.contains(material.getMaterial_id())) {
|
||||||
|
// // 1 寻找可存放的固化室
|
||||||
|
// points = tbxMapper.getSamePlanPoint(nextRegionStr, details, vehicle_type);
|
||||||
|
// if (points.size() == 0) {
|
||||||
|
// // 2 没找到需要找个相同物料可用的位置
|
||||||
|
// // hint: 获取含有该物料并且没满的固化室。
|
||||||
|
// points = tbxMapper.getNotFullByMaterial(nextRegionStr, vehicle_type, workorder.getMaterial_id());
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// // 2 没有对应的固化室、没有同工艺号的固化室、没有计划方案对应的固化室,就找新的固化室
|
||||||
if (points.size() == 0) {
|
if (points.size() == 0) {
|
||||||
points = tbxMapper.getEmptyPoint(nextRegionStr, vehicle_type, workorder.getMaterial_id());
|
points = tbxMapper.getEmptyPoint(nextRegionStr, vehicle_type, workorder.getMaterial_id());
|
||||||
}
|
}
|
||||||
SchBasePoint schBasePoint =points.size() > 0 ? points.get(0) : null;
|
SchBasePoint schBasePoint =new SchBasePoint();
|
||||||
|
for(SchBasePoint temp:points){
|
||||||
|
for(String ghs:ghsList) {
|
||||||
|
if (ghs.equals(temp.getParent_point_code())) {
|
||||||
|
schBasePoint=temp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (schBasePoint != null) {
|
if (schBasePoint != null) {
|
||||||
schBasePoint.setCan_material_type(workorder.getMaterial_id());
|
schBasePoint.setCan_material_type(workorder.getMaterial_id());
|
||||||
pointService.updateById(schBasePoint);
|
pointService.updateById(schBasePoint);
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ public interface TBXMapper {
|
|||||||
* @param materialId 物料标识
|
* @param materialId 物料标识
|
||||||
* @return 点位数据
|
* @return 点位数据
|
||||||
*/
|
*/
|
||||||
List<SchBasePoint> getNotFullByMaterial(List<String> nextRegionStr, String vehicleType, String materialId);
|
List<SchBasePoint> getNotFullByMaterial(List<String> nextRegionStr, String vehicleType, String materialId,List<String> ghsList);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取空的固化室
|
* 获取空的固化室
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
</el-form>
|
</el-form>
|
||||||
</div>
|
</div>
|
||||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||||
<crudOperation :permission="permission" >
|
<crudOperation :permission="permission">
|
||||||
<el-button
|
<el-button
|
||||||
slot="right"
|
slot="right"
|
||||||
class="filter-item"
|
class="filter-item"
|
||||||
@@ -211,14 +211,14 @@
|
|||||||
<el-form-item label="设备名称">
|
<el-form-item label="设备名称">
|
||||||
<el-input v-model="form.point_name" style="width: 240px;" disabled />
|
<el-input v-model="form.point_name" style="width: 240px;" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<!-- <el-form-item label="静置时间(分钟)" prop="standing_time">-->
|
<!-- <el-form-item label="静置时间(分钟)" prop="standing_time">-->
|
||||||
<!-- <el-input-number-->
|
<!-- <el-input-number-->
|
||||||
<!-- v-model.number="form.standing_time"-->
|
<!-- v-model.number="form.standing_time"-->
|
||||||
<!-- :min="0"-->
|
<!-- :min="0"-->
|
||||||
<!-- :max="999"-->
|
<!-- :max="999"-->
|
||||||
<!-- style="width: 240px;"-->
|
<!-- style="width: 240px;"-->
|
||||||
<!-- />-->
|
<!-- />-->
|
||||||
<!-- </el-form-item>-->
|
<!-- </el-form-item>-->
|
||||||
<el-form-item v-show="crud.status.edit" label="实际数量" prop="real_qty">
|
<el-form-item v-show="crud.status.edit" label="实际数量" prop="real_qty">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model.number="form.real_qty"
|
v-model.number="form.real_qty"
|
||||||
@@ -260,6 +260,24 @@
|
|||||||
/>
|
/>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="可放固化室" prop="ghs">
|
||||||
|
<el-select
|
||||||
|
v-model="form.ghs"
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
multiple
|
||||||
|
size="mini"
|
||||||
|
placeholder="请选择"
|
||||||
|
class="filter-item"
|
||||||
|
style="width: 240px;"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in ghsList"
|
||||||
|
:label="item.point_name"
|
||||||
|
:value="item.point_code"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="是否自动搬运" prop="is_needmove">
|
<el-form-item label="是否自动搬运" prop="is_needmove">
|
||||||
<el-radio-group v-model="form.is_needmove" style="width: 240px">
|
<el-radio-group v-model="form.is_needmove" style="width: 240px">
|
||||||
<el-radio :label="true">是</el-radio>
|
<el-radio :label="true">是</el-radio>
|
||||||
@@ -416,7 +434,8 @@ const defaultForm = {
|
|||||||
workshop_code: null,
|
workshop_code: null,
|
||||||
ext_id: null,
|
ext_id: null,
|
||||||
is_delete: false,
|
is_delete: false,
|
||||||
is_urgent: false
|
is_urgent: false,
|
||||||
|
ghs: null
|
||||||
}
|
}
|
||||||
export default {
|
export default {
|
||||||
name: 'PdmBdWorkorder',
|
name: 'PdmBdWorkorder',
|
||||||
@@ -453,6 +472,9 @@ export default {
|
|||||||
],
|
],
|
||||||
region_code: [
|
region_code: [
|
||||||
{ required: true, message: '区域编码不能为空', trigger: 'change' }
|
{ required: true, message: '区域编码不能为空', trigger: 'change' }
|
||||||
|
],
|
||||||
|
ghs: [
|
||||||
|
{ required: true, message: '可放固化室不能为空', trigger: 'change' }
|
||||||
]
|
]
|
||||||
/* workorder_type: [
|
/* workorder_type: [
|
||||||
{ required: true, message: '工单类型不能为空', trigger: 'blur' }
|
{ required: true, message: '工单类型不能为空', trigger: 'blur' }
|
||||||
@@ -465,6 +487,7 @@ export default {
|
|||||||
workShopList: [],
|
workShopList: [],
|
||||||
regionList: [],
|
regionList: [],
|
||||||
pointList: [],
|
pointList: [],
|
||||||
|
ghsList: [],
|
||||||
regionCodeParam: null,
|
regionCodeParam: null,
|
||||||
materialDialog: false,
|
materialDialog: false,
|
||||||
fullscreenLoading: false
|
fullscreenLoading: false
|
||||||
@@ -473,6 +496,7 @@ export default {
|
|||||||
created() {
|
created() {
|
||||||
this.getWorkShopList()
|
this.getWorkShopList()
|
||||||
this.getRegionList()
|
this.getRegionList()
|
||||||
|
this.getGhsList()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
item() {
|
item() {
|
||||||
@@ -506,6 +530,16 @@ export default {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
getGhsList() { // 获取点位列表
|
||||||
|
const param = {
|
||||||
|
region_code: 'GH',
|
||||||
|
point_type: '1'
|
||||||
|
}
|
||||||
|
crudSchBasePoint.getPointList(param).then(res => {
|
||||||
|
this.ghsList = res
|
||||||
|
this.regionCodeParam = null
|
||||||
|
})
|
||||||
|
},
|
||||||
getMaterial() {
|
getMaterial() {
|
||||||
this.materialDialog = true
|
this.materialDialog = true
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user