add:新增需求
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
package org.nl.wms.basedata_manage.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.nl.common.base.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.logging.annotation.Log;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.IStockManageService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@RequestMapping("/api/stockManage")
|
||||
public class StockManageController {
|
||||
|
||||
@Resource
|
||||
private final IStockManageService stockManageService;
|
||||
@Resource
|
||||
private final IStructattrService structattrService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询库存管理")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
|
||||
return new ResponseEntity<>(TableDataInfo.build(stockManageService.queryAll(whereJson, page)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/updateLock")
|
||||
@Log("库存管理修改仓位锁定类型")
|
||||
public ResponseEntity<Object> updateLock(@RequestBody List<JSONObject> updateAttrList) {
|
||||
if (updateAttrList == null || updateAttrList.isEmpty()) {
|
||||
throw new BadRequestException("请选择需要操作的库存数据");
|
||||
}
|
||||
String targetLockType = updateAttrList.get(0).getString("lock_type");
|
||||
Set<String> structCodes = updateAttrList.stream()
|
||||
.map(row -> row.getString("struct_code"))
|
||||
.filter(code -> code != null && !code.isEmpty())
|
||||
.collect(Collectors.toSet());
|
||||
List<Structattr> attrs = structattrService.list(new QueryWrapper<Structattr>().lambda()
|
||||
.in(Structattr::getStruct_code, structCodes));
|
||||
if ("99".equals(targetLockType)) {
|
||||
List<String> invalidCodes = attrs.stream()
|
||||
.filter(row -> row.getLock_type() != null && !"0".equals(row.getLock_type()))
|
||||
.map(Structattr::getStruct_code)
|
||||
.collect(Collectors.toList());
|
||||
if (!invalidCodes.isEmpty()) {
|
||||
throw new BadRequestException("仓位已锁定,不能重复锁定:" + String.join("、", invalidCodes));
|
||||
}
|
||||
} else if ("0".equals(targetLockType)) {
|
||||
List<String> invalidCodes = attrs.stream()
|
||||
.filter(row -> !"99".equals(row.getLock_type()))
|
||||
.map(Structattr::getStruct_code)
|
||||
.collect(Collectors.toList());
|
||||
if (!invalidCodes.isEmpty()) {
|
||||
throw new BadRequestException("仅其它锁仓位允许解锁:" + String.join("、", invalidCodes));
|
||||
}
|
||||
}
|
||||
Map<String, Structattr> attrMap = attrs.stream().collect(Collectors.toMap(Structattr::getStruct_code, row -> row));
|
||||
for (JSONObject row : updateAttrList) {
|
||||
Structattr attr = attrMap.get(row.getString("struct_code"));
|
||||
if (attr == null) {
|
||||
continue;
|
||||
}
|
||||
attr.setLock_type(row.getString("lock_type"));
|
||||
attr.setRemark(row.getString("remark"));
|
||||
structattrService.updateById(attr);
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
@@ -19,6 +19,7 @@ import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -73,4 +74,11 @@ public class StructattrController {
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@PostMapping("/updateLock")
|
||||
@Log("修改仓位锁定类型")
|
||||
public ResponseEntity<Object> updateLock(@RequestBody List<JSONObject> updateAttrList) {
|
||||
structattrService.updateLock(updateAttrList);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package org.nl.wms.basedata_manage.service;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface IStockManageService extends IService<MdPbStoragevehicleext> {
|
||||
|
||||
IPage<JSONObject> queryAll(Map whereJson, PageQuery page);
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package org.nl.wms.basedata_manage.service.dao.mapper;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public interface StockManageMapper extends BaseMapper<MdPbStoragevehicleext> {
|
||||
|
||||
IPage<JSONObject> queryAllByPage(Page<JSONObject> page, @Param("param") Map whereJson);
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
<?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.basedata_manage.service.dao.mapper.StockManageMapper">
|
||||
|
||||
<select id="queryAllByPage" resultType="com.alibaba.fastjson.JSONObject">
|
||||
SELECT DISTINCT
|
||||
ext.group_id AS storagevehicleext_id,
|
||||
ext.storagevehicle_code,
|
||||
ext.pcsn,
|
||||
ext.qty_unit_name,
|
||||
ext.qty,
|
||||
ext.frozen_qty,
|
||||
attr.lock_type,
|
||||
attr.remark,
|
||||
ext.create_time,
|
||||
ext.supp_code,
|
||||
ext.supp_name,
|
||||
attr.struct_code,
|
||||
attr.struct_name,
|
||||
attr.stor_name,
|
||||
attr.sect_name,
|
||||
mater.material_code,
|
||||
mater.material_name
|
||||
FROM
|
||||
md_pb_groupplate ext
|
||||
INNER JOIN st_ivt_structattr attr ON ext.storagevehicle_code = attr.storagevehicle_code
|
||||
INNER JOIN md_me_materialbase mater ON mater.material_id = ext.material_id
|
||||
<where>
|
||||
1 = 1
|
||||
AND ext.`status` = '02'
|
||||
AND attr.occupancy_state = 3
|
||||
<if test="param.stor_id != null and param.stor_id != ''">
|
||||
AND attr.stor_id = #{param.stor_id}
|
||||
</if>
|
||||
<if test="param.sect_id != null and param.sect_id != ''">
|
||||
AND attr.sect_id = #{param.sect_id}
|
||||
</if>
|
||||
<if test="param.sect_code != null and param.sect_code != ''">
|
||||
AND attr.sect_code = #{param.sect_code}
|
||||
</if>
|
||||
<if test="param.struct_code != null and param.struct_code != ''">
|
||||
AND (attr.struct_code LIKE #{param.struct_code} OR attr.struct_name LIKE #{param.struct_code})
|
||||
</if>
|
||||
<if test="param.material_code != null and param.material_code != ''">
|
||||
AND (mater.material_code LIKE CONCAT('%', #{param.material_code}, '%') OR
|
||||
mater.material_name LIKE CONCAT('%', #{param.material_code}, '%'))
|
||||
</if>
|
||||
<if test="param.pcsn != null and param.pcsn != ''">
|
||||
AND ext.pcsn LIKE #{param.pcsn}
|
||||
</if>
|
||||
<if test="param.storagevehicle_code != null and param.storagevehicle_code != ''">
|
||||
AND ext.storagevehicle_code LIKE CONCAT('%', #{param.storagevehicle_code}, '%')
|
||||
</if>
|
||||
<if test="param.is_lock != null and param.is_lock != ''">
|
||||
<choose>
|
||||
<when test="param.is_lock == '0'">
|
||||
AND IFNULL(attr.lock_type, '0') = '0'
|
||||
</when>
|
||||
<when test="param.is_lock == '1'">
|
||||
AND IFNULL(attr.lock_type, '0') != '0'
|
||||
</when>
|
||||
</choose>
|
||||
</if>
|
||||
AND 0 = (
|
||||
SELECT COUNT(*)
|
||||
FROM sch_base_task t
|
||||
WHERE t.task_status <![CDATA[ < ]]> '5'
|
||||
AND t.is_delete = '0'
|
||||
AND (t.vehicle_code = ext.storagevehicle_code OR t.vehicle_code2 = ext.storagevehicle_code)
|
||||
)
|
||||
</where>
|
||||
ORDER BY ext.create_time DESC
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -0,0 +1,22 @@
|
||||
package org.nl.wms.basedata_manage.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.basedata_manage.service.IStockManageService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.StockManageMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class StockManageServiceImpl extends ServiceImpl<StockManageMapper, MdPbStoragevehicleext> implements IStockManageService {
|
||||
|
||||
@Override
|
||||
public IPage<JSONObject> queryAll(Map whereJson, PageQuery page) {
|
||||
return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()), whereJson);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.decision_manage.service.strategyConfig.decisioner.impl.diy;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -11,6 +12,8 @@ import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.decision_manage.service.strategyConfig.decisioner.Decisioner;
|
||||
import org.nl.wms.sch_manage.enums.StatusEnum;
|
||||
import org.nl.wms.system_manage.service.param.ISysParamService;
|
||||
import org.nl.wms.system_manage.service.param.dao.Param;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -34,6 +37,9 @@ public class UnpackingRuleHandler extends Decisioner<Structattr, JSONObject> {
|
||||
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService;
|
||||
@Resource
|
||||
private IOStorInvDisMapper disMapper;
|
||||
@Resource
|
||||
private ISysParamService paramService;
|
||||
|
||||
@Override
|
||||
public List<Structattr> handler(List<Structattr> list, JSONObject param) {
|
||||
IOStorInvDis dis = disMapper.selectById(param.getString("dis_id"));
|
||||
@@ -73,19 +79,52 @@ public class UnpackingRuleHandler extends Decisioner<Structattr, JSONObject> {
|
||||
}
|
||||
return outPoints;
|
||||
} else {
|
||||
// 获取仓库中对应托盘类型的可出的空桶点位
|
||||
List<Structattr> outPoints = iStructattrService.list(new LambdaQueryWrapper<Structattr>()
|
||||
.eq(Structattr::getOccupancy_state, 2)
|
||||
.eq(Structattr::getStoragevehicle_type, vinfo.getStoragevehicle_type())
|
||||
.eq(Structattr::getLock_type, "0")
|
||||
.eq(Structattr::getSect_code, param.getString("sect_code"))
|
||||
.eq(Structattr::getStor_id, param.getString("stor_code"))
|
||||
.isNotNull(Structattr::getStoragevehicle_code)
|
||||
.isNull(Structattr::getTask_code));
|
||||
if (outPoints.size() == 0) {
|
||||
throw new BadRequestException("当前出库策略:解包入库,库存分配失败,失败原因:料桶缓存库无空桶!");
|
||||
List<Structattr> outPoints;
|
||||
if (requiresEmptyBucketForUnpacking()) {
|
||||
// 只有走 JbDownAgvTask 的场景才要求目标仓位已存在同类型空桶。
|
||||
outPoints = iStructattrService.list(new LambdaQueryWrapper<Structattr>()
|
||||
.eq(Structattr::getOccupancy_state, 2)
|
||||
.eq(Structattr::getStoragevehicle_type, vinfo.getStoragevehicle_type())
|
||||
.eq(Structattr::getLock_type, "0")
|
||||
.eq(Structattr::getSect_code, param.getString("sect_code"))
|
||||
.eq(Structattr::getStor_id, param.getString("stor_code"))
|
||||
.isNotNull(Structattr::getStoragevehicle_code)
|
||||
.isNull(Structattr::getTask_code));
|
||||
if (outPoints.size() == 0) {
|
||||
throw new BadRequestException("当前出库策略:解包入库,库存分配失败,失败原因:料桶缓存库无空桶!");
|
||||
}
|
||||
} else {
|
||||
// 走其它 AGV 分支时不需要空桶,直接找可用空位即可。
|
||||
outPoints = iStructattrService.list(new LambdaQueryWrapper<Structattr>()
|
||||
.eq(Structattr::getOccupancy_state, 1)
|
||||
.eq(Structattr::getLock_type, "0")
|
||||
.eq(Structattr::getSect_code, param.getString("sect_code"))
|
||||
.eq(Structattr::getStor_id, param.getString("stor_code"))
|
||||
.isNull(Structattr::getStoragevehicle_code)
|
||||
.isNull(Structattr::getTask_code));
|
||||
if (outPoints.size() == 0) {
|
||||
throw new BadRequestException("当前出库策略:解包入库,库存分配失败,失败原因:料桶缓存库无空位!");
|
||||
}
|
||||
}
|
||||
return outPoints;
|
||||
}
|
||||
}
|
||||
|
||||
private boolean requiresEmptyBucketForUnpacking() {
|
||||
String openCbj = getBinaryParamStrict("is_open_cbj");
|
||||
String openUnsealing = getBinaryParamStrict("is_open_unsealing");
|
||||
return "1".equals(openCbj) && "1".equals(openUnsealing);
|
||||
}
|
||||
|
||||
private String getBinaryParamStrict(String code) {
|
||||
Param sysParam = paramService.findByCode(code);
|
||||
if (ObjectUtil.isEmpty(sysParam) || StrUtil.isBlank(sysParam.getValue())) {
|
||||
throw new BadRequestException("系统参数配置错误");
|
||||
}
|
||||
String value = StrUtil.trim(sysParam.getValue());
|
||||
if (!"0".equals(value) && !"1".equals(value)) {
|
||||
throw new BadRequestException("系统参数配置错误");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -268,6 +268,10 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
table.put("material_name", materialbase.getMaterial_name());
|
||||
table.put("material_spec", materialbase.getMaterial_spec());
|
||||
String invId = outBillService.insertDtl(insertInvObj);
|
||||
JSONObject auditParam = new JSONObject();
|
||||
auditParam.put("iostorinv_id", invId);
|
||||
auditParam.put("audit_result", 1);
|
||||
outBillService.audit(auditParam);
|
||||
// 调用手工分配
|
||||
JSONObject param = new JSONObject();
|
||||
JSONObject row = new JSONObject();
|
||||
@@ -394,6 +398,10 @@ public class MesToWmsServiceImpl implements MesToWmsService {
|
||||
table.put("material_name", materialbase.getMaterial_name());
|
||||
table.put("material_spec", materialbase.getMaterial_spec());
|
||||
String invId = outBillService.insertDtl(insertInvObj);
|
||||
JSONObject auditParam = new JSONObject();
|
||||
auditParam.put("iostorinv_id", invId);
|
||||
auditParam.put("audit_result", 1);
|
||||
outBillService.audit(auditParam);
|
||||
// 调用手工分配
|
||||
JSONObject param = new JSONObject();
|
||||
JSONObject row = new JSONObject();
|
||||
|
||||
@@ -230,6 +230,10 @@ public class PdaJBServiceImpl implements PdaJBService {
|
||||
table.put("material_name", materialbase.getMaterial_name());
|
||||
table.put("material_spec", materialbase.getMaterial_spec());
|
||||
String invId = outBillService.insertDtl(insertInvObj);
|
||||
JSONObject auditParam = new JSONObject();
|
||||
auditParam.put("iostorinv_id", invId);
|
||||
auditParam.put("audit_result", 1);
|
||||
outBillService.audit(auditParam);
|
||||
// 调用手工分配
|
||||
JSONObject param = new JSONObject();
|
||||
JSONObject row = new JSONObject();
|
||||
@@ -446,7 +450,7 @@ public class PdaJBServiceImpl implements PdaJBService {
|
||||
List<SchBaseTask> list = taskService.list(new LambdaQueryWrapper<SchBaseTask>()
|
||||
.lt(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())
|
||||
.eq(SchBaseTask::getIs_delete, false)
|
||||
.in(SchBaseTask::getConfig_code, Arrays.asList("JbDownAgvTask", "JbDownCloseUnsealingAgvTask", "JbDownManualTask"))
|
||||
.in(SchBaseTask::getConfig_code, Arrays.asList("JbDownAgvTask", "JbDownCloseUnsealingAgvTask", "JbDownCloseCbjAgvTask", "JbDownManualTask"))
|
||||
.and(ll -> ll.like(SchBaseTask::getPoint_code1, taskPointCode).or()
|
||||
.like(SchBaseTask::getPoint_code2, taskPointCode).or()
|
||||
.like(SchBaseTask::getPoint_code3, taskPointCode).or()
|
||||
|
||||
@@ -91,6 +91,8 @@ public class PdmBdWorkorder implements Serializable {
|
||||
|
||||
private String ext_data;
|
||||
|
||||
private String remark;
|
||||
|
||||
private Boolean is_delete;
|
||||
|
||||
private String create_id;
|
||||
@@ -121,4 +123,7 @@ public class PdmBdWorkorder implements Serializable {
|
||||
|
||||
@TableField(exist = false)
|
||||
private String material_spec;
|
||||
|
||||
@TableField(exist = false)
|
||||
private Integer audit_result;
|
||||
}
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
LEFT JOIN md_me_materialbase mm ON mm.material_id = mg.material_id
|
||||
WHERE mg.`status` = '02' AND mg.frozen_qty = 0 AND IFNULL(mg.storagevehicle_code,'') <![CDATA[ <> ]]> ''
|
||||
AND IFNULL(ss.struct_code,'') <![CDATA[ <> ]]> ''
|
||||
AND IFNULL(ss.lock_type, '0') = '0'
|
||||
AND 0 = (SELECT COUNT(*) FROM pdm_bd_workorder po WHERE po.raw_material_code = mg.storagevehicle_code AND po.workorder_status <![CDATA[ <> ]]> '5')
|
||||
<if test="query.stor_id != null and query.stor_id != ''">
|
||||
AND ss.stor_id = #{query.stor_id}
|
||||
@@ -67,6 +68,7 @@
|
||||
LEFT JOIN md_me_materialbase mm ON mm.material_id = mg.material_id
|
||||
WHERE mg.`status` = '02' AND mg.frozen_qty = 0 AND IFNULL(mg.storagevehicle_code,'') <![CDATA[ <> ]]> ''
|
||||
AND IFNULL(ss.struct_code,'') <![CDATA[ <> ]]> ''
|
||||
AND IFNULL(ss.lock_type, '0') = '0'
|
||||
AND 0 = (SELECT COUNT(*) FROM pdm_bd_workorder po WHERE po.raw_material_code = mg.storagevehicle_code AND po.workorder_status <![CDATA[ <> ]]> '5')
|
||||
<if test="query.stor_id != null and query.stor_id != ''">
|
||||
AND ss.stor_id = #{query.stor_id}
|
||||
|
||||
@@ -144,6 +144,11 @@ public class PdmBdWorkorderDto implements Serializable {
|
||||
*/
|
||||
private String ext_data;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.pm_manage.service.impl;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
@@ -210,7 +211,17 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
||||
if (!WorkOrderStatusEnum.UNPRODUCED.getCode().equals(order.getWorkorder_status())) {
|
||||
throw new BadRequestException("仅状态为1的工单允许审核!");
|
||||
}
|
||||
order.setWorkorder_status(WorkOrderStatusEnum.ISSUED.getCode());
|
||||
Integer auditResult = entity.getAudit_result();
|
||||
if (auditResult == null || (auditResult != 0 && auditResult != 1)) {
|
||||
throw new BadRequestException("审核结果只能为通过(1)或不通过(0)!");
|
||||
}
|
||||
if (auditResult == 0 && StrUtil.isBlank(entity.getRemark())) {
|
||||
throw new BadRequestException("审核不通过时原因不能为空!");
|
||||
}
|
||||
order.setWorkorder_status(auditResult == 1
|
||||
? WorkOrderStatusEnum.ISSUED.getCode()
|
||||
: WorkOrderStatusEnum.CANCELED.getCode());
|
||||
order.setRemark(entity.getRemark());
|
||||
order.setAudit_id(SecurityUtils.getCurrentUserId());
|
||||
order.setAudit_name(SecurityUtils.getCurrentNickName());
|
||||
order.setAudit_time(DateUtil.now());
|
||||
|
||||
@@ -117,16 +117,15 @@ public class BackInManualTask extends AbstractTask {
|
||||
inBillService.taskFinish(taskObj);
|
||||
iStructattrService.update(new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getStoragevehicle_type, "")
|
||||
.set(Structattr::getTask_code, null)
|
||||
.set(Structattr::getOccupancy_state, "3")
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")));
|
||||
iSchBasePointService.update(new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getIng_task_code, null)
|
||||
.set(SchBasePoint::getPoint_status, "1")
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getVehicle_type, null)
|
||||
.set(SchBasePoint::getVehicle_qty, 0)
|
||||
.set(SchBasePoint::getIos_id, null));
|
||||
|
||||
taskObj.setRemark("已完成");
|
||||
@@ -146,7 +145,6 @@ public class BackInManualTask extends AbstractTask {
|
||||
public void cancelTask(SchBaseTask taskObj) {
|
||||
iStructattrService.update(new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_type, "")
|
||||
.set(Structattr::getTask_code, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")));
|
||||
|
||||
|
||||
@@ -169,10 +169,7 @@ public class BackInTask extends AbstractTask {
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getStoragevehicle_type, "")
|
||||
.set(Structattr::getTask_code, null)
|
||||
.set(Structattr::getOccupancy_state, "3")
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新起点
|
||||
@@ -182,6 +179,8 @@ public class BackInTask extends AbstractTask {
|
||||
.set(SchBasePoint::getIng_task_code, null)
|
||||
.set(SchBasePoint::getPoint_status, "1")
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getVehicle_type, null)
|
||||
.set(SchBasePoint::getVehicle_qty, 0)
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
);
|
||||
|
||||
@@ -206,7 +205,6 @@ public class BackInTask extends AbstractTask {
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_type, "")
|
||||
.set(Structattr::getTask_code, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
|
||||
@@ -8,7 +8,9 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
@@ -52,6 +54,9 @@ public class PdaPointTask extends AbstractTask {
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleinfoService storagevehicleinfoService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
@@ -141,11 +146,14 @@ public class PdaPointTask extends AbstractTask {
|
||||
|
||||
@Transactional
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
MdPbStoragevehicleinfo storagevehicleinfo = storagevehicleinfoService.getByCode(taskObj.getVehicle_code());
|
||||
// 更新起点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getVehicle_type, null)
|
||||
.set(SchBasePoint::getVehicle_qty, 0)
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("无货"))
|
||||
);
|
||||
@@ -153,6 +161,9 @@ public class PdaPointTask extends AbstractTask {
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getStoragevehicle_type, null)
|
||||
.set(Structattr::getStoragevehicle_qty, 0)
|
||||
.set(Structattr::getOccupancy_state, 1)
|
||||
.set(Structattr::getTask_code, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
@@ -161,6 +172,8 @@ public class PdaPointTask extends AbstractTask {
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code())
|
||||
.set(SchBasePoint::getVehicle_type, ObjectUtil.isNotEmpty(storagevehicleinfo) ? storagevehicleinfo.getStoragevehicle_type() : null)
|
||||
.set(SchBasePoint::getVehicle_qty, 1)
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("有货"))
|
||||
);
|
||||
@@ -168,6 +181,9 @@ public class PdaPointTask extends AbstractTask {
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
|
||||
.set(Structattr::getStoragevehicle_type, ObjectUtil.isNotEmpty(storagevehicleinfo) ? storagevehicleinfo.getStoragevehicle_type() : null)
|
||||
.set(Structattr::getStoragevehicle_qty, 1)
|
||||
.set(Structattr::getOccupancy_state, 3)
|
||||
.set(Structattr::getTask_code, null)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
@@ -183,22 +199,36 @@ public class PdaPointTask extends AbstractTask {
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getVehicle_type, null)
|
||||
.set(SchBasePoint::getVehicle_qty, 0)
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("无货"))
|
||||
);
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code1())
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getStoragevehicle_type, null)
|
||||
.set(Structattr::getStoragevehicle_qty, 0)
|
||||
.set(Structattr::getOccupancy_state, 1)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新终点
|
||||
iSchBasePointService.update(
|
||||
new UpdateWrapper<SchBasePoint>().lambda()
|
||||
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code2())
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getVehicle_type, null)
|
||||
.set(SchBasePoint::getVehicle_qty, 0)
|
||||
.set(SchBasePoint::getPoint_status, IOSEnum.POINT_STATUS.code("无货"))
|
||||
);
|
||||
iStructattrService.update(
|
||||
new UpdateWrapper<Structattr>().lambda()
|
||||
.eq(Structattr::getStruct_code, taskObj.getPoint_code2())
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getStoragevehicle_type, null)
|
||||
.set(Structattr::getStoragevehicle_qty, 0)
|
||||
.set(Structattr::getOccupancy_state, 1)
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
);
|
||||
// 更新任务
|
||||
|
||||
@@ -9,7 +9,9 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.wms.basedata_manage.enums.BaseDataEnum;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
@@ -64,6 +66,9 @@ public class StOutTask extends AbstractTask {
|
||||
@Autowired
|
||||
private IMdPbGroupplateService iMdPbGroupplateService;
|
||||
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleinfoService storagevehicleinfoService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject json) {
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
@@ -157,6 +162,7 @@ public class StOutTask extends AbstractTask {
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj) {
|
||||
MdPbStoragevehicleinfo storagevehicleinfo = storagevehicleinfoService.getByCode(taskObj.getVehicle_code());
|
||||
// 任务完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setRemark("已完成");
|
||||
@@ -170,6 +176,8 @@ public class StOutTask extends AbstractTask {
|
||||
.set(SchBasePoint::getIng_task_code, null)
|
||||
.set(SchBasePoint::getPoint_status,"3")
|
||||
.set(SchBasePoint::getVehicle_code, taskObj.getVehicle_code())
|
||||
.set(SchBasePoint::getVehicle_type, ObjectUtil.isNotEmpty(storagevehicleinfo) ? storagevehicleinfo.getStoragevehicle_type() : null)
|
||||
.set(SchBasePoint::getVehicle_qty, 1)
|
||||
.set(SchBasePoint::getIos_id, null)
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,279 @@
|
||||
package org.nl.wms.sch_manage.service.util.tasks.jb;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.sch_manage.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.sch_manage.enums.TaskStatus;
|
||||
import org.nl.wms.sch_manage.service.ISchBasePointService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskconfigService;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch_manage.service.dao.SchBaseTaskconfig;
|
||||
import org.nl.wms.sch_manage.service.util.AbstractTask;
|
||||
import org.nl.wms.sch_manage.service.util.AcsTaskDto;
|
||||
import org.nl.wms.sch_manage.service.util.TaskUtils;
|
||||
import org.nl.wms.warehouse_manage.enums.IOSEnum;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.IInBillService;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInv;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDis;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.IOStorInvDtl;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDisMapper;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvDtlMapper;
|
||||
import org.nl.wms.warehouse_manage.inAndOut.service.dao.mapper.IOStorInvMapper;
|
||||
import org.nl.wms.warehouse_manage.service.IMdPbGroupplateService;
|
||||
import org.nl.wms.warehouse_manage.service.dao.GroupPlate;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 解包下料-屏蔽解包机 AGV 任务
|
||||
*/
|
||||
@Slf4j
|
||||
@Component("JbDownCloseCbjAgvTask")
|
||||
public class JbDownCloseCbjAgvTask extends AbstractTask {
|
||||
@Resource
|
||||
private ISchBaseTaskService taskService;
|
||||
@Resource
|
||||
private IInBillService inBillService;
|
||||
@Resource
|
||||
private IOStorInvDisMapper ioStorInvDisMapper;
|
||||
@Resource
|
||||
private ISchBasePointService pointService;
|
||||
@Resource
|
||||
private ISchBaseTaskconfigService taskconfigService;
|
||||
@Resource
|
||||
private IStructattrService structattrService;
|
||||
@Resource
|
||||
private IOStorInvMapper ioStorInvMapper;
|
||||
@Resource
|
||||
private IOStorInvDtlMapper ioStorInvDtlMapper;
|
||||
@Resource
|
||||
private IMdPbGroupplateService groupplateService;
|
||||
|
||||
@Override
|
||||
public String create(JSONObject param) {
|
||||
JSONArray tasks = param.getJSONArray("tasks");
|
||||
List<SchBaseTask> batchTask = new ArrayList<>();
|
||||
for (int i = 0; i < tasks.size(); i++) {
|
||||
JSONObject json = tasks.getJSONObject(i);
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(json.getString("TaskCode"));
|
||||
task.setTask_status(TaskStatus.CREATED.getCode());
|
||||
task.setConfig_code(json.getString("task_type"));
|
||||
task.setPoint_code1(json.getString("point_code1"));
|
||||
task.setPoint_code2(json.getString("point_code2"));
|
||||
task.setPoint_code3(json.getString("point_code3"));
|
||||
task.setPoint_code4(json.getString("point_code4"));
|
||||
task.setVehicle_code(json.getString("vehicle_code"));
|
||||
task.setVehicle_code2(json.getString("vehicle_code2"));
|
||||
task.setVehicle_type(json.getString("vehicle_type"));
|
||||
task.setGroup_id(json.getString("group_id"));
|
||||
task.setTask_group_id(json.getString("task_group_id"));
|
||||
task.setTask_group_seq(json.getBigDecimal("task_group_seq"));
|
||||
task.setRequest_param(json.toString());
|
||||
task.setPriority(json.getString("Priority"));
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(DateUtil.now());
|
||||
batchTask.add(task);
|
||||
}
|
||||
taskService.saveBatch(batchTask);
|
||||
return batchTask.get(batchTask.size() - 1).getTask_id();
|
||||
}
|
||||
|
||||
@Override
|
||||
public AcsTaskDto sendAcsParam(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
SchBaseTaskconfig taskconfig = taskconfigService.getTaskByConfigCode(taskDao.getConfig_code());
|
||||
JSONObject object = JSONObject.parseObject(taskDao.getRequest_param());
|
||||
|
||||
AcsTaskDto acsTaskDto = new AcsTaskDto();
|
||||
acsTaskDto.setExt_task_uuid(taskDao.getTask_id());
|
||||
acsTaskDto.setTask_code(taskDao.getTask_code());
|
||||
acsTaskDto.setStart_device_code(taskDao.getPoint_code1());
|
||||
acsTaskDto.setNext_device_code(taskDao.getPoint_code2());
|
||||
acsTaskDto.setAgv_system_type(normalizeAgvSystemType("2"));
|
||||
acsTaskDto.setPriority(taskDao.getPriority());
|
||||
acsTaskDto.setTask_type(taskconfig.getTask_type());
|
||||
acsTaskDto.setTruss_type(object.getString("truss_type"));
|
||||
acsTaskDto.setInteraction_json(new JSONObject().fluentPut("have_lid", object.getString("have_lid")));
|
||||
fillCommonAcsTaskFields(taskDao, acsTaskDto);
|
||||
acsTaskDto.setVehicle_code2(null);
|
||||
return acsTaskDto;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateStatus(String task_code, TaskStatus status) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) {
|
||||
throw new BadRequestException("该任务已完成!");
|
||||
}
|
||||
if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) {
|
||||
throw new BadRequestException("该任务已取消!");
|
||||
}
|
||||
if (status.equals(TaskStatus.EXECUTING)) {
|
||||
taskObj.setTask_status(TaskStatus.EXECUTING.getCode());
|
||||
taskObj.setRemark("执行中");
|
||||
TaskUtils.setUpdateByAcs(taskObj);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
if (status.equals(TaskStatus.FINISHED)) {
|
||||
this.finishTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
|
||||
}
|
||||
if (status.equals(TaskStatus.CANCELED)) {
|
||||
this.cancelTask(taskObj, TaskFinishedTypeEnum.AUTO_ACS);
|
||||
}
|
||||
}
|
||||
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
List<IOStorInvDis> disList = ioStorInvDisMapper.selectList(new LambdaQueryWrapper<IOStorInvDis>()
|
||||
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id()));
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark("已取消");
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
clearPoint(taskObj.getPoint_code1());
|
||||
unlockTargetStruct(taskObj.getPoint_code2());
|
||||
ioStorInvDisMapper.update(new IOStorInvDis(), new LambdaUpdateWrapper<>(IOStorInvDis.class)
|
||||
.set(IOStorInvDis::getTask_id, null)
|
||||
.set(IOStorInvDis::getPoint_code, null)
|
||||
.set(IOStorInvDis::getIs_issued, 0)
|
||||
.set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("未生成"))
|
||||
.eq(IOStorInvDis::getTask_id, taskObj.getTask_id()));
|
||||
clearPointTaskCode(taskObj.getPoint_code1());
|
||||
clearStructTaskCode(taskObj.getPoint_code2());
|
||||
deleteRelatedInBills(disList);
|
||||
deleteRelatedGroupPlate(taskObj.getGroup_id());
|
||||
}
|
||||
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
clearPoint(taskObj.getPoint_code1());
|
||||
occupyStruct(taskObj.getPoint_code2(), taskObj.getVehicle_code(), taskObj.getVehicle_type());
|
||||
taskObj.setRemark("任务执行完毕");
|
||||
inBillService.taskFinish(taskObj);
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
private void clearPoint(String code) {
|
||||
SchBasePoint point = pointService.getById(code);
|
||||
if (ObjectUtil.isEmpty(point)) {
|
||||
throw new BadRequestException("点位不存在:" + code);
|
||||
}
|
||||
point.setPoint_status("1");
|
||||
point.setVehicle_code(null);
|
||||
point.setVehicle_type(null);
|
||||
point.setUpdate_time(DateUtil.now());
|
||||
pointService.updateById(point);
|
||||
}
|
||||
|
||||
private void occupyStruct(String code, String vehicleCode, String vehicleType) {
|
||||
Structattr struct = structattrService.getByCode(code);
|
||||
if (ObjectUtil.isEmpty(struct)) {
|
||||
throw new BadRequestException("仓位不存在:" + code);
|
||||
}
|
||||
structattrService.update(new LambdaUpdateWrapper<Structattr>()
|
||||
.set(Structattr::getStoragevehicle_code, vehicleCode)
|
||||
.set(Structattr::getStoragevehicle_type, vehicleType)
|
||||
.set(Structattr::getOccupancy_state, "2")
|
||||
.eq(Structattr::getStruct_code, code));
|
||||
}
|
||||
|
||||
private void clearPointTaskCode(String code) {
|
||||
if (ObjectUtil.isEmpty(code)) {
|
||||
return;
|
||||
}
|
||||
pointService.update(new LambdaUpdateWrapper<SchBasePoint>()
|
||||
.set(SchBasePoint::getIng_task_code, null)
|
||||
.eq(SchBasePoint::getPoint_code, code));
|
||||
}
|
||||
|
||||
private void clearStructTaskCode(String code) {
|
||||
if (ObjectUtil.isEmpty(code)) {
|
||||
return;
|
||||
}
|
||||
structattrService.update(new LambdaUpdateWrapper<Structattr>()
|
||||
.set(Structattr::getTask_code, null)
|
||||
.eq(Structattr::getStruct_code, code));
|
||||
}
|
||||
|
||||
private void unlockTargetStruct(String code) {
|
||||
if (ObjectUtil.isEmpty(code)) {
|
||||
return;
|
||||
}
|
||||
JSONObject unlockMap = new JSONObject();
|
||||
unlockMap.put("struct_code", code);
|
||||
unlockMap.put("inv_id", null);
|
||||
unlockMap.put("inv_code", null);
|
||||
unlockMap.put("inv_type", null);
|
||||
structattrService.updateStatusByCode("2", unlockMap);
|
||||
}
|
||||
|
||||
private void deleteRelatedInBills(List<IOStorInvDis> disList) {
|
||||
if (ObjectUtil.isEmpty(disList)) {
|
||||
return;
|
||||
}
|
||||
List<String> invIds = new ArrayList<>();
|
||||
for (IOStorInvDis dis : disList) {
|
||||
if (ObjectUtil.isNotEmpty(dis.getIostorinv_id()) && !invIds.contains(dis.getIostorinv_id())) {
|
||||
invIds.add(dis.getIostorinv_id());
|
||||
}
|
||||
}
|
||||
for (String invId : invIds) {
|
||||
ioStorInvDisMapper.delete(new LambdaQueryWrapper<IOStorInvDis>()
|
||||
.eq(IOStorInvDis::getIostorinv_id, invId));
|
||||
ioStorInvDtlMapper.delete(new LambdaQueryWrapper<IOStorInvDtl>()
|
||||
.eq(IOStorInvDtl::getIostorinv_id, invId));
|
||||
ioStorInvMapper.deleteById(invId);
|
||||
}
|
||||
}
|
||||
|
||||
private void deleteRelatedGroupPlate(String groupId) {
|
||||
if (ObjectUtil.isEmpty(groupId)) {
|
||||
return;
|
||||
}
|
||||
groupplateService.remove(new LambdaQueryWrapper<GroupPlate>()
|
||||
.eq(GroupPlate::getGroup_id, groupId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void forceFinish(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.finishTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String task_code) {
|
||||
SchBaseTask taskObj = taskService.getByCode(task_code);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("该任务不存在");
|
||||
}
|
||||
this.cancelTask(taskObj, TaskFinishedTypeEnum.MANUAL_PC);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void backMes(String task_code) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -220,6 +220,8 @@ public class SeparateMaterialManualTask extends AbstractTask {
|
||||
//点位1
|
||||
iStructattrService.update(new LambdaUpdateWrapper<Structattr>()
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getStoragevehicle_type, null)
|
||||
.set(Structattr::getStoragevehicle_qty, 0)
|
||||
.set(Structattr::getOccupancy_state, "1")
|
||||
.set(Structattr::getUpdate_id, SecurityUtils.getCurrentUserId())
|
||||
.set(Structattr::getUpdate_name, SecurityUtils.getCurrentNickName())
|
||||
@@ -299,7 +301,9 @@ public class SeparateMaterialManualTask extends AbstractTask {
|
||||
// 回滚目标点位,解除进行中任务占用
|
||||
pointService.update(new LambdaUpdateWrapper<SchBasePoint>()
|
||||
.set(SchBasePoint::getIng_task_code, null)
|
||||
.set(SchBasePoint::getVehicle_type, "")
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getVehicle_type, null)
|
||||
.set(SchBasePoint::getVehicle_qty, 0)
|
||||
.set(SchBasePoint::getPoint_status, "1")
|
||||
.set(SchBasePoint::getUpdate_id, SecurityUtils.getCurrentUserId())
|
||||
.set(SchBasePoint::getUpdate_name, SecurityUtils.getCurrentNickName())
|
||||
|
||||
@@ -233,6 +233,8 @@ public class SeparateMaterialTask extends AbstractTask {
|
||||
//点位1
|
||||
iStructattrService.update(new LambdaUpdateWrapper<Structattr>()
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getStoragevehicle_type, null)
|
||||
.set(Structattr::getStoragevehicle_qty, 0)
|
||||
.set(Structattr::getOccupancy_state, "1")
|
||||
.set(Structattr::getUpdate_id, SecurityUtils.getCurrentUserId())
|
||||
.set(Structattr::getUpdate_name, SecurityUtils.getCurrentNickName())
|
||||
@@ -312,7 +314,9 @@ public class SeparateMaterialTask extends AbstractTask {
|
||||
// 回滚目标点位,解除进行中任务占用
|
||||
pointService.update(new LambdaUpdateWrapper<SchBasePoint>()
|
||||
.set(SchBasePoint::getIng_task_code, null)
|
||||
.set(SchBasePoint::getVehicle_type, "")
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getVehicle_type, null)
|
||||
.set(SchBasePoint::getVehicle_qty, 0)
|
||||
.set(SchBasePoint::getPoint_status, "1")
|
||||
.set(SchBasePoint::getUpdate_id, SecurityUtils.getCurrentUserId())
|
||||
.set(SchBasePoint::getUpdate_name, SecurityUtils.getCurrentNickName())
|
||||
|
||||
@@ -41,6 +41,7 @@ import org.nl.wms.sch_manage.service.util.tasks.StInTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.jb.JbBackAgvTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.jb.JbBackManualTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.jb.JbDownAgvTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.jb.JbDownCloseCbjAgvTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.jb.JbDownCloseUnsealingAgvTask;
|
||||
import org.nl.wms.sch_manage.service.util.tasks.jb.JbDownManualTask;
|
||||
import org.nl.wms.system_manage.service.param.ISysParamService;
|
||||
@@ -107,6 +108,8 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
@Resource
|
||||
private JbDownAgvTask jbDownAgvTask;
|
||||
@Resource
|
||||
private JbDownCloseCbjAgvTask jbDownCloseCbjAgvTask;
|
||||
@Resource
|
||||
private JbDownCloseUnsealingAgvTask jbDownCloseUnsealingAgvTask;
|
||||
@Resource
|
||||
private JbBackAgvTask jbBackAgvTask;
|
||||
@@ -764,6 +767,7 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
public void divPoint(Map whereJson) {
|
||||
ArrayList<HashMap> rows = (ArrayList<HashMap>) whereJson.get("tableMater");
|
||||
String point_code = (String) whereJson.get("point_code");
|
||||
String type = String.valueOf(whereJson.get("type"));
|
||||
HashMap<String, String> map = rows.get(0);
|
||||
IOStorInv invObj = this.getById(map.get("iostorinv_id"));
|
||||
|
||||
@@ -804,8 +808,41 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
|| !"2".equals(intoPoint.getPoint_type())) {
|
||||
throw new BadRequestException("请选择超细/中粗吨袋解包区对接位!");
|
||||
}
|
||||
if (isOpenUnsealingEnabled()) {
|
||||
String cfgPointType = "CXDDJBQ".equals(intoPoint.getRegion_code()) ? "1" : "2";
|
||||
if ("0".equals(type)) {
|
||||
throw new BadRequestException("解包入库不支持人工转运类型!");
|
||||
}
|
||||
if (!"1".equals(type)) {
|
||||
throw new BadRequestException("type参数错误,仅支持0(人工转运)或1(AGV转运)!");
|
||||
}
|
||||
String openCbj = getBinaryParamStrict("is_open_cbj");
|
||||
String openUnsealing = getBinaryParamStrict("is_open_unsealing");
|
||||
String cfgPointType = "CXDDJBQ".equals(intoPoint.getRegion_code()) ? "1" : "2";
|
||||
SchBasePoint cfgjPoint = findCloseCbjPoint(map.get("storagevehicle_code"), intoPoint, cfgPointType);
|
||||
if ("0".equals(openCbj)) {
|
||||
prepareBucketForCloseCbjTask(map.get("storagevehicle_code"), inStruct.getStoragevehicle_type(), cfgjPoint);
|
||||
String taskGroupId = IdUtil.getStringId();
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("task_type", "JbDownCloseCbjAgvTask");
|
||||
task.put("group_id", groupPlate.getGroup_id());
|
||||
task.put("workorder_id", whereJson.get("workorder_id"));
|
||||
task.put("task_group_id", taskGroupId);
|
||||
task.put("task_group_seq", 1);
|
||||
task.put("TaskCode", CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.put("point_code1", cfgjPoint.getPoint_code());
|
||||
task.put("point_code2", structCode);
|
||||
task.put("point_code3", null);
|
||||
task.put("point_code4", null);
|
||||
task.put("truss_type", "3");
|
||||
task.put("have_lid", "1");
|
||||
task.put("vehicle_type", inStruct.getStoragevehicle_type());
|
||||
task.put("seq", 1);
|
||||
task.put("vehicle_code", map.get("storagevehicle_code"));
|
||||
task.put("vehicle_code2", null);
|
||||
List<JSONObject> jsonObjects = Arrays.asList(task);
|
||||
JSONObject requestTaskParam = new JSONObject();
|
||||
requestTaskParam.put("tasks", jsonObjects);
|
||||
task_id = jbDownCloseCbjAgvTask.create(requestTaskParam);
|
||||
} else if ("1".equals(openCbj) && "1".equals(openUnsealing)) {
|
||||
String parentPointCode = intoPoint.getParent_point_code();
|
||||
if (ObjectUtil.isEmpty(parentPointCode)) {
|
||||
throw new BadRequestException("解包对接点未配置父类编码!");
|
||||
@@ -814,12 +851,6 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
if (ObjectUtil.isEmpty(emptyPoint)) {
|
||||
throw new BadRequestException("找不到可用的空桶缓存位!");
|
||||
}
|
||||
// 获取无盖子的对应的点位
|
||||
List<SchBasePoint> canUseCFGJs = pointService.getCanUseCFGJs(intoPoint, "1", cfgPointType);
|
||||
if (canUseCFGJs.size() == 0) {
|
||||
throw new BadRequestException("找不到可用的拆封盖机");
|
||||
}
|
||||
SchBasePoint cfgjPoint = canUseCFGJs.get(0);
|
||||
// 创建任务1
|
||||
String taskGroupId = IdUtil.getStringId();
|
||||
JSONObject task1 = new JSONObject();
|
||||
@@ -879,7 +910,7 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
JSONObject requestTaskParam = new JSONObject();
|
||||
requestTaskParam.put("tasks", jsonObjects);
|
||||
task_id = jbDownAgvTask.create(requestTaskParam);
|
||||
} else {
|
||||
} else if ("1".equals(openCbj) && "0".equals(openUnsealing)) {
|
||||
String taskGroupId = IdUtil.getStringId();
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("task_type", "JbDownCloseUnsealingAgvTask");
|
||||
@@ -902,6 +933,8 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
JSONObject requestTaskParam = new JSONObject();
|
||||
requestTaskParam.put("tasks", jsonObjects);
|
||||
task_id = jbDownCloseUnsealingAgvTask.create(requestTaskParam);
|
||||
} else {
|
||||
throw new BadRequestException("系统参数配置错误");
|
||||
}
|
||||
} else if (StatusEnum.IOBILL_TYPE_IN.code("解包直接入库").equals(invObj.getBill_type())) {
|
||||
// 创建人工四点任务
|
||||
@@ -985,8 +1018,8 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
task.put("task_group_seq", whereJson.get("task_group_seq"));
|
||||
task.put("task_group_id", whereJson.get("task_group_id"));
|
||||
task.put("vehicle_code", materialPoint.getVehicle_code());
|
||||
String type = String.valueOf(whereJson.get("type"));
|
||||
if ("0".equals(type)) {
|
||||
String backType = String.valueOf(whereJson.get("type"));
|
||||
if ("0".equals(backType)) {
|
||||
task.put("task_type", "JbBackManualTask");
|
||||
task_id = jbBackManualTask.create(task);
|
||||
} else {
|
||||
@@ -1122,12 +1155,81 @@ public class InBillServiceImpl extends ServiceImpl<IOStorInvMapper, IOStorInv> i
|
||||
ioStorInvDisMapper.updateById(dis);
|
||||
}
|
||||
|
||||
private boolean isOpenUnsealingEnabled() {
|
||||
Param param = paramService.findByCode("is_open_unsealing");
|
||||
private String getBinaryParamStrict(String code) {
|
||||
Param param = paramService.findByCode(code);
|
||||
if (ObjectUtil.isEmpty(param) || StrUtil.isBlank(param.getValue())) {
|
||||
return true;
|
||||
throw new BadRequestException("系统参数配置错误");
|
||||
}
|
||||
return "1".equals(StrUtil.trim(param.getValue()));
|
||||
String value = StrUtil.trim(param.getValue());
|
||||
if (!"0".equals(value) && !"1".equals(value)) {
|
||||
throw new BadRequestException("系统参数配置错误");
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
private SchBasePoint findCloseCbjPoint(String bucketCode, SchBasePoint intoPoint, String cfgPointType) {
|
||||
SchBasePoint currentBucketPoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getVehicle_code, bucketCode), false);
|
||||
if (ObjectUtil.isNotEmpty(currentBucketPoint)
|
||||
&& "DTCFGQ".equals(currentBucketPoint.getRegion_code())
|
||||
&& cfgPointType.equals(currentBucketPoint.getPoint_type())) {
|
||||
return currentBucketPoint;
|
||||
}
|
||||
List<SchBasePoint> canUseCFGJs = pointService.getCanUseCFGJs(intoPoint, "1", cfgPointType);
|
||||
if (canUseCFGJs.size() == 0) {
|
||||
throw new BadRequestException("找不到可用的拆封盖机");
|
||||
}
|
||||
return canUseCFGJs.get(0);
|
||||
}
|
||||
|
||||
private void prepareBucketForCloseCbjTask(String bucketCode, String vehicleType, SchBasePoint cbjPoint) {
|
||||
SchBasePoint oldPoint = pointService.getOne(new LambdaQueryWrapper<SchBasePoint>()
|
||||
.eq(SchBasePoint::getVehicle_code, bucketCode), false);
|
||||
Structattr oldStruct = iStructattrService.getOne(new LambdaQueryWrapper<Structattr>()
|
||||
.eq(Structattr::getStoragevehicle_code, bucketCode), false);
|
||||
|
||||
if (ObjectUtil.isNotEmpty(oldPoint) && ObjectUtil.isNotEmpty(oldStruct)) {
|
||||
throw new BadRequestException("料桶码存在多位置绑定,请先处理异常数据");
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(oldPoint)) {
|
||||
if (!cbjPoint.getPoint_code().equals(oldPoint.getPoint_code())) {
|
||||
clearBucketFromPoint(oldPoint.getPoint_code());
|
||||
bindBucketToPoint(cbjPoint.getPoint_code(), bucketCode, vehicleType);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (ObjectUtil.isNotEmpty(oldStruct)) {
|
||||
clearBucketFromStruct(oldStruct.getStruct_code());
|
||||
bindBucketToPoint(cbjPoint.getPoint_code(), bucketCode, vehicleType);
|
||||
return;
|
||||
}
|
||||
bindBucketToPoint(cbjPoint.getPoint_code(), bucketCode, vehicleType);
|
||||
}
|
||||
|
||||
private void clearBucketFromPoint(String pointCode) {
|
||||
pointService.update(new LambdaUpdateWrapper<SchBasePoint>()
|
||||
.set(SchBasePoint::getVehicle_code, null)
|
||||
.set(SchBasePoint::getVehicle_type, null)
|
||||
.set(SchBasePoint::getPoint_status, "1")
|
||||
.set(SchBasePoint::getIng_task_code, null)
|
||||
.eq(SchBasePoint::getPoint_code, pointCode));
|
||||
}
|
||||
|
||||
private void clearBucketFromStruct(String structCode) {
|
||||
iStructattrService.update(new LambdaUpdateWrapper<Structattr>()
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getStoragevehicle_type, null)
|
||||
.set(Structattr::getOccupancy_state, "1")
|
||||
.set(Structattr::getTask_code, null)
|
||||
.eq(Structattr::getStruct_code, structCode));
|
||||
}
|
||||
|
||||
private void bindBucketToPoint(String pointCode, String bucketCode, String vehicleType) {
|
||||
pointService.update(new LambdaUpdateWrapper<SchBasePoint>()
|
||||
.set(SchBasePoint::getVehicle_code, bucketCode)
|
||||
.set(SchBasePoint::getVehicle_type, vehicleType)
|
||||
.set(SchBasePoint::getPoint_status, "3")
|
||||
.eq(SchBasePoint::getPoint_code, pointCode));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -395,6 +395,14 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
|
||||
String iostorinvId = whereJson.getString("iostorinv_id");
|
||||
IOStorInv ioStorInv = getOutBillOrThrow(iostorinvId);
|
||||
ensureOutBillStatus(ioStorInv, OUT_BILL_STATUS_CREATED);
|
||||
Integer auditResult = whereJson.getInteger("audit_result");
|
||||
String remark = whereJson.getString("remark");
|
||||
if (auditResult == null || (auditResult != 1 && auditResult != 2)) {
|
||||
throw new BadRequestException("审核结果只能为通过(1)或不通过(2)!");
|
||||
}
|
||||
if (auditResult == 2 && StrUtil.isBlank(remark)) {
|
||||
throw new BadRequestException("审核不通过时原因不能为空!");
|
||||
}
|
||||
|
||||
String currentUserId = SecurityUtils.getCurrentUserId();
|
||||
String nickName = SecurityUtils.getCurrentNickName();
|
||||
@@ -402,10 +410,15 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
|
||||
|
||||
IOStorInv updateMst = new IOStorInv();
|
||||
updateMst.setIostorinv_id(iostorinvId);
|
||||
updateMst.setBill_status(IOSEnum.BILL_STATUS.code(OUT_BILL_STATUS_AUDITED));
|
||||
updateMst.setBill_status(auditResult == 1
|
||||
? IOSEnum.BILL_STATUS.code(OUT_BILL_STATUS_AUDITED)
|
||||
: IOSEnum.BILL_STATUS.code("完成"));
|
||||
updateMst.setAudit_optid(currentUserId);
|
||||
updateMst.setAudit_optname(nickName);
|
||||
updateMst.setAudit_time(now);
|
||||
if (auditResult == 2) {
|
||||
updateMst.setRemark(remark);
|
||||
}
|
||||
updateMst.setUpdate_optid(currentUserId);
|
||||
updateMst.setUpdate_optname(nickName);
|
||||
updateMst.setUpdate_time(now);
|
||||
@@ -413,7 +426,9 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
|
||||
|
||||
ioStorInvDtlMapper.update(new IOStorInvDtl(),
|
||||
new LambdaUpdateWrapper<IOStorInvDtl>()
|
||||
.set(IOStorInvDtl::getBill_status, IOSEnum.BILL_STATUS.code(OUT_BILL_STATUS_AUDITED))
|
||||
.set(IOStorInvDtl::getBill_status, auditResult == 1
|
||||
? IOSEnum.BILL_STATUS.code(OUT_BILL_STATUS_AUDITED)
|
||||
: IOSEnum.BILL_STATUS.code("完成"))
|
||||
.eq(IOStorInvDtl::getIostorinv_id, iostorinvId)
|
||||
.eq(IOStorInvDtl::getBill_status, IOSEnum.BILL_STATUS.code(OUT_BILL_STATUS_CREATED)));
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package org.nl.wms.warehouse_manage.service.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -14,8 +15,10 @@ import org.nl.common.utils.CodeUtil;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleinfoService;
|
||||
import org.nl.wms.basedata_manage.service.IStructattrService;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleinfo;
|
||||
import org.nl.wms.basedata_manage.service.dao.Structattr;
|
||||
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
|
||||
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
|
||||
@@ -79,6 +82,9 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
||||
@Autowired
|
||||
private IStructattrService iStructattrService;
|
||||
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService;
|
||||
|
||||
/**
|
||||
* 任务服务
|
||||
*/
|
||||
@@ -228,6 +234,7 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
||||
|
||||
@Override
|
||||
public void confirmTask(StIvtMoveinvdtl dtlDao) {
|
||||
MdPbStoragevehicleinfo storagevehicleinfo = iMdPbStoragevehicleinfoService.getByCode(dtlDao.getStoragevehicle_code());
|
||||
// 需要更新库存集合
|
||||
List<JSONObject> updateIvtList = new ArrayList<>();
|
||||
// 查询物料
|
||||
@@ -263,6 +270,8 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
||||
.set(Structattr::getOccupancy_state,"1")
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.set(Structattr::getStoragevehicle_code, null)
|
||||
.set(Structattr::getStoragevehicle_type, null)
|
||||
.set(Structattr::getStoragevehicle_qty, 0)
|
||||
);
|
||||
// 更新终点
|
||||
iStructattrService.update(
|
||||
@@ -271,6 +280,8 @@ public class StIvtMoveinvServiceImpl extends ServiceImpl<StIvtMoveinvMapper, StI
|
||||
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.set(Structattr::getOccupancy_state,"3")
|
||||
.set(Structattr::getStoragevehicle_code, dtlDao.getStoragevehicle_code())
|
||||
.set(Structattr::getStoragevehicle_type, ObjectUtil.isNotEmpty(storagevehicleinfo) ? storagevehicleinfo.getStoragevehicle_type() : null)
|
||||
.set(Structattr::getStoragevehicle_qty, 1)
|
||||
);
|
||||
|
||||
// 更新明细状态
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
ALTER TABLE `pdm_bd_workorder`
|
||||
ADD COLUMN `remark` varchar(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_bin NULL DEFAULT NULL COMMENT '备注' AFTER `ext_data`;
|
||||
@@ -127,6 +127,42 @@
|
||||
强制完工
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="auditDialogVisible"
|
||||
title="审核"
|
||||
width="520px"
|
||||
>
|
||||
<el-form
|
||||
ref="auditForm"
|
||||
:model="auditForm"
|
||||
:rules="auditRules"
|
||||
size="mini"
|
||||
label-width="90px"
|
||||
label-suffix=":"
|
||||
>
|
||||
<el-form-item label="审核结果" prop="audit_result">
|
||||
<el-radio-group v-model="auditForm.audit_result">
|
||||
<el-radio :label="1">通过</el-radio>
|
||||
<el-radio :label="0">不通过</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="原因" prop="remark">
|
||||
<el-input
|
||||
v-model="auditForm.remark"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
maxlength="255"
|
||||
show-word-limit
|
||||
placeholder="请输入审核原因"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="text" @click="closeAuditDialog">取消</el-button>
|
||||
<el-button type="primary" @click="submitAudit">确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表单组件-->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
@@ -320,6 +356,17 @@
|
||||
style="width: 240px;"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注">
|
||||
<el-input
|
||||
v-model="form.remark"
|
||||
type="textarea"
|
||||
:rows="3"
|
||||
maxlength="255"
|
||||
show-word-limit
|
||||
style="width: 510px;"
|
||||
placeholder="请输入备注"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="false" label="工单类型" prop="workorder_type">
|
||||
<el-input v-model="form.workorder_type" style="width: 240px;" />
|
||||
</el-form-item>
|
||||
@@ -395,6 +442,12 @@
|
||||
label="批次号"
|
||||
:min-width="flexWidth('batch_no',crud.data,'批次号')"
|
||||
/>
|
||||
<el-table-column
|
||||
prop="remark"
|
||||
label="备注"
|
||||
:min-width="flexWidth('remark',crud.data,'备注', 40)"
|
||||
show-overflow-tooltip
|
||||
/>
|
||||
<el-table-column
|
||||
prop="vehicle_type"
|
||||
label="载具类型"
|
||||
@@ -545,9 +598,15 @@ const defaultForm = {
|
||||
plan_weight: 0,
|
||||
guadansum: 0,
|
||||
ext_data: null,
|
||||
remark: null,
|
||||
priority: 1,
|
||||
show: false
|
||||
}
|
||||
const defaultAuditForm = {
|
||||
workorder_id: null,
|
||||
audit_result: 1,
|
||||
remark: ''
|
||||
}
|
||||
export default {
|
||||
name: 'PdmBdWorkorder',
|
||||
dicts: ['storagevehicle_type', 'pdm_workorder_status'],
|
||||
@@ -595,6 +654,14 @@ export default {
|
||||
{ required: true, message: '工单类型不能为空', trigger: 'blur' }
|
||||
]*/
|
||||
},
|
||||
auditRules: {
|
||||
audit_result: [
|
||||
{ required: true, message: '请选择审核结果', trigger: 'change' }
|
||||
],
|
||||
remark: [
|
||||
{ validator: this.validateAuditRemark, trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
queryTypeOptions: [
|
||||
{ key: 'workorder_code', display_name: '工单编号' },
|
||||
{ key: 'point_code', display_name: '设备编码' }
|
||||
@@ -607,6 +674,8 @@ export default {
|
||||
materialDialog: false,
|
||||
orderDialog: false,
|
||||
batchAdd: false,
|
||||
auditDialogVisible: false,
|
||||
auditForm: { ...defaultAuditForm },
|
||||
fullscreenLoading: false,
|
||||
materialCode: null,
|
||||
flag: 1
|
||||
@@ -762,19 +831,54 @@ export default {
|
||||
}
|
||||
this.crud.toQuery()
|
||||
},
|
||||
validateAuditRemark(rule, value, callback) {
|
||||
if (this.auditForm.audit_result === 0 && !value) {
|
||||
callback(new Error('审核不通过时原因不能为空'))
|
||||
return
|
||||
}
|
||||
callback()
|
||||
},
|
||||
closeAuditDialog() {
|
||||
this.auditDialogVisible = false
|
||||
this.auditForm = { ...defaultAuditForm }
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.auditForm) {
|
||||
this.$refs.auditForm.clearValidate()
|
||||
}
|
||||
})
|
||||
},
|
||||
audit(row) {
|
||||
if (String(row.workorder_status) !== '1') {
|
||||
this.$message.warning('仅工单状态为1时允许审核')
|
||||
return
|
||||
}
|
||||
this.fullscreenLoading = true
|
||||
crudPdmBdWorkorder.audit(row).then(res => {
|
||||
this.crud.notify('审核成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
}).catch(() => {
|
||||
this.fullscreenLoading = false
|
||||
}).finally(() => {
|
||||
this.fullscreenLoading = false
|
||||
this.auditForm = {
|
||||
...defaultAuditForm,
|
||||
workorder_id: row.workorder_id,
|
||||
remark: row.remark || ''
|
||||
}
|
||||
this.auditDialogVisible = true
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.auditForm) {
|
||||
this.$refs.auditForm.clearValidate()
|
||||
}
|
||||
})
|
||||
},
|
||||
submitAudit() {
|
||||
this.$refs.auditForm.validate(valid => {
|
||||
if (!valid) {
|
||||
return
|
||||
}
|
||||
this.fullscreenLoading = true
|
||||
crudPdmBdWorkorder.audit(this.auditForm).then(res => {
|
||||
this.crud.notify('审核成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.closeAuditDialog()
|
||||
this.crud.toQuery()
|
||||
}).catch(() => {
|
||||
this.fullscreenLoading = false
|
||||
}).finally(() => {
|
||||
this.fullscreenLoading = false
|
||||
})
|
||||
})
|
||||
},
|
||||
// 下发
|
||||
|
||||
258
lms/nladmin-ui/src/views/wms/st/ivt/index.vue
Normal file
258
lms/nladmin-ui/src/views/wms/st/ivt/index.vue
Normal file
@@ -0,0 +1,258 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<div class="head-container">
|
||||
<div v-if="crud.props.searchToggle">
|
||||
<el-form
|
||||
:inline="true"
|
||||
class="demo-form-inline"
|
||||
label-position="right"
|
||||
label-width="90px"
|
||||
label-suffix=":"
|
||||
>
|
||||
<el-form-item label="所属库区">
|
||||
<el-cascader
|
||||
placeholder="所属库区"
|
||||
:options="sects"
|
||||
:props="{ checkStrictly: true }"
|
||||
clearable
|
||||
class="filter-item"
|
||||
style="width: 200px;"
|
||||
@change="sectQueryChange"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="仓位搜索">
|
||||
<el-input
|
||||
v-model="query.struct_code"
|
||||
clearable
|
||||
size="small"
|
||||
placeholder="仓位编码或名称"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="物料搜索">
|
||||
<el-input
|
||||
v-model="query.material_code"
|
||||
clearable
|
||||
size="small"
|
||||
placeholder="物料编码、名称或规格"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="批次号">
|
||||
<el-input
|
||||
v-model="query.pcsn"
|
||||
clearable
|
||||
size="small"
|
||||
placeholder="批次号"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="载具号">
|
||||
<el-input
|
||||
v-model="query.storagevehicle_code"
|
||||
clearable
|
||||
size="small"
|
||||
placeholder="载具号"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="是否锁定">
|
||||
<el-select
|
||||
v-model="query.is_lock"
|
||||
clearable
|
||||
size="small"
|
||||
placeholder="是否锁定"
|
||||
style="width: 200px;"
|
||||
class="filter-item"
|
||||
>
|
||||
<el-option label="否" value="0" />
|
||||
<el-option label="是" value="1" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<rrOperation :crud="crud" />
|
||||
</el-form>
|
||||
</div>
|
||||
<crudOperation :permission="permission">
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
size="mini"
|
||||
type="warning"
|
||||
icon="el-icon-lock"
|
||||
:disabled="crud.selections.length === 0"
|
||||
@click="handleStockLock"
|
||||
>
|
||||
库存锁定
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
size="mini"
|
||||
type="info"
|
||||
icon="el-icon-unlock"
|
||||
:disabled="crud.selections.length === 0"
|
||||
@click="handleStockUnlock"
|
||||
>
|
||||
库存解锁
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<el-table
|
||||
ref="table"
|
||||
v-loading="crud.loading"
|
||||
:data="crud.data"
|
||||
size="mini"
|
||||
style="width: 100%;"
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column prop="struct_code" label="仓位编码" :min-width="flexWidth('struct_code',crud.data,'仓位编码')" />
|
||||
<el-table-column prop="struct_name" label="仓位名称" :min-width="flexWidth('struct_name',crud.data,'仓位名称')" />
|
||||
<el-table-column prop="stor_name" label="仓库" :min-width="flexWidth('stor_name',crud.data,'仓库')" />
|
||||
<el-table-column prop="sect_name" label="库区" :min-width="flexWidth('sect_name',crud.data,'库区')" />
|
||||
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
|
||||
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')" />
|
||||
<el-table-column prop="pcsn" label="批次号" :min-width="flexWidth('pcsn',crud.data,'批次号')" />
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" :min-width="flexWidth('storagevehicle_code',crud.data,'载具号')" />
|
||||
<el-table-column prop="qty" label="总数" :formatter="crud.formatNum3" :min-width="100" />
|
||||
<el-table-column label="可用数" :min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ scope.row.qty - scope.row.frozen_qty }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="frozen_qty" label="冻结数" :formatter="crud.formatNum3" :min-width="100" />
|
||||
<el-table-column label="锁定状态" :min-width="100">
|
||||
<template slot-scope="scope">
|
||||
<span>{{ formatLockStatus(scope.row.lock_type) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" :min-width="flexWidth('qty_unit_name',crud.data,'计量单位')" />
|
||||
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
|
||||
<el-table-column prop="create_time" label="入库时间" width="170" />
|
||||
<el-table-column prop="supp_code" label="供应商编码" :min-width="flexWidth('supp_code',crud.data,'供应商编码')" />
|
||||
<el-table-column prop="supp_name" label="供应商名称" :min-width="flexWidth('supp_name',crud.data,'供应商名称')" />
|
||||
</el-table>
|
||||
<pagination />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import stockManageApi from '@/views/wms/st/ivt/stockManage'
|
||||
import CRUD, { presenter, header, crud } from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import crudSectattr from '@/views/wms/basedata/sectattr/sectattr'
|
||||
|
||||
export default {
|
||||
name: 'StockManage',
|
||||
components: { pagination, rrOperation, crudOperation },
|
||||
mixins: [presenter(), header(), crud()],
|
||||
cruds() {
|
||||
return CRUD({
|
||||
title: '库存管理', url: 'api/stockManage', idField: 'stockrecord_id', sort: 'stockrecord_id,desc',
|
||||
optShow: {
|
||||
add: false,
|
||||
edit: false,
|
||||
showDtlLoading: false,
|
||||
del: false,
|
||||
download: false,
|
||||
reset: true
|
||||
},
|
||||
crudMethod: { ...stockManageApi }
|
||||
})
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
sects: [],
|
||||
permission: {},
|
||||
rules: {}
|
||||
}
|
||||
},
|
||||
created() {
|
||||
crudSectattr.getSect({ stor_id: '' }).then(res => {
|
||||
this.sects = res.content
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
hand(value) {
|
||||
this.crud.toQuery()
|
||||
},
|
||||
sectQueryChange(val) {
|
||||
if (val.length === 1) {
|
||||
this.query.stor_id = val[0]
|
||||
this.query.sect_code = ''
|
||||
}
|
||||
if (val.length === 0) {
|
||||
this.query.sect_code = ''
|
||||
this.query.stor_id = ''
|
||||
}
|
||||
if (val.length === 2) {
|
||||
this.query.stor_id = val[0]
|
||||
this.query.sect_code = val[1]
|
||||
}
|
||||
this.crud.toQuery()
|
||||
},
|
||||
querytable() {
|
||||
this.crud.toQuery()
|
||||
},
|
||||
formatLockStatus(lockType) {
|
||||
return String(lockType || '0') === '0' ? '否' : '是'
|
||||
},
|
||||
handleStockLock() {
|
||||
this.promptLockReason('库存锁定原因', '请输入锁定原因', reason => {
|
||||
this.changeStockLock('99', reason, '库存锁定成功')
|
||||
})
|
||||
},
|
||||
handleStockUnlock() {
|
||||
this.promptLockReason('库存解锁原因', '请输入解锁原因', reason => {
|
||||
this.changeStockLock('0', reason, '库存解锁成功')
|
||||
})
|
||||
},
|
||||
promptLockReason(title, inputPlaceholder, onConfirm) {
|
||||
this.$prompt('', title, {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
inputPlaceholder,
|
||||
inputValidator: value => {
|
||||
if (!value || !value.trim()) {
|
||||
return '原因不能为空'
|
||||
}
|
||||
return true
|
||||
}
|
||||
}).then(({ value }) => {
|
||||
onConfirm(value.trim())
|
||||
}).catch(() => {})
|
||||
},
|
||||
changeStockLock(lockType, remark, message) {
|
||||
const selectedRows = this.crud.selections || []
|
||||
const structMap = new Map()
|
||||
selectedRows.forEach(row => {
|
||||
if (row.struct_code) {
|
||||
structMap.set(row.struct_code, {
|
||||
struct_code: row.struct_code,
|
||||
lock_type: lockType,
|
||||
remark
|
||||
})
|
||||
}
|
||||
})
|
||||
const payload = Array.from(structMap.values())
|
||||
if (payload.length === 0) {
|
||||
this.$message({
|
||||
type: 'warning',
|
||||
message: '请选择需要操作的库存数据'
|
||||
})
|
||||
return
|
||||
}
|
||||
stockManageApi.updateLock(payload).then(() => {
|
||||
this.crud.notify(message, CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.crud.toQuery()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
11
lms/nladmin-ui/src/views/wms/st/ivt/stockManage.js
Normal file
11
lms/nladmin-ui/src/views/wms/st/ivt/stockManage.js
Normal file
@@ -0,0 +1,11 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
export function updateLock(data) {
|
||||
return request({
|
||||
url: 'api/stockManage/updateLock',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { updateLock }
|
||||
@@ -155,6 +155,42 @@
|
||||
强制确认
|
||||
</el-button>
|
||||
</crudOperation>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync="auditDialogVisible"
|
||||
title="审核"
|
||||
width="520px"
|
||||
>
|
||||
<el-form
|
||||
ref="auditForm"
|
||||
:model="auditForm"
|
||||
:rules="auditRules"
|
||||
size="mini"
|
||||
label-width="90px"
|
||||
label-suffix=":"
|
||||
>
|
||||
<el-form-item label="审核结果" prop="audit_result">
|
||||
<el-radio-group v-model="auditForm.audit_result">
|
||||
<el-radio :label="1">通过</el-radio>
|
||||
<el-radio :label="2">不通过</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item label="原因" prop="remark">
|
||||
<el-input
|
||||
v-model="auditForm.remark"
|
||||
type="textarea"
|
||||
:rows="4"
|
||||
maxlength="255"
|
||||
show-word-limit
|
||||
placeholder="请输入审核原因"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
<el-button type="text" @click="closeAuditDialog">取消</el-button>
|
||||
<el-button type="primary" @click="submitAudit">确认</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
<!--表格渲染-->
|
||||
<el-table
|
||||
ref="table"
|
||||
@@ -234,6 +270,11 @@ import ViewDialog from '@/views/wms/st/outbill/ViewDialog'
|
||||
import crudBsrealstorattr from '@/views/wms/basedata/bsrealstorattr/bsrealstorattr'
|
||||
|
||||
const start = new Date()
|
||||
const defaultAuditForm = {
|
||||
iostorinv_id: null,
|
||||
audit_result: 1,
|
||||
remark: ''
|
||||
}
|
||||
|
||||
export default {
|
||||
name: 'Checkoutbill',
|
||||
@@ -264,6 +305,16 @@ export default {
|
||||
},
|
||||
loadingConfirm: false,
|
||||
loadingAudit: false,
|
||||
auditDialogVisible: false,
|
||||
auditForm: { ...defaultAuditForm },
|
||||
auditRules: {
|
||||
audit_result: [
|
||||
{ required: true, message: '请选择审核结果', trigger: 'change' }
|
||||
],
|
||||
remark: [
|
||||
{ validator: this.validateAuditRemark, trigger: 'blur' }
|
||||
]
|
||||
},
|
||||
divShow: false,
|
||||
audit_flag: true,
|
||||
dis_flag: true,
|
||||
@@ -405,14 +456,49 @@ export default {
|
||||
this.mstrow = this.currentRow
|
||||
})
|
||||
},
|
||||
validateAuditRemark(rule, value, callback) {
|
||||
if (this.auditForm.audit_result === 2 && !value) {
|
||||
callback(new Error('审核不通过时原因不能为空'))
|
||||
return
|
||||
}
|
||||
callback()
|
||||
},
|
||||
closeAuditDialog() {
|
||||
this.auditDialogVisible = false
|
||||
this.auditForm = { ...defaultAuditForm }
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.auditForm) {
|
||||
this.$refs.auditForm.clearValidate()
|
||||
}
|
||||
})
|
||||
},
|
||||
audit() {
|
||||
this.loadingAudit = true
|
||||
checkoutbill.audit({ 'iostorinv_id': this.currentRow.iostorinv_id }).then(() => {
|
||||
this.querytable()
|
||||
this.crud.notify('审核成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.loadingAudit = false
|
||||
}).catch(() => {
|
||||
this.loadingAudit = false
|
||||
this.auditForm = {
|
||||
...defaultAuditForm,
|
||||
iostorinv_id: this.currentRow.iostorinv_id,
|
||||
remark: this.currentRow.remark || ''
|
||||
}
|
||||
this.auditDialogVisible = true
|
||||
this.$nextTick(() => {
|
||||
if (this.$refs.auditForm) {
|
||||
this.$refs.auditForm.clearValidate()
|
||||
}
|
||||
})
|
||||
},
|
||||
submitAudit() {
|
||||
this.$refs.auditForm.validate(valid => {
|
||||
if (!valid) {
|
||||
return
|
||||
}
|
||||
this.loadingAudit = true
|
||||
checkoutbill.audit(this.auditForm).then(() => {
|
||||
this.closeAuditDialog()
|
||||
this.querytable()
|
||||
this.crud.notify('审核成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.loadingAudit = false
|
||||
}).catch(() => {
|
||||
this.loadingAudit = false
|
||||
})
|
||||
})
|
||||
},
|
||||
confirm() {
|
||||
|
||||
Reference in New Issue
Block a user