Merge remote-tracking branch 'origin/master_merge' into master_merge
This commit is contained in:
@@ -71,7 +71,8 @@ public class MdPbPapervehicleServiceImpl extends ServiceImpl<MdPbPapervehicleMap
|
|||||||
entity.setUpdate_optname(nickName);
|
entity.setUpdate_optname(nickName);
|
||||||
entity.setUpdate_time(now);
|
entity.setUpdate_time(now);
|
||||||
|
|
||||||
mdPbPapervehicleMapper.updateById(entity);
|
int updateFlag = mdPbPapervehicleMapper.updateById(entity);
|
||||||
|
log.warn("mdPbPapervehicleMapper更新结果:" +updateFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -80,5 +80,11 @@ public class BstIvtStockingivtController {
|
|||||||
return new ResponseEntity<>(bstIvtStockingivtService.showDetail2(param), HttpStatus.OK);
|
return new ResponseEntity<>(bstIvtStockingivtService.showDetail2(param), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Log("查询bom记录")
|
||||||
|
@GetMapping("/showBom2")
|
||||||
|
public ResponseEntity<Object> showBom2(@RequestParam Map param) {
|
||||||
|
return new ResponseEntity<>(bstIvtStockingivtService.showBom2(param), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
import org.nl.b_lms.bst.ivt.papervehicle.service.dao.MdPbPapervehicle;
|
import org.nl.b_lms.bst.ivt.papervehicle.service.dao.MdPbPapervehicle;
|
||||||
import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt;
|
import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt;
|
||||||
import org.nl.b_lms.bst.ivt.stockingivt.service.dto.ShowStockVo;
|
import org.nl.b_lms.bst.ivt.stockingivt.service.dto.ShowStockVo;
|
||||||
|
import org.nl.b_lms.pdm.info.dao.PdmBiOrderbominfo;
|
||||||
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.BhTubeMovePointDto;
|
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.BhTubeMovePointDto;
|
||||||
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.BhTubePointDto;
|
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.BhTubePointDto;
|
||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
@@ -103,4 +104,6 @@ public interface IBstIvtStockingivtService extends IService<BstIvtStockingivt> {
|
|||||||
List<List<ShowStockVo>> showDetail(JSONObject param);
|
List<List<ShowStockVo>> showDetail(JSONObject param);
|
||||||
|
|
||||||
List<MdPbPapervehicle> showDetail2(Map param);
|
List<MdPbPapervehicle> showDetail2(Map param);
|
||||||
|
|
||||||
|
PdmBiOrderbominfo showBom2(Map param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ import org.nl.b_lms.bst.ivt.stockingivt.service.IBstIvtStockingivtService;
|
|||||||
import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt;
|
import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt;
|
||||||
import org.nl.b_lms.bst.ivt.stockingivt.service.dao.mapper.BstIvtStockingivtMapper;
|
import org.nl.b_lms.bst.ivt.stockingivt.service.dao.mapper.BstIvtStockingivtMapper;
|
||||||
import org.nl.b_lms.bst.ivt.stockingivt.service.dto.ShowStockVo;
|
import org.nl.b_lms.bst.ivt.stockingivt.service.dto.ShowStockVo;
|
||||||
|
import org.nl.b_lms.pdm.info.dao.PdmBiOrderbominfo;
|
||||||
|
import org.nl.b_lms.pdm.info.service.IPdmBiOrderbominfoService;
|
||||||
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant;
|
||||||
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.BhTubeMovePointDto;
|
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.BhTubeMovePointDto;
|
||||||
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.BhTubePointDto;
|
import org.nl.b_lms.sch.tasks.slitter.mapper.dto.BhTubePointDto;
|
||||||
@@ -52,6 +54,8 @@ public class BstIvtStockingivtServiceImpl extends ServiceImpl<BstIvtStockingivtM
|
|||||||
private WmsToAcsService wmsToAcsService;
|
private WmsToAcsService wmsToAcsService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private MaterialbaseService materialbaseService;
|
private MaterialbaseService materialbaseService;
|
||||||
|
@Autowired
|
||||||
|
private IPdmBiOrderbominfoService pdmBiOrderbominfoService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IPage<BstIvtStockingivt> queryAll(Map whereJson, PageQuery page) {
|
public IPage<BstIvtStockingivt> queryAll(Map whereJson, PageQuery page) {
|
||||||
@@ -351,4 +355,12 @@ public class BstIvtStockingivtServiceImpl extends ServiceImpl<BstIvtStockingivtM
|
|||||||
.orderByAsc(MdPbPapervehicle::getRow_num));
|
.orderByAsc(MdPbPapervehicle::getRow_num));
|
||||||
return papers;
|
return papers;
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public PdmBiOrderbominfo showBom2(Map param){
|
||||||
|
String mfg_order_name = String.valueOf(param.get("mfg_order_name"));
|
||||||
|
LambdaQueryWrapper<PdmBiOrderbominfo> lam = new LambdaQueryWrapper<>();
|
||||||
|
lam.eq(PdmBiOrderbominfo::getMfgOrder,mfg_order_name);
|
||||||
|
PdmBiOrderbominfo order = pdmBiOrderbominfoService.getOne(lam);
|
||||||
|
return order;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,4 +36,5 @@ public interface BstIvtPackageinfoivtMapper extends BaseMapper<BstIvtPackageinfo
|
|||||||
List<SchBaseTask> getTaskList(Set<String> pointCodes1, Set<String> pointCodes2, Set<String> pointCodes3, Set<String> pointCodes4);
|
List<SchBaseTask> getTaskList(Set<String> pointCodes1, Set<String> pointCodes2, Set<String> pointCodes3, Set<String> pointCodes4);
|
||||||
|
|
||||||
List<BstIvtPackageinfoivt> selectNoTaskPoint(@Param("pointStatus") String pointStatus, @Param("ivtStatus")String ivtStatus);
|
List<BstIvtPackageinfoivt> selectNoTaskPoint(@Param("pointStatus") String pointStatus, @Param("ivtStatus")String ivtStatus);
|
||||||
|
List<BstIvtPackageinfoivt> selectNoTargetTaskPoint(@Param("pointStatus") String pointStatus, @Param("ivtStatus")String ivtStatus);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -91,5 +91,15 @@
|
|||||||
AND t.is_delete = '0')
|
AND t.is_delete = '0')
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
|
<select id="selectNoTargetTaskPoint" resultType="org.nl.b_lms.sch.point.dao.BstIvtPackageinfoivt">
|
||||||
|
select p.*
|
||||||
|
from bst_ivt_packageinfoivt p
|
||||||
|
where point_status = #{pointStatus}
|
||||||
|
AND is_used = '1'
|
||||||
|
AND ivt_status = #{ivtStatus}
|
||||||
|
AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.task_status <![CDATA[ < ]]> '07'
|
||||||
|
and t.point_code2 = p.point_code AND t.is_delete = '0')
|
||||||
|
</select>
|
||||||
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ public interface IbstIvtPackageinfoivtService extends IService<BstIvtPackageinfo
|
|||||||
|
|
||||||
|
|
||||||
List<BstIvtPackageinfoivt> selectEmpPoints(String point_status,String ivt_status);
|
List<BstIvtPackageinfoivt> selectEmpPoints(String point_status,String ivt_status);
|
||||||
|
List<BstIvtPackageinfoivt> selectNoTargetTaskPoints(String point_status,String ivt_status);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -156,11 +156,11 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
|||||||
* @author gbx
|
* @author gbx
|
||||||
*/
|
*/
|
||||||
@SneakyThrows
|
@SneakyThrows
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public Map<String, Object> secondaryAllocationPoint(String taskCode, String actionType) {
|
public Map<String, Object> secondaryAllocationPoint(String taskCode, String actionType) {
|
||||||
JSONObject result = new JSONObject();
|
JSONObject result = new JSONObject();
|
||||||
result.put("status", HttpStatus.BAD_REQUEST.value());
|
result.put("status", HttpStatus.BAD_REQUEST.value());
|
||||||
RedissonUtils.lock(c-> {
|
RedissonUtils.lock(c-> {
|
||||||
|
try {Thread.sleep(1000);} catch (InterruptedException e) {}
|
||||||
String pointCode = "";
|
String pointCode = "";
|
||||||
String action = "";
|
String action = "";
|
||||||
switch (actionType) {
|
switch (actionType) {
|
||||||
@@ -213,12 +213,17 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
|||||||
if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货分配").equals(actionType)) {
|
if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("取货分配").equals(actionType)) {
|
||||||
return baseTask.getPoint_code1();
|
return baseTask.getPoint_code1();
|
||||||
}
|
}
|
||||||
//else if (PackageInfoIvtEnum.TASK_ACTION_TYPE.code("放货分配").equals(actionType)) {
|
|
||||||
//return baseTask.getPoint_code2();
|
|
||||||
//}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//校验是否存在行架任务
|
||||||
|
int count = taskService.count(new QueryWrapper<SchBaseTask>()
|
||||||
|
.eq("task_type", "010911")
|
||||||
|
.eq("is_delete", "0")
|
||||||
|
.lt("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||||
//检查是否满足二次分配条件
|
//检查是否满足二次分配条件
|
||||||
|
if (count>0){
|
||||||
|
throw new BadRequestException("正在执行行架任务");
|
||||||
|
}
|
||||||
checkTaskInfo(baseTask);
|
checkTaskInfo(baseTask);
|
||||||
//空载具缓存位特殊二次分配逻辑:先判断是否有执行中的行架任务或补空载具任务,如未完成,不分配点位
|
//空载具缓存位特殊二次分配逻辑:先判断是否有执行中的行架任务或补空载具任务,如未完成,不分配点位
|
||||||
if (baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")) ||
|
if (baseTask.getTask_type().equals(PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")) ||
|
||||||
@@ -1208,5 +1213,13 @@ public class BstIvtPackageinfoivtServiceImpl extends ServiceImpl<BstIvtPackagein
|
|||||||
}
|
}
|
||||||
return this.baseMapper.selectNoTaskPoint(point_status, ivt_status);
|
return this.baseMapper.selectNoTaskPoint(point_status, ivt_status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<BstIvtPackageinfoivt> selectNoTargetTaskPoints(String point_status, String ivt_status) {
|
||||||
|
if (StringUtils.isEmpty(point_status)||StringUtils.isEmpty(ivt_status)){
|
||||||
|
throw new BadRequestException("点位类型或状态不能为空");
|
||||||
|
}
|
||||||
|
return this.baseMapper.selectNoTargetTaskPoint(point_status, ivt_status);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -106,26 +106,6 @@ public class DjqToKzjhcwTask extends AbstractAcsTask {
|
|||||||
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("update_time", now).set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).eq("point_code", schBaseTask.getPoint_code2()));
|
packageinfoivtService.update(null, new UpdateWrapper<BstIvtPackageinfoivt>().set("update_time", now).set("ivt_status", PackageInfoIvtEnum.IVT_STATUS.code("空载具")).eq("point_code", schBaseTask.getPoint_code2()));
|
||||||
//3.更改任务状态为完成
|
//3.更改任务状态为完成
|
||||||
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
|
updateWrapper.set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode());
|
||||||
//4.更新并清除预分配位
|
|
||||||
exchangeTaskPoint(schBaseTask);
|
|
||||||
updateWrapper.set(SchBaseTask::getPoint_code4, "");
|
|
||||||
//5.判断是否存在任务组任务
|
|
||||||
packageinfoivtService.handleGroupTask(schBaseTask);
|
|
||||||
//6.待检区或管制区搬运空载具到空载具缓存位完毕,判断是否存在确定终点的空载具缓存位->输送线任务,存在就下发任务
|
|
||||||
// List<SchBaseTask> taskList = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
|
||||||
// //确定终点未下发
|
|
||||||
// .eq(SchBaseTask::getTask_status, TaskStatusEnum.SURE_END.getCode())
|
|
||||||
// .eq(SchBaseTask::getPoint_code2, "NBJ1002")
|
|
||||||
// .eq(SchBaseTask::getTask_type, PackageInfoIvtEnum.TASK_TYPE.code("放空(空载具缓存位->输送线)")).eq(SchBaseTask::getIs_delete, IOSEnum.IS_NOTANDYES.code("否"))
|
|
||||||
// );
|
|
||||||
// if (ObjectUtils.isNotEmpty(taskList)) {
|
|
||||||
// SchBaseTask task = taskList.get(0);
|
|
||||||
// task.setPoint_code1(schBaseTask.getPoint_code2());
|
|
||||||
// task.setTask_status(TaskStatusEnum.START_AND_POINT.getCode());
|
|
||||||
// taskService.update(task);
|
|
||||||
// //任务下发
|
|
||||||
// ssxDjwTask.immediateNotifyAcs(task.getTask_id().toString());
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
// 取消
|
// 取消
|
||||||
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) {
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ import org.nl.wms.sch.manage.TaskStatusEnum;
|
|||||||
import org.redisson.api.RLock;
|
import org.redisson.api.RLock;
|
||||||
import org.redisson.api.RedissonClient;
|
import org.redisson.api.RedissonClient;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
@@ -71,38 +74,23 @@ public class AutoSendVehicleToKzj extends Prun{
|
|||||||
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS);
|
||||||
try {
|
try {
|
||||||
if (tryLock) {
|
if (tryLock) {
|
||||||
JSONObject task = new JSONObject();
|
|
||||||
String pointCode2;
|
|
||||||
//todo 只允许2个补空任务,后期需要根据区域动态获取任务数量
|
//todo 只允许2个补空任务,后期需要根据区域动态获取任务数量
|
||||||
List<String> taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"), PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)")));
|
List<String> taskTypes = new ArrayList<>(Arrays.asList(PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)")));
|
||||||
List<SchBaseTask> existTask = taskService.getExistTasks(taskTypes);
|
List<SchBaseTask> existTask = taskService.getExistTasks(taskTypes);
|
||||||
if (existTask.size() > 1) {
|
if (existTask.size() > 1) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
List<BstIvtPackageinfoivt> kzjIvtList = packageinfoivtService.checkEndPointTask(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), PackageInfoIvtEnum.TASK_POINT_TYPE.code("空载具放货"), PackageInfoIvtEnum.SORT_TYPE.code("降序"), PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
|
List<BstIvtPackageinfoivt> empPoints = packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"));
|
||||||
//空载具缓存位预分配点
|
List<BstIvtPackageinfoivt> vehiclePoints = packageinfoivtService.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("待检区"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
|
||||||
if (ObjectUtils.isNotEmpty(kzjIvtList)) {
|
if (!CollectionUtils.isEmpty(empPoints) && !CollectionUtils.isEmpty(vehiclePoints)){
|
||||||
pointCode2 = kzjIvtList.get(0).getPoint_code();
|
JSONObject task = new JSONObject();
|
||||||
if (StringUtils.isBlank(pointCode2)) {
|
task.put("task_type", PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
|
||||||
return;
|
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配"));
|
||||||
}
|
task.put("point_code1", vehiclePoints.get(0).getPoint_code());
|
||||||
} else {
|
task.put("point_code2", packageinfoivtService.getWaitPoint(empPoints.get(0).getBlock(), empPoints.get(0).getWait_point_type()));
|
||||||
return;
|
//预占用点位
|
||||||
}
|
task.put("point_code3", empPoints.get(0).getPoint_code());
|
||||||
//存在补空的缓存位数量
|
djqToKzjhcwTask.createTask(task);
|
||||||
List<BstIvtPackageinfoivt> packageinfoivtList = packageinfoivtService.getBstIvtPackageinfoivts(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"), null,false);
|
|
||||||
task.put("vehicle_code2", PackageInfoIvtEnum.AGV_ACTION_TYPE.code("放货二次分配"));
|
|
||||||
task.put("point_code4", pointCode2);
|
|
||||||
task.put("point_code2", packageinfoivtService.getWaitPoint(kzjIvtList.get(0).getBlock(), kzjIvtList.get(0).getWait_point_type()));
|
|
||||||
if (packageinfoivtList.size() == 1) {
|
|
||||||
getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
|
|
||||||
} else {
|
|
||||||
if (existTask.size() % 2 != 0) {
|
|
||||||
getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(管制区->空载具缓存位)"));
|
|
||||||
} else {
|
|
||||||
//优先去待检区
|
|
||||||
getPointCode(task, PackageInfoIvtEnum.TASK_TYPE.code("补空(待检区->空载具缓存位)"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
log.info("待检区或管制区->空载具缓存位补空任务正在创建被锁住。");
|
log.info("待检区或管制区->空载具缓存位补空任务正在创建被锁住。");
|
||||||
|
|||||||
@@ -894,6 +894,8 @@ public class SlitterServiceImpl implements SlitterService {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public JSONObject acsToReduceTube(JSONObject param) {
|
public JSONObject acsToReduceTube(JSONObject param) {
|
||||||
log.info("扣除纸管数据的输入参数为:{}", param);
|
log.info("扣除纸管数据的输入参数为:{}", param);
|
||||||
JSONObject res = new JSONObject();
|
JSONObject res = new JSONObject();
|
||||||
@@ -922,20 +924,22 @@ public class SlitterServiceImpl implements SlitterService {
|
|||||||
.eq(MdPbPapervehicle::getRow_num, param.getString("row_num")));
|
.eq(MdPbPapervehicle::getRow_num, param.getString("row_num")));
|
||||||
if (ObjectUtil.isEmpty(mdPbPapervehicle)) {
|
if (ObjectUtil.isEmpty(mdPbPapervehicle)) {
|
||||||
log.warn("托盘:" + vehicleCode + "第" + param.getString("row_num") + "行没数据!");
|
log.warn("托盘:" + vehicleCode + "第" + param.getString("row_num") + "行没数据!");
|
||||||
return res;
|
throw new BadRequestException("托盘:" + vehicleCode + "第" + param.getString("row_num") + "行没数据!");
|
||||||
}
|
}
|
||||||
|
log.debug("更新前:" + vehicleCode + "第" + param.getString("row_num") + mdPbPapervehicle);
|
||||||
if (mdPbPapervehicle != null || mdPbPapervehicle.getQty().intValue() > 0) {
|
if (mdPbPapervehicle != null || mdPbPapervehicle.getQty().intValue() > 0) {
|
||||||
UpdateWrapper<MdPbPapervehicle> updateWrapper = new UpdateWrapper<>();
|
//数量减一
|
||||||
updateWrapper.eq("vehicle_code", vehicleCode)
|
mdPbPapervehicle.setQty(BigDecimal.valueOf(mdPbPapervehicle.getQty().intValue()-1));
|
||||||
.eq("row_num", param.getString("row_num"))
|
|
||||||
.setSql("qty=qty-1");
|
log.debug("更新后:" + vehicleCode + "第" + param.getString("row_num") + mdPbPapervehicle);
|
||||||
papervehicleService.update(updateWrapper);
|
|
||||||
// 检查更新后的 qty 是否为 0,然后删除相应的记录
|
// 检查更新后的 qty 是否为 0,然后删除相应的记录
|
||||||
QueryWrapper<MdPbPapervehicle> deleteWrapper = new QueryWrapper<>();
|
if(mdPbPapervehicle.getQty().intValue() <= 0){
|
||||||
deleteWrapper.eq("vehicle_code", vehicleCode)
|
boolean remove = papervehicleService.removeById(mdPbPapervehicle);
|
||||||
.eq("row_num", param.getString("row_num"))
|
log.debug("删除0结果:" + vehicleCode + ":" + remove);
|
||||||
.eq("qty", "0");
|
}else{
|
||||||
boolean remove = papervehicleService.remove(deleteWrapper);
|
papervehicleService.update(mdPbPapervehicle);
|
||||||
|
}
|
||||||
// todo: 如果qty=0,创建AGV送空任务,(新的task_type)、后期优化可以新增诺宝取货完成提前释放货位,任务状态变成071
|
// todo: 如果qty=0,创建AGV送空任务,(新的task_type)、后期优化可以新增诺宝取货完成提前释放货位,任务状态变成071
|
||||||
// if (remove) { // hint: 错误
|
// if (remove) { // hint: 错误
|
||||||
// // 证明删除成功,创建任务搬走
|
// // 证明删除成功,创建任务搬走
|
||||||
|
|||||||
@@ -67,4 +67,18 @@ public class MdpbBoxtypeController {
|
|||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/confirmBox")
|
||||||
|
@Log("保存bom")
|
||||||
|
public ResponseEntity<Object> confirmBox(@RequestBody JSONObject whereJson) {
|
||||||
|
iMdpbBoxtypeService.confirmBox(whereJson);
|
||||||
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/getBoxTypes")
|
||||||
|
@Log("查询木箱类型")
|
||||||
|
public ResponseEntity<Object> query(@RequestParam Map whereJson) {
|
||||||
|
return new ResponseEntity<>(iMdpbBoxtypeService.list(), HttpStatus.OK);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -50,4 +50,10 @@ public interface IMdpbBoxtypeService extends IService<MdpbBoxtype> {
|
|||||||
* @param whereJson: {需要修改的参数}
|
* @param whereJson: {需要修改的参数}
|
||||||
*/
|
*/
|
||||||
void confirmUpdate(JSONObject whereJson);
|
void confirmUpdate(JSONObject whereJson);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 一键修改
|
||||||
|
* @param whereJson: {需要修改的参数}
|
||||||
|
*/
|
||||||
|
void confirmBox(JSONObject whereJson);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,11 +9,14 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
|
import org.nl.b_lms.pdm.info.dao.PdmBiOrderbominfo;
|
||||||
|
import org.nl.b_lms.pdm.info.service.IPdmBiOrderbominfoService;
|
||||||
import org.nl.b_lms.storage_manage.database.service.IMdpbBoxtypeService;
|
import org.nl.b_lms.storage_manage.database.service.IMdpbBoxtypeService;
|
||||||
import org.nl.b_lms.storage_manage.database.service.dao.MdpbBoxtype;
|
import org.nl.b_lms.storage_manage.database.service.dao.MdpbBoxtype;
|
||||||
import org.nl.b_lms.storage_manage.database.service.dao.mapper.MdpbBoxtypeMapper;
|
import org.nl.b_lms.storage_manage.database.service.dao.mapper.MdpbBoxtypeMapper;
|
||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import org.nl.modules.common.exception.BadRequestException;
|
import org.nl.modules.common.exception.BadRequestException;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@@ -31,6 +34,8 @@ import java.util.Set;
|
|||||||
@Service
|
@Service
|
||||||
public class MdpbBoxtypeServiceImpl extends ServiceImpl<MdpbBoxtypeMapper, MdpbBoxtype> implements IMdpbBoxtypeService {
|
public class MdpbBoxtypeServiceImpl extends ServiceImpl<MdpbBoxtypeMapper, MdpbBoxtype> implements IMdpbBoxtypeService {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IPdmBiOrderbominfoService pdmBiOrderbominfoService;
|
||||||
@Override
|
@Override
|
||||||
public IPage<MdpbBoxtype> queryAll(Map whereJson, PageQuery page) {
|
public IPage<MdpbBoxtype> queryAll(Map whereJson, PageQuery page) {
|
||||||
// 查询条件
|
// 查询条件
|
||||||
@@ -81,4 +86,23 @@ public class MdpbBoxtypeServiceImpl extends ServiceImpl<MdpbBoxtypeMapper, MdpbB
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void confirmBox(JSONObject whereJson) {
|
||||||
|
if (ObjectUtil.isEmpty(whereJson.getString("mfgOrder"))) {
|
||||||
|
throw new BadRequestException("bom 订单号不能为空!");
|
||||||
|
}
|
||||||
|
if (ObjectUtil.isEmpty(whereJson.getString("productName"))) {
|
||||||
|
throw new BadRequestException("bom 木箱编码不能为空!");
|
||||||
|
}
|
||||||
|
MdpbBoxtype boxtype = this.getById(whereJson.getString("productName"));
|
||||||
|
if (ObjectUtil.isEmpty(boxtype)) {
|
||||||
|
throw new BadRequestException("木箱编码:"+whereJson.getString("productName")+"查询木箱类型失败!");
|
||||||
|
}
|
||||||
|
pdmBiOrderbominfoService.update(new UpdateWrapper<PdmBiOrderbominfo>().lambda()
|
||||||
|
.eq(PdmBiOrderbominfo::getMfgOrder,whereJson.getString("mfgOrder"))
|
||||||
|
.set(PdmBiOrderbominfo::getProductName, whereJson.getString("productName"))
|
||||||
|
.set(PdmBiOrderbominfo::getDescription, boxtype.getBox_name())
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nl.b_lms.sch.point.dao.SchBasePoint;
|
import org.nl.b_lms.sch.point.dao.SchBasePoint;
|
||||||
import org.nl.b_lms.sch.point.service.IschBasePointService;
|
import org.nl.b_lms.sch.point.service.IschBasePointService;
|
||||||
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
import org.nl.b_lms.sch.task.dao.SchBaseTask;
|
||||||
@@ -114,10 +115,12 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
|||||||
.eq("is_delete", "0")
|
.eq("is_delete", "0")
|
||||||
.orderByDesc("task_id")
|
.orderByDesc("task_id")
|
||||||
.last("limit 1"));
|
.last("limit 1"));
|
||||||
String vehicleCode2 = one.getVehicle_code2();
|
if (one!=null){
|
||||||
if (whereJson.getString("vehicle_code").equals(vehicleCode2)){
|
String vehicleCode2 = one.getVehicle_code2();
|
||||||
throw new BadRequestException("当前托盘"+whereJson.getString("vehicle_code")+"已经存在木箱入库任务"+one.getTask_code());
|
if (whereJson.getString("vehicle_code").equals(vehicleCode2)){
|
||||||
};
|
throw new BadRequestException("当前托盘"+whereJson.getString("vehicle_code")+"已经存在木箱入库任务"+one.getTask_code());
|
||||||
|
};
|
||||||
|
}
|
||||||
//查询仓库是否存在相同木箱
|
//查询仓库是否存在相同木箱
|
||||||
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + boxNo + "'").getResultJSONArray(0);
|
JSONArray stIvtStructattr = WQLObject.getWQLObject("st_ivt_structattr").query("storagevehicle_code = '" + boxNo + "'").getResultJSONArray(0);
|
||||||
if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
|
if (stIvtStructattr != null && stIvtStructattr.size() > 0) {
|
||||||
@@ -717,6 +720,11 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
|||||||
jsonParam.put("row_num", row_num);
|
jsonParam.put("row_num", row_num);
|
||||||
JSONObject jsonAttr = queryStruct(jsonParam);
|
JSONObject jsonAttr = queryStruct(jsonParam);
|
||||||
|
|
||||||
|
// 如果是移库空并且仓位为空则报错
|
||||||
|
if (ObjectUtil.isNotEmpty(block_num) && ObjectUtil.isEmpty(jsonAttr)) {
|
||||||
|
throw new BadRequestException("转库任务巷道"+block_num+"仓位不足!");
|
||||||
|
}
|
||||||
|
|
||||||
// 为空则新找巷道
|
// 为空则新找巷道
|
||||||
if (ObjectUtil.isEmpty(jsonAttr)) {
|
if (ObjectUtil.isEmpty(jsonAttr)) {
|
||||||
|
|
||||||
@@ -736,6 +744,8 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
|||||||
json.put("box_length", jsonParam.getString("box_length"));
|
json.put("box_length", jsonParam.getString("box_length"));
|
||||||
json.put("box_width", jsonParam.getString("box_width"));
|
json.put("box_width", jsonParam.getString("box_width"));
|
||||||
json.put("box_high", jsonParam.getString("box_high"));
|
json.put("box_high", jsonParam.getString("box_high"));
|
||||||
|
json.put("vehicle_type", jsonParam.getString("vehicle_type"));
|
||||||
|
json.put("height", jsonParam.getString("height"));
|
||||||
|
|
||||||
String row_num_2 = getMinRow(json);
|
String row_num_2 = getMinRow(json);
|
||||||
json.put("row_num", row_num_2);
|
json.put("row_num", row_num_2);
|
||||||
@@ -754,6 +764,51 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
|||||||
return jsonAttr;
|
return jsonAttr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同巷道移库查看库位
|
||||||
|
* @param jsonParam
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public JSONObject getMoveStruct(JSONObject jsonParam) {
|
||||||
|
// 仓位表
|
||||||
|
WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr");
|
||||||
|
/*
|
||||||
|
* 判断是否有仓位
|
||||||
|
* 判断条件:库区、仓库、是否启用、是否删除、未锁定、没有载具
|
||||||
|
*/
|
||||||
|
String block_num = jsonParam.getString("move_block_num");
|
||||||
|
if (StringUtils.isEmpty(block_num)){
|
||||||
|
throw new BadRequestException("同巷道分配库位巷道参数不能为空");
|
||||||
|
}
|
||||||
|
JSONArray structArray = attrTab.query("IFNULL(storagevehicle_code,'') = '' " +
|
||||||
|
"AND is_used = '" + IOSEnum.IS_NOTANDYES.code("是") + "' AND is_delete = '" + IOSEnum.IS_NOTANDYES.code("否") + "' " +
|
||||||
|
"AND storagevehicle_type = '" + jsonParam.getString("vehicle_type") + "'" +
|
||||||
|
"AND height = '" + jsonParam.getString("height") + "'" +
|
||||||
|
"AND lock_type = '" + IOSEnum.LOCK_TYPE.code("未锁定") + "' AND stor_id = '" + jsonParam.getString("stor_id") + "' " +
|
||||||
|
"AND sect_id = '" + jsonParam.getString("sect_id") + "' AND block_num = '" + block_num + "'").getResultJSONArray(0);
|
||||||
|
if (ObjectUtil.isEmpty(structArray)) {
|
||||||
|
notInRowList.clear();
|
||||||
|
notInBlockList.clear();
|
||||||
|
throw new BadRequestException("仓位不足!");
|
||||||
|
}
|
||||||
|
// 确定排:查看每排的木箱数量,找到数量最小的那排
|
||||||
|
jsonParam.put("block_num", block_num);
|
||||||
|
String row_num = getMinRow(jsonParam);
|
||||||
|
|
||||||
|
// 确定仓位: 找到仓位
|
||||||
|
jsonParam.put("row_num", row_num);
|
||||||
|
JSONObject jsonAttr = queryStruct(jsonParam);
|
||||||
|
|
||||||
|
// 为空则新找巷道
|
||||||
|
if (ObjectUtil.isEmpty(jsonAttr)) {
|
||||||
|
throw new BadRequestException("当前巷道"+block_num+"没有可用库位");
|
||||||
|
}
|
||||||
|
|
||||||
|
notInRowList.clear();
|
||||||
|
notInBlockList.clear();
|
||||||
|
return jsonAttr;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 确定巷道
|
* 确定巷道
|
||||||
*
|
*
|
||||||
@@ -974,6 +1029,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
|||||||
List<JSONObject> lowAttr = structAllList.stream()
|
List<JSONObject> lowAttr = structAllList.stream()
|
||||||
.filter(row -> row.getString("col_num").equals(json.getString("col_num")) &&
|
.filter(row -> row.getString("col_num").equals(json.getString("col_num")) &&
|
||||||
row.getString("layer_num").equals(json.getString("layer_num")) &&
|
row.getString("layer_num").equals(json.getString("layer_num")) &&
|
||||||
|
row.getString("row_num").equals(json.getString("row_num")) &&
|
||||||
row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅")))
|
row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("浅")))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
@@ -1002,6 +1058,7 @@ public class InBoxManageServiceImpl implements InBoxManageService {
|
|||||||
List<JSONObject> darkAttr = structAllList.stream()
|
List<JSONObject> darkAttr = structAllList.stream()
|
||||||
.filter(row -> row.getString("col_num").equals(json.getString("col_num")) &&
|
.filter(row -> row.getString("col_num").equals(json.getString("col_num")) &&
|
||||||
row.getString("layer_num").equals(json.getString("layer_num")) &&
|
row.getString("layer_num").equals(json.getString("layer_num")) &&
|
||||||
|
row.getString("row_num").equals(json.getString("row_num")) &&
|
||||||
row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("深")))
|
row.getString("zdepth").equals(IOSEnum.ZDEPTH_STRUCT.code("深")))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
|
|||||||
@@ -156,7 +156,9 @@
|
|||||||
AND attr.stor_id = 输入.stor_id
|
AND attr.stor_id = 输入.stor_id
|
||||||
AND attr.sect_id = 输入.sect_id
|
AND attr.sect_id = 输入.sect_id
|
||||||
AND attr.block_num = 输入.block_num
|
AND attr.block_num = 输入.block_num
|
||||||
AND attr.row_num = 输入.row_num
|
OPTION 输入.row_num <> ""
|
||||||
|
attr.row_num = 输入.row_num
|
||||||
|
ENDOPTION
|
||||||
AND attr.storagevehicle_type = 输入.vehicle_type
|
AND attr.storagevehicle_type = 输入.vehicle_type
|
||||||
AND attr.height = 输入.height
|
AND attr.height = 输入.height
|
||||||
order by attr.col_num DESC,attr.layer_num ASC,attr.zdepth DESC
|
order by attr.col_num DESC,attr.layer_num ASC,attr.zdepth DESC
|
||||||
@@ -187,7 +189,9 @@
|
|||||||
AND attr.stor_id = 输入.stor_id
|
AND attr.stor_id = 输入.stor_id
|
||||||
AND attr.sect_id = 输入.sect_id
|
AND attr.sect_id = 输入.sect_id
|
||||||
AND attr.block_num = 输入.block_num
|
AND attr.block_num = 输入.block_num
|
||||||
AND attr.row_num = 输入.row_num
|
OPTION 输入.row_num <> ""
|
||||||
|
attr.row_num = 输入.row_num
|
||||||
|
ENDOPTION
|
||||||
AND attr.storagevehicle_type = 输入.vehicle_type
|
AND attr.storagevehicle_type = 输入.vehicle_type
|
||||||
AND attr.height = 输入.height
|
AND attr.height = 输入.height
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ public class RedissonUtils {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}catch (Exception ex){
|
}catch (Exception ex){
|
||||||
ex.printStackTrace();
|
|
||||||
throw ex;
|
throw ex;
|
||||||
}finally {
|
}finally {
|
||||||
if (isLock && lock.isHeldByCurrentThread()){
|
if (isLock && lock.isHeldByCurrentThread()){
|
||||||
|
|||||||
@@ -1846,7 +1846,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
* 二楼到一楼,成品子卷到达一楼输送线
|
* 二楼到一楼,成品子卷到达一楼输送线
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
|
||||||
public JSONObject sendProductToFirstFloor(JSONObject whereJson) {
|
public JSONObject sendProductToFirstFloor(JSONObject whereJson) {
|
||||||
log.info("sendProductToFirstFloor被调用--------------------------:" + whereJson.toString());
|
log.info("sendProductToFirstFloor被调用--------------------------:" + whereJson.toString());
|
||||||
if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) {
|
if (StringUtils.isBlank(whereJson.getString("device_code")) || StringUtils.isBlank(whereJson.getString("material_barcode"))) {
|
||||||
@@ -1865,13 +1864,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
.eq(BstIvtPackageinfoivt::getIs_used, PackageInfoIvtEnum.IS_USED.code("启用"))
|
||||||
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
|
.eq(BstIvtPackageinfoivt::getPoint_status, PackageInfoIvtEnum.POINT_STATUS.code("满轴缓存位"))
|
||||||
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空"))
|
.eq(BstIvtPackageinfoivt::getIvt_status, PackageInfoIvtEnum.IVT_STATUS.code("空"))
|
||||||
.orderByAsc(BstIvtPackageinfoivt::getSort_seq));
|
.orderByDesc(BstIvtPackageinfoivt::getSort_seq));
|
||||||
if (CollectionUtils.isEmpty(MzPoints)){
|
if (CollectionUtils.isEmpty(MzPoints)){
|
||||||
result.put("message", "满轴位无可用位置");
|
result.put("message", "满轴位无可用位置");
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
List<BstIvtPackageinfoivt> empPoints = packageinfoivtService
|
List<BstIvtPackageinfoivt> empPoints = packageinfoivtService
|
||||||
.selectEmpPoints(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空"));
|
.selectNoTargetTaskPoints(PackageInfoIvtEnum.POINT_STATUS.code("空载具缓存位"), PackageInfoIvtEnum.IVT_STATUS.code("空载具"));
|
||||||
if (CollectionUtils.isEmpty(empPoints)){
|
if (CollectionUtils.isEmpty(empPoints)){
|
||||||
result.put("message", "空轴位无可用位置");
|
result.put("message", "空轴位无可用位置");
|
||||||
return result;
|
return result;
|
||||||
@@ -1897,6 +1896,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
|||||||
taskParam.put("is_send", true);
|
taskParam.put("is_send", true);
|
||||||
mzhcwTask.createTask(taskParam);
|
mzhcwTask.createTask(taskParam);
|
||||||
PdmProductSpecServiceImpl.doRecord(SpecEnum.XX,null,Boolean.TRUE,null,whereJson.getString("material_barcode"));
|
PdmProductSpecServiceImpl.doRecord(SpecEnum.XX,null,Boolean.TRUE,null,whereJson.getString("material_barcode"));
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
}
|
||||||
result.put("status", HttpStatus.OK.value());
|
result.put("status", HttpStatus.OK.value());
|
||||||
result.put("message", "反馈成功!");
|
result.put("message", "反馈成功!");
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
ENV = 'development'
|
ENV = 'development'
|
||||||
|
|
||||||
# 接口地址
|
# 接口地址
|
||||||
VUE_APP_BASE_API = 'http://10.1.3.91:8013'
|
VUE_APP_BASE_API = 'http://127.0.0.1:8013'
|
||||||
VUE_APP_WS_API = 'ws://10.1.3.91:8013'
|
VUE_APP_WS_API = 'ws://127.0.0.1:8013'
|
||||||
|
|
||||||
# 是否启用 babel-plugin-dynamic-import-node插件
|
# 是否启用 babel-plugin-dynamic-import-node插件
|
||||||
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
VUE_CLI_BABEL_TRANSPILE_MODULES = true
|
||||||
|
|||||||
@@ -39,5 +39,12 @@ export function showDetail2(params) {
|
|||||||
params
|
params
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
export function showBom2(params) {
|
||||||
|
return request({
|
||||||
|
url: 'api/bstIvtStockingivt/showBom2',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export default { add, edit, del, showDetail, showDetail2 }
|
export default { add, edit, del, showDetail, showDetail2, showBom2 }
|
||||||
|
|||||||
@@ -31,5 +31,18 @@ export function confirmUpdate(data) {
|
|||||||
data
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
export function getBoxTypes(params) {
|
||||||
export default { add, edit, del, confirmUpdate }
|
return request({
|
||||||
|
url: 'api/boxtype/getBoxTypes',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export function confirmBox(data) {
|
||||||
|
return request({
|
||||||
|
url: 'api/boxtype/confirmBox',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
export default { add, edit, del, confirmUpdate, getBoxTypes, confirmBox }
|
||||||
|
|||||||
@@ -488,7 +488,11 @@
|
|||||||
<el-table-column v-if="false" prop="workorder_id" label="分切计划标识" />
|
<el-table-column v-if="false" prop="workorder_id" label="分切计划标识" />
|
||||||
<el-table-column prop="status" label="状态" :formatter="formatStatusName" />
|
<el-table-column prop="status" label="状态" :formatter="formatStatusName" />
|
||||||
<el-table-column prop="order_type" label="订单类型" :formatter="formatTypeName" />
|
<el-table-column prop="order_type" label="订单类型" :formatter="formatTypeName" />
|
||||||
<el-table-column prop="mfg_order_name" label="订单号" min-width="140" show-overflow-tooltip />
|
<el-table-column prop="mfg_order_name" label="订单号" min-width="200" >
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-link type="primary" @click="toView2(scope.$index, scope.row)">{{ scope.row.mfg_order_name }}</el-link>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="container_name" label="子卷号" min-width="140" show-overflow-tooltip />
|
<el-table-column prop="container_name" label="子卷号" min-width="140" show-overflow-tooltip />
|
||||||
<el-table-column prop="parent_container_name" label="母卷号" min-width="120" show-overflow-tooltip />
|
<el-table-column prop="parent_container_name" label="母卷号" min-width="120" show-overflow-tooltip />
|
||||||
<el-table-column prop="ware_house" label="来源位置" :formatter="formatHouseName" width="120px" />
|
<el-table-column prop="ware_house" label="来源位置" :formatter="formatHouseName" width="120px" />
|
||||||
@@ -557,6 +561,7 @@
|
|||||||
<!--分页组件-->
|
<!--分页组件-->
|
||||||
<pagination />
|
<pagination />
|
||||||
</div>
|
</div>
|
||||||
|
<tube-dialog2 :dialog-show.sync="showView2" :rowmst="mstrow" @AddChanged="querytable" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -565,8 +570,8 @@ import crudSlittingproductionplan from '@/views/wms/pdm/order/slittingplan/slitt
|
|||||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||||
import rrOperation from '@crud/RR.operation'
|
import rrOperation from '@crud/RR.operation'
|
||||||
import crudOperation from '@crud/CRUD.operation'
|
import crudOperation from '@crud/CRUD.operation'
|
||||||
import udOperation from '@crud/UD.operation'
|
|
||||||
import pagination from '@crud/Pagination'
|
import pagination from '@crud/Pagination'
|
||||||
|
import TubeDialog2 from '@/views/wms/pdm/order/slittingplan/tubeDialog2.vue'
|
||||||
|
|
||||||
const defaultForm = {
|
const defaultForm = {
|
||||||
workorder_id: null,
|
workorder_id: null,
|
||||||
@@ -619,7 +624,7 @@ const defaultForm = {
|
|||||||
export default {
|
export default {
|
||||||
name: 'Slittingproductionplan',
|
name: 'Slittingproductionplan',
|
||||||
dicts: ['product_area', 'order_type', 'cut_product_status', 'ware_house', 'paper_tube_or_frp', 'IS_OR_NOT'],
|
dicts: ['product_area', 'order_type', 'cut_product_status', 'ware_house', 'paper_tube_or_frp', 'IS_OR_NOT'],
|
||||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
components: { pagination, crudOperation, rrOperation, TubeDialog2 },
|
||||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||||
cruds() {
|
cruds() {
|
||||||
return CRUD({
|
return CRUD({
|
||||||
@@ -640,6 +645,8 @@ export default {
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
permission: {},
|
permission: {},
|
||||||
|
showView2: false,
|
||||||
|
mstrow: {},
|
||||||
rules: {
|
rules: {
|
||||||
order_type: [
|
order_type: [
|
||||||
{ required: true, message: '分切订单类型不能为空', trigger: 'blur' }
|
{ required: true, message: '分切订单类型不能为空', trigger: 'blur' }
|
||||||
@@ -679,6 +686,14 @@ export default {
|
|||||||
hand() {
|
hand() {
|
||||||
this.crud.toQuery()
|
this.crud.toQuery()
|
||||||
},
|
},
|
||||||
|
toView2(index, row) {
|
||||||
|
this.showView2 = true
|
||||||
|
this.mstrow = row
|
||||||
|
},
|
||||||
|
querytable() {
|
||||||
|
this.$refs.table.clearSelection()
|
||||||
|
this.crud.toQuery()
|
||||||
|
},
|
||||||
upMaterFinish() {
|
upMaterFinish() {
|
||||||
const _selectData = this.$refs.table.selection
|
const _selectData = this.$refs.table.selection
|
||||||
const data = {
|
const data = {
|
||||||
|
|||||||
@@ -0,0 +1,131 @@
|
|||||||
|
<template>
|
||||||
|
<el-dialog
|
||||||
|
append-to-body
|
||||||
|
title="订单BOM信息"
|
||||||
|
:visible.sync="dialogVisible"
|
||||||
|
destroy-on-close
|
||||||
|
width="600px"
|
||||||
|
@close="close"
|
||||||
|
@open="open"
|
||||||
|
>
|
||||||
|
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true" :model="form" size="mini" label-width="100px" label-suffix=":">
|
||||||
|
<el-form-item label="id" prop="id">
|
||||||
|
<label slot="label">id:</label>
|
||||||
|
<el-input v-model="form.id" disabled placeholder="系统生成" clearable style="width: 300px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="工单号" prop="mfgOrder">
|
||||||
|
<label slot="label">工单号:</label>
|
||||||
|
<el-input v-model="form.mfgOrder" disabled clearable style="width: 300px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="木箱编码" prop="productName">
|
||||||
|
<label slot="label">木箱编码:</label>
|
||||||
|
<el-input v-model="form.productName" disabled clearable style="width: 300px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="木箱描述" prop="description">
|
||||||
|
<el-select
|
||||||
|
v-model="form.description"
|
||||||
|
placeholder="木箱描述"
|
||||||
|
style="width: 400px"
|
||||||
|
class="filter-item"
|
||||||
|
clearable
|
||||||
|
filterable
|
||||||
|
@change="hand"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in typelist"
|
||||||
|
:key="item.box_type"
|
||||||
|
:label="item.box_name"
|
||||||
|
:value="item.box_type"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="管芯编码" prop="carrierName">
|
||||||
|
<label slot="label">管芯编码:</label>
|
||||||
|
<el-input v-model="form.carrierName" disabled clearable style="width: 300px" />
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="管芯描述" prop="carrierDescription">
|
||||||
|
<label slot="label">管芯描述:</label>
|
||||||
|
<el-input v-model="form.carrierDescription" disabled clearable style="width: 300px" />
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<span slot="footer" class="dialog-footer">
|
||||||
|
<el-button @click="close">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="submit">保 存</el-button>
|
||||||
|
</span>
|
||||||
|
</el-dialog>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import crudBstIvtStockingivt from '@/views/b_lms/bst/ivt/stockingivt/bstIvtStockingivt'
|
||||||
|
import crudBoxtype from '@/views/wms/basedata/st/boxType/boxtype'
|
||||||
|
import CRUD, { crud } from '@crud/crud'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'TubeDialog2',
|
||||||
|
components: {},
|
||||||
|
mixins: [crud()],
|
||||||
|
props: {
|
||||||
|
dialogShow: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
},
|
||||||
|
rowmst: {
|
||||||
|
type: Object
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
dialogVisible: false,
|
||||||
|
typelist: [],
|
||||||
|
form: {},
|
||||||
|
row: {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
dialogShow: {
|
||||||
|
handler(newValue) {
|
||||||
|
this.dialogVisible = newValue
|
||||||
|
}
|
||||||
|
},
|
||||||
|
rowmst: {
|
||||||
|
handler(newValue) {
|
||||||
|
this.row = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
open() {
|
||||||
|
this.queryTableDtl()
|
||||||
|
this.getBoxTypes()
|
||||||
|
},
|
||||||
|
hand(value) {
|
||||||
|
this.form.productName = value
|
||||||
|
},
|
||||||
|
close() {
|
||||||
|
this.$emit('update:dialogShow', false)
|
||||||
|
this.form = {}
|
||||||
|
this.$emit('AddChanged')
|
||||||
|
},
|
||||||
|
getBoxTypes() {
|
||||||
|
crudBoxtype.getBoxTypes().then(res => {
|
||||||
|
this.typelist = res
|
||||||
|
})
|
||||||
|
},
|
||||||
|
submit() {
|
||||||
|
crudBoxtype.confirmBox(this.form).then(res => {
|
||||||
|
this.typelist = res
|
||||||
|
this.crud.notify('保存成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||||
|
this.close()
|
||||||
|
})
|
||||||
|
},
|
||||||
|
queryTableDtl() {
|
||||||
|
crudBstIvtStockingivt.showBom2({ 'mfg_order_name': this.row.mfg_order_name }).then(res => {
|
||||||
|
this.form = res
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user