add:清洗代码
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
package org.nl.common.domain;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@FunctionalInterface
|
||||
public
|
||||
interface ReturnLockProcess<T> {
|
||||
T process() throws IOException;
|
||||
}
|
||||
@@ -58,7 +58,7 @@ public enum AcsTaskEnum {
|
||||
REQUEST_PLOTTER_CALL_EMP("4","刻字空框请求"),//ok
|
||||
REQUEST_WARP_CALL_FULL("5","包装缺料请求"),//ok
|
||||
REQUEST_WARP_SEND_EMP("6","包装送空框请求"),//ok
|
||||
REQUEST_WASH_LACK("7","清洗机器缺料请求"),//深坑->清洗:相同物料的重量<150公斤;
|
||||
REQUEST_WASH_SEND_MATERIAL("7","储料仓上料"),//深坑->清洗:相同物料的重量<150公斤;
|
||||
REQUEST_WASH_FULL("9","清洗机器满料请求"),//清洗机满料请求//去半成品入库
|
||||
REQUEST_WASH_EMP("10","清洗机器空框请求"),//清洗机下料位
|
||||
REQUEST_WASH_FULL_ERROR("11","清洗机-满料异常请求"),//去半成品入库 异常位
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.common.utils;
|
||||
|
||||
import lombok.SneakyThrows;
|
||||
import org.nl.common.domain.LockProcess;
|
||||
import org.nl.common.domain.ReturnLockProcess;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.redisson.api.RLock;
|
||||
@@ -42,4 +43,28 @@ public class RedissonUtils {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SneakyThrows
|
||||
public static<T> T lockAndReturn(ReturnLockProcess<T> process, String key, Integer seconds){
|
||||
RedissonClient redissonClient = SpringContextHolder.getBean(RedissonClient.class);
|
||||
RLock lock = redissonClient.getLock(key);
|
||||
boolean isLock;
|
||||
if (seconds == null){
|
||||
isLock = lock.tryLock();
|
||||
}else {
|
||||
isLock = lock.tryLock(seconds, TimeUnit.SECONDS);
|
||||
}
|
||||
try {
|
||||
if (isLock){
|
||||
T result = process.process();
|
||||
return result;
|
||||
} else {
|
||||
throw new BadRequestException("当前业务 key:"+key+"正在执行请稍后再试");
|
||||
}
|
||||
}finally {
|
||||
if (isLock){
|
||||
lock.unlock();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext_manage.acs.service.impl.AcsToWmsServiceImpl;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.SpeMachinery.SpeEmpTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.SpeMachinery.SpeFullTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.WashMachineryTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashMachineryTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.plotter.PlotterCallEmptyTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashCallEmptyTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.packageWrap.WrapCallMaterialTask;
|
||||
@@ -27,7 +27,7 @@ public class ConventConfig implements SmartLifecycle {
|
||||
public void start() {
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_FULL, SpringContextHolder.getBean(SpeFullTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_EMP, SpringContextHolder.getBean(SpeEmpTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_LACK, SpringContextHolder.getBean(WashMachineryTask.class));
|
||||
// AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_SEND_MATERIAL, SpringContextHolder.getBean(WashMachineryTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_SEND_FULL, SpringContextHolder.getBean(PlotterSendMaterialTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_CALL_EMP, SpringContextHolder.getBean(PlotterCallEmptyTask.class));
|
||||
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_CALL_FULL, SpringContextHolder.getBean(WrapCallMaterialTask.class));
|
||||
|
||||
@@ -12,7 +12,7 @@ import org.nl.common.utils.api.ResultCode;
|
||||
import org.nl.modules.common.exception.BizCoreException;
|
||||
import org.nl.wms.ext_manage.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.TaskScheduleService;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.WashMachineryTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashMachineryTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -73,11 +73,10 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(acsToWmsService.orderStatus(param), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/washOrder")
|
||||
@PostMapping("/washTask")
|
||||
@Log("ACS给WMS反馈清洗工单完成")
|
||||
//("ACS给WMS反馈清洗工单完成")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> washOrderFinish(@RequestBody JSONObject param) {
|
||||
public ResponseEntity<Object> washTaskFinish(@RequestBody JSONObject param) {
|
||||
washMachineryTask.updateTaskStatus( param, param.getString("status"));
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ import org.nl.wms.ext_manage.acs.service.AcsToWmsService;
|
||||
import org.nl.wms.pda_manage.pda.service.CacheLineHandService;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.AbstractAcsTask;
|
||||
import org.nl.wms.scheduler_manage.service.task.TaskService;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.WashMachineryTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashMachineryTask;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||
|
||||
@@ -5,9 +5,12 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.LockProcess;
|
||||
import org.nl.common.domain.ReturnLockProcess;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||
@@ -25,6 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -79,7 +83,7 @@ public class AgvInstService {
|
||||
task.put("task_type",AcsTaskEnum.TASK_PRODUCT_WASH.getCode());
|
||||
task.put("task_name",AcsTaskEnum.TASK_PRODUCT_WASH.getDesc());
|
||||
// query.put("qty",quantity) 深坑物料需要转重量
|
||||
collect = deviceService.workproceduceDevicesWeight(query);
|
||||
collect = RedissonUtils.lockAndReturn((ReturnLockProcess<List<Map<String, String>>>) () -> deviceService.workproceduceDevicesWeight(query), "allocation:A1_SKQX", 2);
|
||||
}else {
|
||||
collect = deviceService.workproceduceDevicesQty(query);
|
||||
}
|
||||
|
||||
@@ -59,6 +59,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
|
||||
, "task_group_id", StringUtils.isBlank(task.getString("task_group_id"))? IdUtil.getStringId():task.getString("task_group_id")
|
||||
, "is_send", task.getBoolean("is_send")?"1":"0"
|
||||
, "vehicle_code", task.getString("vehicle_code")
|
||||
, "in_pcsn", task.getString("task_code")
|
||||
, "agv_system_type", task.getString("agv_system_type")
|
||||
));
|
||||
form.add(param);
|
||||
|
||||
@@ -271,7 +271,6 @@ public class WmsToSapServiceImpl implements WmsToSapService {
|
||||
String material_code = row.getString("Matnr").replaceAll("^(0+)", "");
|
||||
//获取物料对应的物料标识
|
||||
MdMeMaterialbase mater_jo = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", material_code));
|
||||
deliver_jo.setMaterial_code(material_code);
|
||||
if (ObjectUtil.isEmpty(mater_jo)) {
|
||||
deliver_jo.setMaterial_id("");
|
||||
deliver_jo.setIs_success("0");
|
||||
|
||||
@@ -48,7 +48,6 @@ public class PcsDeliveryOrder implements Serializable {
|
||||
* 物料标识
|
||||
*/
|
||||
private String material_id;
|
||||
private String material_code;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
deliveryorder.*,
|
||||
material.material_code,
|
||||
material.material_name,
|
||||
material.material_spec,
|
||||
unit.unit_name
|
||||
FROM
|
||||
PCS_delivery_order deliveryorder
|
||||
@@ -18,7 +19,7 @@
|
||||
and deliveryorder.deliver_code like '%${deliver_code}%'
|
||||
</if>
|
||||
<if test="status != null and status != ''">
|
||||
and deliveryorder.sale_code = #{status}
|
||||
and deliveryorder.status = #{status}
|
||||
</if>
|
||||
<if test="product_series != null and product_series != ''">
|
||||
and material.product_series in ${product_series}
|
||||
|
||||
@@ -0,0 +1,253 @@
|
||||
package org.nl.wms.pda_manage.pda.controller;
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/7/12 21:13
|
||||
*/
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashMachineryTask;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@RestController
|
||||
@Api(tags = "成品手持服务")
|
||||
@RequestMapping("/api/pda/wash")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class PdaWashController {
|
||||
|
||||
private static double LIMIT_WEIGHT = 150000L;
|
||||
|
||||
@Autowired
|
||||
private IMdMeMaterialbaseService materialbaseService;
|
||||
@Autowired
|
||||
private IPdmBiDeviceService iDeviceService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private WashMachineryTask washMachineryTask;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
|
||||
@PostMapping("/specList")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryAll(@RequestBody JSONObject whereJson){
|
||||
List<Map> specs = new ArrayList<>();
|
||||
List<PdmBiDevice> list = iDeviceService.list(new QueryWrapper<PdmBiDevice>()
|
||||
.eq("workprocedure_id", "1535144552481034240")
|
||||
.eq("is_used", true)
|
||||
.ne("material_id", "")
|
||||
.isNotNull("material_id"));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
Set materials = list.stream().map(a->a.getMaterial_id()).collect(Collectors.toSet());
|
||||
List<MdMeMaterialbase> materialbases = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>()
|
||||
.in("material_id", materials));
|
||||
for (MdMeMaterialbase materialbase : materialbases) {
|
||||
Map item = new HashMap<>();
|
||||
item.put("label",materialbase.getMaterial_spec());
|
||||
item.put("value",materialbase.getMaterial_id());
|
||||
specs.add(item);
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>(TableDataInfo.build(specs),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/query")
|
||||
@Log("深坑物料")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> query(@RequestBody JSONObject query) {
|
||||
//设备
|
||||
QueryWrapper<PdmBiDevice> queryWrapper = new QueryWrapper<PdmBiDevice>()
|
||||
.eq("workprocedure_id", "1535144552481034240")
|
||||
.eq("is_used", true)
|
||||
.eq("product_area",query.getString("product_area"));
|
||||
if (StringUtils.isNotEmpty(query.getString("material_id"))){
|
||||
queryWrapper.eq("material_id",query.getString("material_id"));
|
||||
}
|
||||
if (StringUtils.isNotEmpty(query.getString("device_code"))){
|
||||
queryWrapper.eq("device_code",query.getString("device_code"));
|
||||
}
|
||||
List<Map<String, Object>> list = iDeviceService.listMaps(queryWrapper);
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
Set materials = list.stream().map(a->a.get("material_id")).collect(Collectors.toSet());
|
||||
Set devices = list.stream().map(a->a.get("device_code")).collect(Collectors.toSet());
|
||||
HashMap<String, SchBaseTask> taskMap = taskService.list(new QueryWrapper<SchBaseTask>().in("point_code2", devices)
|
||||
.eq("task_status", StatusEnum.TASK_RUNNING.getCode()))
|
||||
.stream().collect(HashMap::new, (k, v) -> k.put(v.getPoint_code2(), v), HashMap::putAll);
|
||||
Map<String, MdMeMaterialbase> materialMap = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>()
|
||||
.in("material_id", materials))
|
||||
.stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_id(), v), HashMap::putAll);
|
||||
for (Map pdmBiDevice : list) {
|
||||
MdMeMaterialbase materialbase = materialMap.get(pdmBiDevice.get("material_id"));
|
||||
SchBaseTask baseTask = taskMap.get(pdmBiDevice.get("device_code"));
|
||||
pdmBiDevice.put("material_name",materialbase!=null?materialbase.getMaterial_name():"");
|
||||
pdmBiDevice.put("material_code",materialbase!=null?materialbase.getMaterial_code():"");
|
||||
pdmBiDevice.put("material_spec",materialbase!=null?materialbase.getMaterial_spec():"");
|
||||
pdmBiDevice.put("task_code",baseTask!=null?baseTask.getTask_code():"");
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/submitWash")
|
||||
@Log("提交清洗")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> submitWash(@RequestBody String[] devices) {
|
||||
if (devices.length>0){
|
||||
List<PdmBiDevice> list = iDeviceService.list(new QueryWrapper<PdmBiDevice>()
|
||||
.eq("workprocedure_id", "1535144552481034240")
|
||||
.in("device_code", devices));
|
||||
Set<String> collect = list.stream().map(PdmBiDevice::getMaterial_id).collect(Collectors.toSet());
|
||||
if (!CollectionUtils.isEmpty(collect)){
|
||||
if (collect.size()>1){
|
||||
throw new BadRequestException("选择的储料仓必须是相同物料");
|
||||
}
|
||||
double sum = list.stream().mapToDouble(a->a.getDeviceinstor_weight().doubleValue()).sum();
|
||||
if (sum>LIMIT_WEIGHT){
|
||||
throw new BadRequestException("选择的储料仓必物料总重量大于150公斤");
|
||||
}
|
||||
//生成生坑清洗爬坡任务
|
||||
try {
|
||||
JSONObject param = new JSONObject(MapOf.of("devices", list));
|
||||
RedissonUtils.lock( () -> washMachineryTask.createTask(param), "allocation:A1_SKQX", null);
|
||||
}catch (Exception ex){
|
||||
log.error("清洗上料任务失败:{}",ex);
|
||||
throw new BadRequestException("任务创建失败:"+ex.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
/*-----------------倒料---------------------*/
|
||||
|
||||
@PostMapping("/weighing")
|
||||
@Log("称重")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> weighing(@RequestBody JSONObject param) {
|
||||
List<String> devices = (List<String>) param.get("list");
|
||||
JSONObject req = new JSONObject();
|
||||
req.put("device_code",devices.get(0));
|
||||
JSONObject result = wmsToAcsService.request(req, "api/wms/handWeigh");
|
||||
if (!StrUtil.equals(result.getString("status"), "200")) {
|
||||
throw new BadRequestException((String)result.get("message"));
|
||||
}
|
||||
List<Map> ws = new ArrayList<>();
|
||||
Map map = new HashMap<>();
|
||||
map.put("deviceinstor_weight",StringUtils.isEmpty(result.getString("weight"))?"0":result.getString("weight"));
|
||||
map.put("device_code",devices.get(0));
|
||||
ws.add(map);
|
||||
return new ResponseEntity<>(TableDataInfo.build(ws),HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/weighingFinish")
|
||||
@Log("深坑倒料确认")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> weighingFinish(@RequestBody JSONObject form) {
|
||||
List<Map> list = new ArrayList<>();
|
||||
String device_code = form.getString("device_code");
|
||||
|
||||
MdMeMaterialbase one = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>()
|
||||
.eq("material_code", form.getString("material_code")));
|
||||
if (one ==null){
|
||||
throw new BadRequestException("当前物料编码不存在"+form.getString("material_code"));
|
||||
}
|
||||
iDeviceService.update(new UpdateWrapper<PdmBiDevice>()
|
||||
.set("material_id",one.getMaterial_id())
|
||||
.set("remark","")
|
||||
.set("deviceinstor_weight",form.getBigDecimal("deviceinstor_weight"))
|
||||
.eq("device_code",device_code));
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/materialList")
|
||||
@Log("物料列表")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> materialList(@RequestBody JSONObject query, PageQuery page) {
|
||||
List<Map> list = new ArrayList<>();
|
||||
QueryWrapper<MdMeMaterialbase> queryWrapper = new QueryWrapper<>();
|
||||
if (StringUtils.isNotEmpty(query.getString("material_code"))){
|
||||
queryWrapper.eq("material_code",query.getString("material_code"));
|
||||
}
|
||||
Page<MdMeMaterialbase> result = materialbaseService.page(page.build(),queryWrapper);
|
||||
return new ResponseEntity<>(TableDataInfo.build(result),HttpStatus.OK);
|
||||
}
|
||||
|
||||
/*-----------------清洗下料---------------------*/
|
||||
@PostMapping("/washTasks")
|
||||
@Log("物料列表")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> washTasks(@RequestBody JSONObject query) {
|
||||
List<Map<String, Object>> taskMap = taskService.listMaps(new QueryWrapper<SchBaseTask>()
|
||||
.eq("task_status", StatusEnum.TASK_FINISH.getCode()).eq("task_step", 2));
|
||||
if (!CollectionUtils.isEmpty(taskMap)){
|
||||
Set materials = taskMap.stream().map(a->a.get("material_id")).collect(Collectors.toSet());
|
||||
Map<String, MdMeMaterialbase> materialMap = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>()
|
||||
.in("material_id", materials))
|
||||
.stream().collect(HashMap::new, (k, v) -> k.put(v.getMaterial_id(), v), HashMap::putAll);
|
||||
for (Map task : taskMap) {
|
||||
MdMeMaterialbase materialbase = materialMap.get(task.get("material_id"));
|
||||
task.put("material_name",materialbase!=null?materialbase.getMaterial_name():"");
|
||||
task.put("material_code",materialbase!=null?materialbase.getMaterial_code():"");
|
||||
task.put("material_spec",materialbase!=null?materialbase.getMaterial_spec():"");
|
||||
}
|
||||
}
|
||||
return new ResponseEntity<>(TableDataInfo.build(taskMap),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("//washTaskFinish")
|
||||
@Log("强制完成任务")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> washTaskFinish(@RequestBody JSONObject query) {
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_step",3)
|
||||
.eq("task_id",query.getString("task_id")));
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/washVechileInfo")
|
||||
@Log("物料列表")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> washVechileInfo(@RequestBody JSONObject query) {
|
||||
JSONObject req = new JSONObject();
|
||||
req.put("device_code","A1_CPQXJ_01_X");
|
||||
JSONObject result = wmsToAcsService.request(req, "api/wms/handWeight");
|
||||
if (!StrUtil.equals(result.getString("status"), "200")) {
|
||||
throw new BadRequestException((String)result.get("message"));
|
||||
}
|
||||
List<Object> list = new ArrayList<>();
|
||||
list.add(MapOf.of("weight",result.get("weight"),"vechile_code",result.getString("vechile_code")));
|
||||
return new ResponseEntity<>(TableDataInfo.build(list),HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import io.swagger.annotations.Api;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.plotter.PlotterCallEmptyTask;
|
||||
@@ -25,6 +26,7 @@ import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
@@ -51,7 +53,7 @@ public class TmpKZController {
|
||||
* @param param
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping("deviceinstorQty")
|
||||
@PostMapping("deviceinstorQty")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> deviceinstorQty(@RequestBody JSONObject param){
|
||||
SchBasePoint one = basePointService.getOne(new QueryWrapper<SchBasePoint>()
|
||||
@@ -70,7 +72,7 @@ public class TmpKZController {
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
|
||||
@RequestMapping("callVechile")
|
||||
@PostMapping("callVechile")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> callVechile(@RequestBody JSONObject param){
|
||||
plotterCallEmptyTask.callEmpVechile(param.getString("device_code"));
|
||||
@@ -78,7 +80,7 @@ public class TmpKZController {
|
||||
}
|
||||
|
||||
//鞋料
|
||||
@RequestMapping("kzunload")
|
||||
@PostMapping("kzunload")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> kzunload(@RequestBody JSONObject param) {
|
||||
JSONObject jo = new JSONObject();
|
||||
@@ -89,45 +91,51 @@ public class TmpKZController {
|
||||
}
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
@RequestMapping("kzresidue")
|
||||
@PostMapping("kzresidue")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> kzresidue(@RequestBody JSONObject param){
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("next_point_code", param.getString("device_code"));
|
||||
jo.put("start_point_code", "A1_KZ_SL");
|
||||
jo.put("weight", param.getString("qty"));
|
||||
JSONObject result = wmsToAcsService.request(jo, "api/wms/putOver");
|
||||
if (!StrUtil.equals(result.getString("status"), "200")) {
|
||||
throw new BadRequestException((String)result.get("message"));
|
||||
}
|
||||
RedissonUtils.lock(()->{
|
||||
JSONObject jo = new JSONObject();
|
||||
jo.put("next_point_code", param.getString("device_code"));
|
||||
jo.put("start_point_code", "A1_KZ_SL");
|
||||
jo.put("weight", param.getString("qty"));
|
||||
JSONObject result = wmsToAcsService.request(jo, "api/wms/putOver");
|
||||
if (!StrUtil.equals(result.getString("status"), "200")) {
|
||||
throw new BadRequestException((String)result.get("message"));
|
||||
}
|
||||
},"kzresidue",null);
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
@RequestMapping("tmpcallVechile")
|
||||
@PostMapping("tmpcallVechile")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> tmpcallVechile(@RequestBody JSONObject param){
|
||||
JSONObject moveTask =taskService.createMoveTask("A1_BCPRKW_SD", "A1_KZ_SL", AcsTaskEnum.TASK_POINT_TO_POINT, AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20);
|
||||
JSONArray data = new JSONArray();
|
||||
data.add(moveTask);
|
||||
Map<String, Object> result = wmsToAcsService.issueTaskToAcs2(data);
|
||||
if (StrUtil.equals((String)result.get("status"), "400")) {
|
||||
throw new BadRequestException((String)result.get("message"));
|
||||
}
|
||||
moveTask.put("task_status",StatusEnum.TASK_PUBLISH.getCode());
|
||||
taskService.save(moveTask.toJavaObject(SchBaseTask.class));
|
||||
RedissonUtils.lock(()->{
|
||||
JSONObject moveTask =taskService.createMoveTask("A1_BCPRKW_SD", "A1_KZ_SL", AcsTaskEnum.TASK_POINT_TO_POINT, AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20);
|
||||
JSONArray data = new JSONArray();
|
||||
data.add(moveTask);
|
||||
Map<String, Object> result = wmsToAcsService.issueTaskToAcs2(data);
|
||||
if (StrUtil.equals((String)result.get("status"), "400")) {
|
||||
throw new BadRequestException((String)result.get("message"));
|
||||
}
|
||||
moveTask.put("task_status",StatusEnum.TASK_FINISH.getCode());
|
||||
taskService.save(moveTask.toJavaObject(SchBaseTask.class));
|
||||
},"刻字上料呼叫载具",null);
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
@RequestMapping("tmpsendVechile")
|
||||
@PostMapping("tmpsendVechile")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> tmpsendVechile(@RequestBody JSONObject param){
|
||||
JSONObject moveTask = taskService.createMoveTask("A1_KZ_SL", "A1_BCPRKW_SD", AcsTaskEnum.TASK_POINT_TO_POINT, AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20);
|
||||
JSONArray data = new JSONArray();
|
||||
data.add(moveTask);
|
||||
Map<String, Object> result = wmsToAcsService.issueTaskToAcs2(data);
|
||||
if (StrUtil.equals((String)result.get("status"), "400")) {
|
||||
throw new BadRequestException((String)result.get("message"));
|
||||
}
|
||||
moveTask.put("task_status",StatusEnum.TASK_PUBLISH.getCode());
|
||||
taskService.save(moveTask.toJavaObject(SchBaseTask.class));
|
||||
RedissonUtils.lock(()->{
|
||||
JSONObject moveTask = taskService.createMoveTask("A1_KZ_SL", "A1_BCPRKW_SD", AcsTaskEnum.TASK_POINT_TO_POINT, AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20);
|
||||
JSONArray data = new JSONArray();
|
||||
data.add(moveTask);
|
||||
Map<String, Object> result = wmsToAcsService.issueTaskToAcs2(data);
|
||||
if (StrUtil.equals((String)result.get("status"), "400")) {
|
||||
throw new BadRequestException((String)result.get("message"));
|
||||
}
|
||||
moveTask.put("task_status",StatusEnum.TASK_FINISH.getCode());
|
||||
taskService.save(moveTask.toJavaObject(SchBaseTask.class));
|
||||
},"刻字上料送载具",null);
|
||||
return new ResponseEntity<>( HttpStatus.OK);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.nl.wms.product_manage.controller.device;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -15,6 +16,8 @@ import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import org.nl.wms.product_manage.service.device.dto.DeviceQuery;
|
||||
import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService;
|
||||
import org.nl.wms.product_manage.service.workprocedure.dao.PdmBiWorkprocedure;
|
||||
import org.nl.wms.product_manage.备份pdm.service.DeviceService;
|
||||
import org.nl.wms.product_manage.备份pdm.service.dto.DeviceDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -40,6 +43,9 @@ public class PdmBiDeviceController {
|
||||
private DeviceService deviceService;
|
||||
@Autowired
|
||||
private IPdmBiDeviceService iDeviceService;
|
||||
@Autowired
|
||||
private IPdmBiWorkprocedureService pdmBiWorkprocedureService;
|
||||
|
||||
|
||||
@GetMapping
|
||||
@Log("查询生产设备")
|
||||
@@ -96,10 +102,8 @@ public class PdmBiDeviceController {
|
||||
|
||||
@GetMapping("/getWorkprocedure")
|
||||
@Log("工序下拉")
|
||||
//("工序下拉")
|
||||
//@PreAuthorize("@el.check('device:list')")
|
||||
public ResponseEntity<Object> getWorkprocedure () {
|
||||
return new ResponseEntity<>(deviceService.getWorkprocedure(), HttpStatus.OK);
|
||||
return new ResponseEntity<>(pdmBiWorkprocedureService.list(new QueryWrapper<PdmBiWorkprocedure>().eq("is_used",true)), HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/getDeviceList")
|
||||
|
||||
@@ -2,6 +2,7 @@ package org.nl.wms.product_manage.controller.device;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
@@ -67,7 +68,7 @@ public class SpecialDeviceController {
|
||||
@Log("更新物料")
|
||||
//("更新物料")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryList (@RequestBody JSONObject query){
|
||||
public ResponseEntity<Object> update (@RequestBody JSONObject query){
|
||||
String device_code = query.getString("device_code");
|
||||
if (StringUtils.isNotEmpty(device_code)){
|
||||
iDeviceService.update(new UpdateWrapper<PdmBiDevice>()
|
||||
@@ -93,5 +94,15 @@ public class SpecialDeviceController {
|
||||
}
|
||||
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/setUsed")
|
||||
@Log("设置启停")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> setUsed (@RequestBody JSONObject query){
|
||||
Assert.notNull(new Object[]{query,query.getString("device_code"),query.get("is_used")},"请求参数不能为空");
|
||||
iDeviceService.update(new UpdateWrapper<PdmBiDevice>()
|
||||
.set("is_used",query.getBoolean("is_used"))
|
||||
.eq("device_code",query.getString("device_code")));
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,8 +14,10 @@ import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.WqlUtil;
|
||||
import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService;
|
||||
import org.nl.wms.product_manage.备份pdm.service.DeviceService;
|
||||
import org.nl.wms.product_manage.备份pdm.service.dto.DeviceDto;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -33,6 +35,8 @@ import java.util.Map;
|
||||
@RequiredArgsConstructor
|
||||
@Slf4j
|
||||
public class DeviceServiceImpl implements DeviceService {
|
||||
@Autowired
|
||||
private IPdmBiWorkprocedureService pdmBiWorkprocedureService;
|
||||
|
||||
@Override
|
||||
public Map<String,Object> queryAll(Map whereJson, Pageable page){
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
package org.nl.wms.scheduler_manage.service.extendtask;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import groovy.lang.GroovyShell;
|
||||
import groovy.lang.Script;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.ConstantParam;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.enums.WorkerOrderEnum;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWashorderService;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWashorder;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.AbstractAcsTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.FileSystemResourceLoader;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 专机任务
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class WashMachineryTask extends AbstractAcsTask {
|
||||
private static final String SK_WORKPRODURE_ID = "1535144552481034240";
|
||||
@Autowired
|
||||
private IPdmProduceWashorderService iPdmProduceWashorderService;
|
||||
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
@Autowired
|
||||
private IMdMeMaterialbaseService materialbaseService;
|
||||
@Autowired
|
||||
private IPdmBiDeviceService deviceService;
|
||||
|
||||
FileSystemResourceLoader loader = new FileSystemResourceLoader();
|
||||
GroovyShell groovyShell = new GroovyShell();
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateTaskStatus(JSONObject param,String status) {
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||
|
||||
Assert.notEmpty(new Object[]{param,param.getString("workorder_id")},"参数不能为空");
|
||||
String inDevices = param.getString("in_devices");
|
||||
String workorderId = param.getString("workorder_id");
|
||||
if (!StringUtils.isBlank(inDevices)){
|
||||
String sql = Arrays.stream(inDevices.split(",")).collect(Collectors.joining("','"));
|
||||
//跟新工单:状态为完成;跟新点位 material_id is not null and point_status = '2'
|
||||
pointTab.update(MapOf.of("material_id","","point_status","1"),"point_code in ('"+sql+"')");
|
||||
QueryWrapper<PdmProduceWashorder> query = new QueryWrapper<>();
|
||||
PdmProduceWashorder update = new PdmProduceWashorder();
|
||||
update.setIs_error(false);
|
||||
update.setError_info("");
|
||||
update.setUpdate_time(DateUtil.now());
|
||||
update.setCreate_name("acs");
|
||||
update.setStatus(StatusEnum.TASK_FINISH.getCode());
|
||||
iPdmProduceWashorderService.update(update,new QueryWrapper<PdmProduceWashorder>().eq("workorder_id",workorderId));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@SneakyThrows
|
||||
public String createTask(JSONObject param) {
|
||||
//清洗机是否有物料重量上线?{"device_code":"A1_CPQXJ_01_S","type":"7"}
|
||||
PdmProduceWashorder status = iPdmProduceWashorderService.getOne(new QueryWrapper<PdmProduceWashorder>().lt("status", WorkerOrderEnum.COMPLETE.getCode()));
|
||||
if (status!=null){
|
||||
return "";
|
||||
}
|
||||
//TODO:判断是否人工仓优先:人工仓一台一台爬,机械仓根据物料爬
|
||||
QueryWrapper<PdmBiDevice> query = new QueryWrapper<PdmBiDevice>()
|
||||
.gt("deviceinstor_qty", 0)
|
||||
.eq("is_used", true)
|
||||
.eq("workprocedure_id", SK_WORKPRODURE_ID)
|
||||
.isNotNull("material_id")
|
||||
.orderByDesc("deviceinstor_qty");
|
||||
|
||||
List<PdmBiDevice> SKQX = deviceService.list(query);
|
||||
|
||||
//查询深坑相同物料类型的点位:深坑单位:重量
|
||||
if (SKQX.size()>0){
|
||||
|
||||
Map<String, List<PdmBiDevice>> collect = SKQX.stream().collect(Collectors.groupingBy(PdmBiDevice::getMaterial_id));
|
||||
//查询清洗设备最大重量
|
||||
Resource resource = loader.getResource("classpath:/groovyFile.groovy");
|
||||
Script script = groovyShell.parse(resource.getFile());
|
||||
ArrayList<JSONObject> result = (ArrayList)script.invokeMethod("getPoints", new Object[]{SKQX, collect, 9999999d});
|
||||
//确认acs参数 创建工单下发acs
|
||||
if (!CollectionUtils.isEmpty(result)){
|
||||
String material_id = result.get(0).getString("material_id");
|
||||
MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_id", material_id).eq("is_delete", false));
|
||||
PdmProduceWashorder washorder = new PdmProduceWashorder();
|
||||
washorder.setWorkorder_id(IdUtil.getStringId());
|
||||
washorder.setWorkorder_code(IdUtil.getStringId());
|
||||
washorder.setDevice_code(param.getString("device_code"));
|
||||
washorder.setWeight(new BigDecimal(result.stream().mapToDouble(value -> value.getDouble("weight")).sum()));
|
||||
washorder.setQty(new BigDecimal(result.stream().mapToDouble(value -> value.getDouble("qty")).sum()));
|
||||
washorder.setMaterial_code(material.getMaterial_code());
|
||||
washorder.setMaterial_spec(material.getMaterial_spec());
|
||||
washorder.setMaterial_id(material.getMaterial_id());
|
||||
washorder.setCreate_time(DateUtil.now());
|
||||
washorder.setIn_devices(result.stream().map(a->a.getString("device_code")).collect(Collectors.joining(",")));
|
||||
washorder.setProduct_area("A1");
|
||||
washorder.setCreate_id("1");
|
||||
washorder.setCreate_name("acs");
|
||||
washorder.setStatus(StatusEnum.TASK_CREATE.getCode());
|
||||
//下发:"人工框:一个一个爬坡:是人工仓优先还是自动仓优先
|
||||
JSONArray request = new JSONArray();
|
||||
JSONObject jsonObject = new JSONObject(MapOf.of("workorder_id", washorder.getWorkorder_id()
|
||||
, "workorder_code", washorder.getWorkorder_code()
|
||||
, "qty", washorder.getQty()
|
||||
,"weight",washorder.getWeight()
|
||||
, "material_code", washorder.getMaterial_code()
|
||||
, "material_spec", washorder.getMaterial_spec()
|
||||
, "device_code", washorder.getDevice_code()
|
||||
, "in_devices", washorder.getIn_devices()
|
||||
));
|
||||
request.add(jsonObject);
|
||||
Map<String, Object> response = wmsToAcsService.order(request);
|
||||
if (response.get("status").equals(HttpStatus.BAD_REQUEST)){
|
||||
washorder.setError_info((String) response.get("message"));
|
||||
washorder.setStatus(StatusEnum.TASK_START_ERROR.getCode());
|
||||
washorder.setIs_error(true);
|
||||
}
|
||||
iPdmProduceWashorderService.save(washorder);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancel(String taskId) {
|
||||
|
||||
}
|
||||
@Override
|
||||
public void pointConfirm(JSONObject param) {
|
||||
//查询深坑相同物料类型的点位
|
||||
WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point");
|
||||
JSONArray points = pointTab.query("material_id is not null and point_status = 1 and is_used = 1 and lock_type = 0 and region_code = '" + ConstantParam.SK_REGION + "'").getResultJSONArray(0);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -35,7 +36,7 @@ public abstract class AbstractAcsTask {
|
||||
public void notifyAcs(JSONArray param){};
|
||||
|
||||
public List<SchBaseTask> schedulerTask(List<SchBaseTask> tasks){
|
||||
return tasks;
|
||||
return new ArrayList<>();
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -110,7 +110,10 @@ public class WrapCallMaterialTask extends AbstractAcsTask {
|
||||
Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
|
||||
//?刻字满料请求:可以存在多个任务?
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.eq("point_code2", param.getString("device_code")).lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||
.nested(i -> i
|
||||
.eq("point_code1", param.getString("device_code")).or()
|
||||
.eq("point_code3", param.getString("device_code")))
|
||||
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||
);
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
|
||||
|
||||
@@ -105,10 +105,13 @@ public class WrapSendEmptyTask extends AbstractAcsTask {
|
||||
throw new BadRequestException("起点不能为空!");
|
||||
}
|
||||
// 判断当前点是否有未完成的任务
|
||||
JSONObject taskObj = taskTab.query("is_delete='0' and point_code1 = '" + start_point_code + "' " +
|
||||
"and task_status <> '" + StatusEnum.TASK_FINISH.getCode() + "' " +
|
||||
"and task_status <> '" + StatusEnum.TASK_CANNEL.getCode() + "'").uniqueResult(0);
|
||||
if (ObjectUtil.isNotEmpty(taskObj)) {
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.nested(i -> i
|
||||
.eq("point_code1", param.getString("device_code")).or()
|
||||
.eq("point_code3", param.getString("device_code")))
|
||||
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
|
||||
);
|
||||
if (ObjectUtil.isNotEmpty(list)) {
|
||||
throw new BadRequestException("当前点位" + start_point_code + "存在未完成的任务");
|
||||
}
|
||||
String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + "";
|
||||
|
||||
@@ -0,0 +1,178 @@
|
||||
package org.nl.wms.scheduler_manage.service.extendtask.wash;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import groovy.lang.GroovyShell;
|
||||
import groovy.lang.Script;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.domain.ConstantParam;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.enums.WorkerOrderEnum;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.MapOf;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
|
||||
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWashorderService;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWashorder;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.AbstractAcsTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.core.io.FileSystemResourceLoader;
|
||||
import org.springframework.core.io.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 专机任务
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class WashMachineryTask extends AbstractAcsTask {
|
||||
private static String SK_WORKPRODURE_ID = "1535144552481034240";
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private WmsToAcsService wmsToAcsService;
|
||||
@Autowired
|
||||
private IPdmBiDeviceService deviceService;
|
||||
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateTaskStatus(JSONObject param,String status) {
|
||||
QueryWrapper<SchBaseTask> query = new QueryWrapper<>();
|
||||
if (StringUtils.isNotEmpty(param.getString("in_pcsn"))){
|
||||
query.eq("task_code",param.getString("in_pcsn"));
|
||||
}
|
||||
if (StringUtils.isNotEmpty(param.getString("task_id"))){
|
||||
query.eq("task_id",param.getString("task_id"));
|
||||
}
|
||||
SchBaseTask taskDao = taskService.getOne(query);
|
||||
// 更新任务状态为完成
|
||||
if (taskDao.getTask_status().equals(TaskStatusEnum.FINISHED.getCode())||taskDao.getTask_status().equals(TaskStatusEnum.CANCEL.getCode())){
|
||||
return;
|
||||
}
|
||||
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||
taskDao.setTask_step(2);
|
||||
taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode());
|
||||
taskDao.setUpdate_time(new Date());
|
||||
taskDao.setFinished_type(AcsTaskEnum.AUTO_TASK_FINISHED_TYPE.getCode());
|
||||
taskDao.setUpdate_name("acs");
|
||||
deviceService.update(new UpdateWrapper<PdmBiDevice>()
|
||||
.set("material_id","")
|
||||
.set("is_used",true)
|
||||
.set("deviceinstor_qty",0)
|
||||
.set("deviceinstor_weight",0)
|
||||
.set("update_time",DateUtil.now())
|
||||
.in("device_code",taskDao.getPoint_code1().split(",")));
|
||||
}
|
||||
if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
|
||||
taskDao.setTask_status(TaskStatusEnum.EXECUTING.getCode());
|
||||
}
|
||||
if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
|
||||
taskDao.setTask_status(TaskStatusEnum.CANCEL.getCode());
|
||||
deviceService.update(new UpdateWrapper<PdmBiDevice>()
|
||||
.set("is_used",true)
|
||||
.set("update_time",DateUtil.now())
|
||||
.set("remark","")
|
||||
.in("device_code",taskDao.getPoint_code1().split(",")));
|
||||
}
|
||||
taskService.updateById(taskDao);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public String createTask(JSONObject param) {
|
||||
//清洗机是否有物料重量上线?{"devices":"string[]","material_id":"7"}
|
||||
List<PdmBiDevice> devices = (List<PdmBiDevice>) param.get("devices");
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.in("point_code2", devices.stream().map(PdmBiDevice::getDevice_code).collect(Collectors.toList()))
|
||||
.lt("task_status", StatusEnum.TASK_FINISH.getCode()));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
throw new BadRequestException("当前点位存在正在执行的任务:"
|
||||
+list.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
|
||||
}
|
||||
JSONArray data = new JSONArray();
|
||||
JSONArray items = new JSONArray();
|
||||
ArrayList<String> start_points = new ArrayList<>();
|
||||
|
||||
JSONObject task = new JSONObject();
|
||||
task.put("task_id", IdUtil.getStringId());
|
||||
task.put("task_name", AcsTaskEnum.REQUEST_WASH_SEND_MATERIAL.getDesc());
|
||||
task.put("task_type", AcsTaskEnum.REQUEST_WASH_SEND_MATERIAL.getCode());
|
||||
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.put("task_status", StatusEnum.TASK_PUBLISH.getCode());
|
||||
task.put("point_code3", "A1_SKQXJ_01_S");//A1_SKQXJ_01_X
|
||||
task.put("handle_class", this.getClass().getName());
|
||||
task.put("is_send", "1");
|
||||
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
|
||||
task.put("create_id", SecurityUtils.getCurrentUserId());
|
||||
task.put("create_name", SecurityUtils.getCurrentNickName());
|
||||
task.put("create_time", DateUtil.now());
|
||||
task.put("is_auto_issue", false);
|
||||
task.put("priority", "1");
|
||||
task.put("task_step", 1);
|
||||
task.put("material_id",devices.get(0).getMaterial_id());
|
||||
task.put("material_qty",devices.stream().mapToInt(a->a.getDeviceinstor_weight().intValue()).sum());
|
||||
|
||||
task.put("point_code1",devices.stream().map(PdmBiDevice::getDevice_code).collect(Collectors.joining(",")));
|
||||
taskService.save(task.toJavaObject(SchBaseTask.class));
|
||||
// 下发
|
||||
JSONObject acsRequest = new JSONObject(MapOf.of("device_code","A1_CPQXJ_01_S","in_pcsn",task.getString("task_code"),"in_devices",task.getString("point_code1")));
|
||||
JSONObject result = wmsToAcsService.request(acsRequest, "api/wms/cleaningIn");
|
||||
if (!StrUtil.equals(result.getString("status"), "200")) {
|
||||
throw new BadRequestException((String)result.get("message"));
|
||||
}
|
||||
deviceService.update(new UpdateWrapper<PdmBiDevice>()
|
||||
.set("is_used",false)
|
||||
.set("update_time",DateUtil.now())
|
||||
.set("remark",task.getString("task_id"))
|
||||
.in("device_code",devices.stream().map(PdmBiDevice::getDevice_code).collect(Collectors.toList())));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void cancel(String taskId) {
|
||||
SchBaseTask taskDao = taskService.getById(taskId);
|
||||
if (taskDao !=null){
|
||||
taskDao.setTask_status(TaskStatusEnum.CANCEL.getCode());
|
||||
deviceService.update(new UpdateWrapper<PdmBiDevice>()
|
||||
.set("is_used",true)
|
||||
.eq("device_code",taskDao.getPoint_code1()));
|
||||
taskService.updateById(taskDao);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void pointConfirm(JSONObject param) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -66,7 +66,6 @@ public class SchBaseTaskServiceImpl extends ServiceImpl<SchBaseTaskMapper, SchBa
|
||||
String task_id = MapUtil.getStr(map, "task_id");
|
||||
String method_name = MapUtil.getStr(map, "method_name");
|
||||
SchBaseTask taskObj = this.getOne(new QueryWrapper<SchBaseTask>().eq("task_id", task_id));
|
||||
|
||||
switch (method_name) { // forceFinish, cancel
|
||||
case "immediateNotifyAcs":
|
||||
if (Integer.valueOf(taskObj.getTask_status())<Integer.valueOf(TaskStatusEnum.EXECUTING.getCode())){
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
package org.nl.wms.storage_manage.productmanage.controller.moreOrLess;
|
||||
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
import org.nl.wms.mps_manage.deliveryorder.service.IPcsDeliveryOrderService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.moreOrLess.IStIfDeliveryorderCpService;
|
||||
import org.nl.wms.storage_manage.productmanage.service.moreOrLess.dto.DeliveQuery;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -16,6 +22,9 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* 销售发货单表 前端控制器
|
||||
@@ -34,11 +43,18 @@ public class StIfDeliveryorderCpController {
|
||||
@Autowired
|
||||
private IStIfDeliveryorderCpService iStIfDeliveryorderCpService;
|
||||
|
||||
@Autowired
|
||||
private IPcsDeliveryOrderService pcsDeliveryOrderService;
|
||||
|
||||
@GetMapping
|
||||
@Log("查询生产订单")
|
||||
//("查询生产订单")
|
||||
public ResponseEntity<Object> query(DeliveQuery query, PageQuery page){
|
||||
return new ResponseEntity<>(iStIfDeliveryorderCpService.pageQuery(query,page), HttpStatus.OK);
|
||||
Page<Object> pageable = PageHelper.startPage(page.getPage() + 1, page.getSize());
|
||||
List<Map> mst_detail = pcsDeliveryOrderService.queryAll((Map) JSON.toJSON(query));
|
||||
TableDataInfo<Map> build = TableDataInfo.build(mst_detail);
|
||||
build.setTotalElements(pageable.getTotal());
|
||||
return new ResponseEntity<>(build, HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -97,18 +97,21 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
|
||||
.eq(MpsSaleOrder::getSale_code, row.getBase_bill_code())
|
||||
.eq(MpsSaleOrder::getSeq_no, row.getBase_bill_table())
|
||||
);
|
||||
if (ObjectUtil.isEmpty(orderDao))
|
||||
throw new BadRequestException("销售单不存在!");
|
||||
// if (ObjectUtil.isEmpty(orderDao)) {
|
||||
// throw new BadRequestException("销售单不存在!");
|
||||
// }
|
||||
|
||||
row.setBase_billdtl_id(orderDao.getSale_id().toString());
|
||||
row.setBase_bill_code(orderDao.getSale_code());
|
||||
row.setBase_bill_type(orderDao.getSale_type());
|
||||
row.setBase_bill_table(orderDao.getSeq_no().toString());
|
||||
row.setBase_billdtl_id(orderDao==null?"":orderDao.getSale_id().toString());
|
||||
row.setBase_bill_code(row.getBase_bill_code());
|
||||
row.setBase_bill_type(orderDao==null?"":orderDao.getSale_type());
|
||||
row.setBase_bill_table(row.getBase_bill_table());
|
||||
|
||||
if (IOSEnum.IO_TYPE.code("入库").equals(mstDao.getIo_type())){
|
||||
// 入库: 更新销售单状态
|
||||
orderDao.setStatus(IOSEnum.ORDER_STATUS.code("提交"));
|
||||
iMpsSaleOrderService.updateById(orderDao);
|
||||
if (orderDao!=null){
|
||||
orderDao.setStatus(IOSEnum.ORDER_STATUS.code("提交"));
|
||||
iMpsSaleOrderService.updateById(orderDao);
|
||||
}
|
||||
} else {
|
||||
// 出库: 更新发货单状态
|
||||
iStIfDeliveryorderCpService.update(
|
||||
@@ -130,6 +133,8 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
|
||||
row.setBill_status(IOSEnum.BILL_STATUS.code("生成"));
|
||||
row.setReal_qty(row.getPlan_qty());
|
||||
row.setUnassign_qty(row.getPlan_qty());
|
||||
row.setQty_unit_id("16");
|
||||
row.setQty_unit_name("个\\只");
|
||||
this.save(row);
|
||||
total_qty += row.getPlan_qty().doubleValue();
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
@@ -39,14 +40,20 @@ public class SysDictController {
|
||||
private final ISysDictService dictService;
|
||||
|
||||
@GetMapping
|
||||
//("查询字典")
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery pageable){
|
||||
return new ResponseEntity<>(TableDataInfo.build(dictService.queryAll(whereJson,pageable)), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("all")
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> queryAll(@RequestBody JSONObject whereJson){
|
||||
List<Dict> list = dictService.list(new QueryWrapper<Dict>()
|
||||
.eq("code", StringUtils.isEmpty(whereJson.getString("code"))?"product_area":whereJson.getString("code"))
|
||||
.select("code","label","value"));
|
||||
return new ResponseEntity<>(TableDataInfo.build(list),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@Log("新增字典")
|
||||
@PostMapping
|
||||
//("新增字典")
|
||||
public ResponseEntity<Object> create(@RequestBody Dict dict){
|
||||
dictService.create(dict);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
@@ -54,30 +61,24 @@ public class SysDictController {
|
||||
|
||||
@PutMapping
|
||||
@Log("修改字典")
|
||||
//("修改字典")
|
||||
//@SaCheckPermission("@el.check('dict:edit')")
|
||||
public ResponseEntity<Object> updateDict(@Validated @RequestBody Dict dto){
|
||||
dictService.updateDict(dto);
|
||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||
}
|
||||
|
||||
@Log("删除字典")
|
||||
//("删除字典")
|
||||
@DeleteMapping
|
||||
// @SaCheckPermission("dict:del")
|
||||
public ResponseEntity<Object> delete(@RequestBody Set<String> ids){
|
||||
dictService.deleteBatchByIds(ids);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@GetMapping("/dictDetail")
|
||||
//("查询字典详情")
|
||||
public ResponseEntity<Object> queryDetails(@RequestParam Map criteria, PageQuery pageable){
|
||||
DictQuery dictQuery = JSONObject.parseObject(JSONObject.toJSONString(criteria), DictQuery.class);
|
||||
return new ResponseEntity<>(TableDataInfo.build(dictService.queryAllDetail(dictQuery,pageable)),HttpStatus.OK);
|
||||
}
|
||||
|
||||
//("查询多个字典详情")
|
||||
@GetMapping(value = "/dictDetail/map")
|
||||
public ResponseEntity<Object> getDictDetailMaps(@RequestParam String dictName){
|
||||
String[] names = dictName.split("[,,]");
|
||||
@@ -89,9 +90,7 @@ public class SysDictController {
|
||||
}
|
||||
|
||||
@Log("新增字典详情")
|
||||
//("新增字典详情")
|
||||
@PostMapping("/dictDetail")
|
||||
// @SaCheckPermission("dict:add")
|
||||
public ResponseEntity<Object> createDetail(@RequestBody Dict resources){
|
||||
dictService.createDetail(resources);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
|
||||
@@ -131,7 +131,7 @@ generator:
|
||||
|
||||
#是否开启 swagger-ui
|
||||
swagger:
|
||||
enabled: true
|
||||
enabled: false
|
||||
|
||||
# IP 本地解析
|
||||
ip:
|
||||
|
||||
@@ -2,7 +2,7 @@ spring:
|
||||
freemarker:
|
||||
check-template-location: false
|
||||
profiles:
|
||||
active: dev
|
||||
active: dev3
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
data:
|
||||
|
||||
@@ -19,7 +19,7 @@ https://juejin.cn/post/6844903775631572999
|
||||
<!--引入默认的一些设置-->
|
||||
<!-- <include resource="log/AutoCreateInst.xml"/>-->
|
||||
<appender name="esLogAppender" class="com.internetitem.logback.elasticsearch.ElasticsearchAppender">
|
||||
<url>http://127.0.0.1:9200/_bulk</url>
|
||||
<url>http://192.168.46.225:9200/_bulk</url>
|
||||
<index>${esIndex}</index>
|
||||
<type>mes_log</type>
|
||||
<loggerName>es-logger</loggerName> <!-- optional -->
|
||||
|
||||
@@ -14,7 +14,17 @@ export function edit(data) {
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}export function setEmp(data) {
|
||||
}
|
||||
|
||||
export function setUsed(data) {
|
||||
return request({
|
||||
url: 'api/specialDevice/setUsed',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function setEmp(data) {
|
||||
return request({
|
||||
url: 'api/specialDevice/setEmp',
|
||||
method: 'post',
|
||||
@@ -22,4 +32,4 @@ export function edit(data) {
|
||||
})
|
||||
}
|
||||
|
||||
export default { query, setEmp, edit }
|
||||
export default { query, setEmp, edit, setUsed }
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
@keyup.enter.native="crud.toQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item >
|
||||
<el-form-item>
|
||||
<rrOperation :permission="permission" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -60,7 +60,7 @@
|
||||
</crudOperation>
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync=pointMVisible
|
||||
:visible.sync="pointMVisible"
|
||||
title="点位物料信息"
|
||||
width="540px"
|
||||
@close="materiValueCancel()"
|
||||
@@ -68,8 +68,8 @@
|
||||
<el-form ref="form" :model="materialForm" :rules="rules" size="mini" label-width="110px">
|
||||
<el-form-item label="物料编码" prop="material_code">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="materialForm.material_code" clearable @clear="materialForm.material_code='',materialForm.material_id='',materialForm.material_spec=''" style="width: 370px">
|
||||
<el-button slot="append" icon="el-icon-plus" @click="queryMater(scope.$index, scope.row)" />
|
||||
<el-input v-model="materialForm.material_code" clearable style="width: 370px" @clear="materialForm.material_code='',materialForm.material_id='',materialForm.material_spec=''">
|
||||
<el-button slot="append" icon="el-icon-plus" @click="queryMater(scope.$index, scope.row)" />
|
||||
</el-input>
|
||||
</template>
|
||||
</el-form-item>
|
||||
@@ -77,10 +77,10 @@
|
||||
<el-input v-model="materialForm.material_spec" disabled style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料数量(个)" prop="deviceinstor_qty">
|
||||
<el-input-number v-model="materialForm.deviceinstor_qty" clearable style="width: 370px;" />
|
||||
<el-input-number v-model="materialForm.deviceinstor_qty" clearable style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料重量(g)" prop="deviceinstor_weight">
|
||||
<el-input-number v-model="materialForm.deviceinstor_weight" clearable style="width: 370px;" />
|
||||
<el-input-number v-model="materialForm.deviceinstor_weight" clearable style="width: 370px;" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer">
|
||||
@@ -98,20 +98,35 @@
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column prop="product_area" label="生产车间" width="100px" show-overflow-tooltip />
|
||||
<el-table-column prop="product_area" label="生产车间" width="100px" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.product_area[scope.row.product_area] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="device_code" label="设备编码" width="100px" show-overflow-tooltip />
|
||||
<el-table-column prop="material_id" label="物料id" width="200px" show-overflow-tooltip />
|
||||
<el-table-column prop="material_code" label="物料编码" width="200px" show-overflow-tooltip />
|
||||
<el-table-column prop="material_spec" label="物料规格" width="200px" show-overflow-toolti />
|
||||
<el-table-column prop="deviceinstor_qty" label="物料数量(个)" align="center" width="120px" show-overflow-tooltip />
|
||||
<el-table-column prop="deviceinstor_weight" label="物料重量(g)" align="center" width="120px" show-overflow-tooltip />
|
||||
<el-table-column label="是否启用" align="center" prop="is_used">
|
||||
<template slot-scope="scope">
|
||||
<el-switch
|
||||
v-model="scope.row.is_used"
|
||||
active-color="#409EFF"
|
||||
inactive-color="#F56C6C"
|
||||
@change="changeEnabled(scope.row, scope.row.is_used)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="remark" label="备注" width="200px" show-overflow-tooltip />
|
||||
<el-table-column label="操作" width="150px" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
slot="left"
|
||||
@click="toEditMaterial(scope.row)">
|
||||
type="text"
|
||||
@click="toEditMaterial(scope.row)"
|
||||
>
|
||||
修改
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -138,29 +153,33 @@ import pagination from '@crud/Pagination'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import MaterDtl from '@/views/wms/pub/MaterDialog'
|
||||
|
||||
const defaultForm = { product_area: 'A1', workprocedure_id: '1535144552481034240', device_code: null, material_id: null, material_name: null,material_code: null, material_spec: null, deviceinstor_qty: null, deviceinstor_weight: null, remark: null }
|
||||
const defaultForm = { product_area: 'A1', workprocedure_id: '1535144552481034240', device_code: null, material_id: null, material_name: null, material_code: null, material_spec: null, deviceinstor_qty: null, deviceinstor_weight: null, remark: null }
|
||||
|
||||
export default {
|
||||
name: 'SKdevice',
|
||||
components: { crudOperation, pagination, rrOperation, MaterDtl },
|
||||
components: { crudOperation, pagination, rrOperation, MaterDtl },
|
||||
dicts: ['product_area'],
|
||||
cruds() {
|
||||
return [
|
||||
CRUD({ title: '深坑设备物料', url: 'api/specialDevice/query', query: { product_area: 'A1', workprocedure_id: '1535144552481034240' }, idField: 'device_code', crudMethod: { ...crudDevice },
|
||||
optShow: {add: false,
|
||||
edit: false,
|
||||
del: false,
|
||||
download: false,
|
||||
reset: true}})
|
||||
optShow: { add: false,
|
||||
edit: false,
|
||||
del: false,
|
||||
download: false,
|
||||
reset: true }, props: { size: 20 }})
|
||||
]
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm),crud()],
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
return {
|
||||
enabledTypeOptions: [
|
||||
{ key: true, display_name: '启用' },
|
||||
{ key: false, display_name: '禁用' }
|
||||
],
|
||||
materType: '',
|
||||
materialShow: false,
|
||||
pointMVisible: false,
|
||||
materialForm:{},
|
||||
materialForm: {},
|
||||
queryTypeOptions: [
|
||||
{ key: 'name', display_name: '字典名称' },
|
||||
{ key: 'description', display_name: '描述' }
|
||||
@@ -198,18 +217,17 @@ export default {
|
||||
this.materialForm.material_name = row.material_name
|
||||
this.materialForm.material_spec = row.material_spec // 通过splice 替换数据 触发视图更新
|
||||
},
|
||||
materiValueCancel(){
|
||||
materiValueCancel() {
|
||||
this.materialForm = {}
|
||||
this.dialogVisible = false
|
||||
this.pointMVisible = false
|
||||
},
|
||||
materiCancel(){
|
||||
this.materialForm.material_id = ""
|
||||
this.materialForm.material_code = ""
|
||||
this.materialForm.material_name = ""
|
||||
materiCancel() {
|
||||
this.materialForm.material_id = ''
|
||||
this.materialForm.material_code = ''
|
||||
this.materialForm.material_name = ''
|
||||
},
|
||||
pointMateriSubmit(){
|
||||
console.log(this.materialForm)
|
||||
pointMateriSubmit() {
|
||||
crudDevice.edit(this.materialForm).then(res => {
|
||||
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.materiValueCancel()
|
||||
@@ -223,12 +241,28 @@ export default {
|
||||
this.nowindex = index
|
||||
this.nowrow = row
|
||||
},
|
||||
// 改变状态
|
||||
changeEnabled(data, val) {
|
||||
const satus = this.enabledTypeOptions.find(item => { return item.key == data.is_used })
|
||||
|
||||
this.$confirm('此操作将 "' + satus.display_name + '" ' + data.device_name + ', 是否继续?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
crudDevice.setUsed(data).then(res => {
|
||||
this.crud.notify(satus.display_name + '成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
})
|
||||
}).catch(() => {
|
||||
data.is_used = !data.is_used
|
||||
})
|
||||
},
|
||||
updateSKMaterial(row) {
|
||||
crudDevice.edit(row).then(() => {
|
||||
this.notify('保存成功', 'success')
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -162,13 +162,12 @@
|
||||
<el-table-column prop="task_status_name" label="任务状态" width="120px" :formatter="formatTaskStatusName" />
|
||||
<el-table-column prop="point_code1" label="起点" :min-width="flexWidth('point_code1',crud.data,'起点')" />
|
||||
<el-table-column prop="point_code2" label="倒料点" :min-width="flexWidth('point_code2',crud.data,'终点')" />
|
||||
<el-table-column prop="point_code3" label="终点" :min-width="flexWidth('point_code3',crud.data,'返回点')" />
|
||||
<el-table-column prop="point_code3" label="终点" :min-width="flexWidth('point_code3',crud.data,'返回点')" />
|
||||
<el-table-column prop="product_area" label="生产车间" />
|
||||
<el-table-column prop="point1_region_name" label="起点区域" width="120" />
|
||||
<el-table-column prop="point2_region_name" label="倒料点区域" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="point3_region_name" label="终点区域" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="vehicle_code" label="载具编码1" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="vehicle_code2" label="载具编码2" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="vehicle_type" label="载具类型" min-width="100" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.vehicle_type[scope.row.vehicle_type] }}
|
||||
@@ -190,6 +189,7 @@
|
||||
<span>{{ parseTime(scope.row.update_time) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="task_step" label="任务执行步骤" min-width="100" show-overflow-tooltip />
|
||||
<el-table-column
|
||||
v-permission="['admin','instruction:edit','instruction:del']"
|
||||
fixed="right"
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
<!--托盘物料-->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync=dialogVisible
|
||||
:visible.sync="dialogVisible"
|
||||
title="载具物料信息"
|
||||
width="540px"
|
||||
@close="materiValueCancel()"
|
||||
@@ -71,8 +71,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="物料编码" prop="material_code">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="materialForm.material_code" clearable style="width: 370px">
|
||||
<el-button slot="append" icon="el-icon-plus" @click="queryMater(scope.$index, scope.row)" />
|
||||
<el-input v-model="materialForm.material_code" clearable style="width: 370px">
|
||||
<el-button slot="append" icon="el-icon-plus" @click="queryMater(scope.$index, scope.row)" />
|
||||
</el-input>
|
||||
</template>
|
||||
</el-form-item>
|
||||
@@ -80,7 +80,7 @@
|
||||
<el-input v-model="materialForm.material_spec" disabled style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料数量" prop="storage_qty">
|
||||
<el-input v-model="materialForm.storage_qty" clearable style="width: 370px;" />
|
||||
<el-input v-model="materialForm.storage_qty" clearable style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料重量" prop="weight">
|
||||
<el-input v-model="materialForm.weight" clearable style="width: 370px;" />
|
||||
@@ -94,7 +94,7 @@
|
||||
<!--点位物料-->
|
||||
<el-dialog
|
||||
:close-on-click-modal="false"
|
||||
:visible.sync=pointMVisible
|
||||
:visible.sync="pointMVisible"
|
||||
title="点位物料信息"
|
||||
width="540px"
|
||||
@close="materiValueCancel()"
|
||||
@@ -105,8 +105,8 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="物料编码" prop="material_code">
|
||||
<template slot-scope="scope">
|
||||
<el-input v-model="materialForm.material_code" clearable @clear="materialForm.material_code='',materialForm.material_id='',materialForm.material_name='',materialForm.material_spec=''" style="width: 370px">
|
||||
<el-button slot="append" icon="el-icon-plus" @click="queryMater(scope.$index, scope.row)" />
|
||||
<el-input v-model="materialForm.material_code" clearable style="width: 370px" @clear="materialForm.material_code='',materialForm.point_status='1',materialForm.material_id='',materialForm.material_name='',materialForm.material_spec=''">
|
||||
<el-button slot="append" icon="el-icon-plus" @click="queryMater(scope.$index, scope.row)" />
|
||||
</el-input>
|
||||
</template>
|
||||
</el-form-item>
|
||||
@@ -114,7 +114,7 @@
|
||||
<el-input v-model="materialForm.material_spec" disabled style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料数量" prop="storage_qty">
|
||||
<el-input v-model="materialForm.qty" clearable style="width: 370px;" />
|
||||
<el-input v-model="materialForm.qty" clearable style="width: 370px;" />
|
||||
</el-form-item>
|
||||
<el-form-item label="锁定类型" prop="lock_type">
|
||||
<el-select
|
||||
@@ -162,14 +162,14 @@
|
||||
@selection-change="crud.selectionChangeHandler"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column prop="point_code" label="点位编码" sortable width="120" show-overflow-tooltip >
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <el-link type="warning" @click="toView(scope.row)">{{ scope.row.point_code }}</el-link>-->
|
||||
<!-- </template>-->
|
||||
<el-table-column prop="point_code" label="点位编码" sortable width="120" show-overflow-tooltip>
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- <el-link type="warning" @click="toView(scope.row)">{{ scope.row.point_code }}</el-link>-->
|
||||
<!-- </template>-->
|
||||
</el-table-column>
|
||||
<el-table-column prop="point_name" label="点位名称" width="150" sortable show-overflow-tooltip />
|
||||
<el-table-column prop="region_name" label="区域名称" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="point_status" label="点位状态" >
|
||||
<el-table-column prop="point_status" label="点位状态">
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.point_status == '2' ? '有料' : scope.row.point_status == '3'?'空载具':'空位' }}
|
||||
</template>
|
||||
@@ -193,9 +193,10 @@
|
||||
<el-table-column v-permission="[]" label="操作" width="100px" align="center" fixed="right">
|
||||
<template slot-scope="scope">
|
||||
<el-button
|
||||
type="text"
|
||||
slot="left"
|
||||
@click="toEditMaterial(scope.row)">
|
||||
type="text"
|
||||
@click="toEditMaterial(scope.row)"
|
||||
>
|
||||
修改
|
||||
</el-button>
|
||||
</template>
|
||||
@@ -217,7 +218,7 @@
|
||||
|
||||
<script>
|
||||
import crudDevice from '@/views/wms/staging_manage/staging/kzStaging/kzStaging.js'
|
||||
import CRUD, { crud,presenter, header, form } from '@crud/crud'
|
||||
import CRUD, { crud, presenter, header, form } from '@crud/crud'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
@@ -226,31 +227,28 @@ import ViewDialog from '@/views/wms/staging_manage/staging/kzStaging/ViewDialog'
|
||||
import MaterDtl from '@/views/wms/pub/MaterDialog'
|
||||
import crudStoragevehicleinfo from '@/views/wms/masterdata_manage/master/storagevehicleinfo/storagevehicleinfo'
|
||||
|
||||
|
||||
|
||||
|
||||
const defaultForm = { product_area: 'A1', region_code: 'A1_KZHC', workprocedure_id: '1535144552481034240', device_code: null, material_id: null, material_name: null, material_spec: null, deviceinstor_qty: null, deviceinstor_weight: null, remark: null }
|
||||
|
||||
export default {
|
||||
name: 'SKdevice',
|
||||
components: { crudOperation, pagination, udOperation, rrOperation, ViewDialog, MaterDtl },
|
||||
dicts: ['product_area','d_lock_type','point_status'],
|
||||
dicts: ['product_area', 'd_lock_type', 'point_status'],
|
||||
cruds() {
|
||||
return [
|
||||
CRUD({ title: '刻字缓存区', url: 'api/point/queryVehicle', query: { product_area: 'A1', region_code: 'A1_KZHC' }, idField: 'device_code', crudMethod: { ...crudDevice },optShow: {
|
||||
add: false,
|
||||
edit: false,
|
||||
del: false,
|
||||
download: false,
|
||||
reset: true
|
||||
}})
|
||||
CRUD({ title: '刻字缓存区', url: 'api/point/queryVehicle', query: { product_area: 'A1', region_code: 'A1_KZHC' }, idField: 'device_code', crudMethod: { ...crudDevice }, optShow: {
|
||||
add: false,
|
||||
edit: false,
|
||||
del: false,
|
||||
download: false,
|
||||
reset: true
|
||||
}, props: { size: 20 }})
|
||||
]
|
||||
},
|
||||
mixins: [presenter(), header(), form(defaultForm),crud()],
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
data() {
|
||||
return {
|
||||
materialForm:{},
|
||||
materType:'',
|
||||
materialForm: {},
|
||||
materType: '',
|
||||
materialShow: false,
|
||||
dialogVisible: false,
|
||||
pointMVisible: false,
|
||||
@@ -285,19 +283,21 @@ export default {
|
||||
this.materialForm.material_code = row.material_code
|
||||
this.materialForm.material_name = row.material_name
|
||||
this.materialForm.material_spec = row.material_spec
|
||||
if (row.material_spec != null || row.material_spec != '') {
|
||||
this.materialForm.point_status = '2'
|
||||
}
|
||||
},
|
||||
mclearable(){
|
||||
mclearable() {
|
||||
this.materialForm.material_id = ''
|
||||
this.materialForm.material_code = ''
|
||||
this.materialForm.material_name = ''
|
||||
},
|
||||
materiValueCancel(){
|
||||
materiValueCancel() {
|
||||
this.materialForm = {}
|
||||
this.dialogVisible = false
|
||||
this.pointMVisible = false
|
||||
},
|
||||
materiValueSubmit(){
|
||||
console.log(this.materialForm)
|
||||
materiValueSubmit() {
|
||||
crudStoragevehicleinfo.updateVehicleMaterial(this.materialForm).then(res => {
|
||||
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.materiValueCancel()
|
||||
@@ -306,7 +306,7 @@ export default {
|
||||
|
||||
})
|
||||
},
|
||||
pointMateriSubmit(){
|
||||
pointMateriSubmit() {
|
||||
crudDevice.edit(this.materialForm).then(res => {
|
||||
this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.materiValueCancel()
|
||||
@@ -340,7 +340,7 @@ export default {
|
||||
this.notify('保存成功', 'success')
|
||||
}).catch(() => {
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -11,24 +11,37 @@
|
||||
>
|
||||
<el-row v-show="crud.status.cu > 0" :gutter="20">
|
||||
<el-col :span="20" style="border: 1px solid white">
|
||||
<span/>
|
||||
<span />
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<span>
|
||||
<el-button icon="el-icon-check" size="mini" :loading="crud.cu === 2" type="primary"
|
||||
@click="crud.submitCU">保存</el-button>
|
||||
<el-button
|
||||
icon="el-icon-check"
|
||||
size="mini"
|
||||
:loading="crud.cu === 2"
|
||||
type="primary"
|
||||
@click="crud.submitCU"
|
||||
>保存</el-button>
|
||||
<el-button icon="el-icon-close" size="mini" type="info" @click="crud.cancelCU">关闭</el-button>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true"
|
||||
:model="form" :rules="rules" size="mini" label-width="85px" label-suffix=":">
|
||||
<el-input v-show="false" v-model="form.stor_code" placeholder="仓库编码"/>
|
||||
<el-input v-show="false" v-model="form.stor_name" placeholder="仓库名称"/>
|
||||
<el-form
|
||||
ref="form"
|
||||
style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;"
|
||||
:inline="true"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
size="mini"
|
||||
label-width="85px"
|
||||
label-suffix=":"
|
||||
>
|
||||
<el-input v-show="false" v-model="form.stor_code" placeholder="仓库编码" />
|
||||
<el-input v-show="false" v-model="form.stor_name" placeholder="仓库名称" />
|
||||
<el-form-item label="单据号" prop="bill_code">
|
||||
<label slot="label">单 据 号:</label>
|
||||
<el-input v-model.trim="form.bill_code" disabled placeholder="系统生成" clearable style="width: 210px"/>
|
||||
<el-input v-model.trim="form.bill_code" disabled placeholder="系统生成" clearable style="width: 210px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="仓库" prop="stor_id">
|
||||
<label slot="label">仓 库:</label>
|
||||
@@ -83,12 +96,17 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="明细数" prop="dtl_num">
|
||||
<label slot="label">明 细 数:</label>
|
||||
<el-input v-model.trim="form.dtl_num" size="mini" disabled style="width: 210px"/>
|
||||
<el-input v-model.trim="form.dtl_num" size="mini" disabled style="width: 210px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<label slot="label">备 注:</label>
|
||||
<el-input v-model.trim="form.remark" style="width: 380px;" rows="2" type="textarea"
|
||||
:disabled="crud.status.view > 0"/>
|
||||
<el-input
|
||||
v-model.trim="form.remark"
|
||||
style="width: 380px;"
|
||||
rows="2"
|
||||
type="textarea"
|
||||
:disabled="crud.status.view > 0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="crud-opts2">
|
||||
@@ -96,7 +114,7 @@
|
||||
<span v-if="crud.status.cu > 0" class="crud-opts-right2">
|
||||
|
||||
<!--左侧插槽-->
|
||||
<slot name="left"/>
|
||||
<slot name="left" />
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
@@ -117,31 +135,36 @@
|
||||
border
|
||||
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="50" align="center"/>
|
||||
<el-table-column prop="sect_name" label="盘点库区" align="center"/>
|
||||
<el-table-column prop="struct_name" label="盘点货位" align="center"/>
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="120" align="center"/>
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" min-width="120" show-overflow-tooltip/>
|
||||
<el-table-column prop="base_qty" label="重量" align="center" :formatter="crud.formatNum0"/>
|
||||
<el-table-column v-if="crud.status.view > 0" prop="fac_qty" label="盘点重量" align="center" :formatter="crud.formatNum0"/>
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center"/>
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="sect_name" label="盘点库区" align="center" />
|
||||
<el-table-column prop="struct_name" label="盘点货位" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="120" align="center" />
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="base_qty" label="重量/数量" align="center" :formatter="crud.formatNum0" />
|
||||
<el-table-column v-if="crud.status.view > 0" prop="fac_qty" label="盘点结果" align="center" :formatter="crud.formatNum0" />
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center" />
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" align="center" />
|
||||
<el-table-column v-if="crud.status.cu > 0" align="center" label="操作" width="160" fixed="right">
|
||||
<template scope="scope">
|
||||
<el-button type="danger" class="filter-item" size="mini" icon="el-icon-delete"
|
||||
@click.native.prevent="deleteRow(scope.$index, form.tableData)"/>
|
||||
<el-button
|
||||
type="danger"
|
||||
class="filter-item"
|
||||
size="mini"
|
||||
icon="el-icon-delete"
|
||||
@click.native.prevent="deleteRow(scope.$index, form.tableData)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<AddDtl :dialog-show.sync="dtlShow" @tableChanged="tableChanged"/>
|
||||
<AddDtl :dialog-show.sync="dtlShow" @tableChanged="tableChanged" />
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CRUD, {crud, form} from '@crud/crud'
|
||||
import CRUD, { crud, form } from '@crud/crud'
|
||||
import AddDtl from '@/views/wms/storage_manage/product/productCheck/StructIvt'
|
||||
import check from '@/views/wms/storage_manage/product/productCheck/check'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
|
||||
|
||||
const defaultForm = {
|
||||
check_code: '',
|
||||
@@ -157,7 +180,7 @@ const defaultForm = {
|
||||
}
|
||||
export default {
|
||||
name: 'AddDialog',
|
||||
components: {AddDtl},
|
||||
components: { AddDtl },
|
||||
mixins: [crud(), form(defaultForm)],
|
||||
props: {
|
||||
dialogShow: {
|
||||
@@ -176,10 +199,10 @@ export default {
|
||||
storlist: [],
|
||||
rules: {
|
||||
stor_id: [
|
||||
{required: true, message: '仓库不能为空', trigger: 'blur'}
|
||||
{ required: true, message: '仓库不能为空', trigger: 'blur' }
|
||||
],
|
||||
check_type: [
|
||||
{required: true, message: '业务类型不能为空', trigger: 'blur'}
|
||||
{ required: true, message: '业务类型不能为空', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -194,7 +217,7 @@ export default {
|
||||
methods: {
|
||||
open() {
|
||||
// 查询原材料库的仓库
|
||||
crudStorattr.getStor({'stor_type': '4'}).then(res => {
|
||||
crudStorattr.getStor({ 'stor_type': '4' }).then(res => {
|
||||
this.storlist = res.content
|
||||
})
|
||||
},
|
||||
@@ -202,7 +225,7 @@ export default {
|
||||
this.$emit('AddChanged')
|
||||
},
|
||||
[CRUD.HOOK.afterToEdit]() {
|
||||
check.getCheckDtl({'check_id': this.form.check_id}).then(res => {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id }).then(res => {
|
||||
this.form.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.form.tableData.length; i++) {
|
||||
@@ -213,7 +236,7 @@ export default {
|
||||
})
|
||||
},
|
||||
[CRUD.HOOK.afterToView]() {
|
||||
check.getCheckDtl({'check_id': this.form.check_id}).then(res => {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id }).then(res => {
|
||||
this.form.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.form.tableData.length; i++) {
|
||||
|
||||
@@ -73,17 +73,17 @@
|
||||
<span class="crud-opts-right2">
|
||||
<!--左侧插槽-->
|
||||
<slot name="left" />
|
||||
<!-- <el-button-->
|
||||
<!-- slot="left"-->
|
||||
<!-- class="filter-item"-->
|
||||
<!-- type="primary"-->
|
||||
<!-- icon="el-icon-plus"-->
|
||||
<!-- size="mini"-->
|
||||
<!-- :disabled="add_flag"-->
|
||||
<!-- @click="sendTask"-->
|
||||
<!-- >-->
|
||||
<!-- 下发任务-->
|
||||
<!-- </el-button>-->
|
||||
<!-- <el-button-->
|
||||
<!-- slot="left"-->
|
||||
<!-- class="filter-item"-->
|
||||
<!-- type="primary"-->
|
||||
<!-- icon="el-icon-plus"-->
|
||||
<!-- size="mini"-->
|
||||
<!-- :disabled="add_flag"-->
|
||||
<!-- @click="sendTask"-->
|
||||
<!-- >-->
|
||||
<!-- 下发任务-->
|
||||
<!-- </el-button>-->
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
@@ -122,8 +122,8 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="base_qty" label="重量" :formatter="crud.formatNum0" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点重量" width="160" align="center">
|
||||
<el-table-column prop="base_qty" label="重量/数量" :formatter="crud.formatNum0" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点结果" width="160" align="center">
|
||||
<template scope="scope">
|
||||
<el-input-number v-show="isShow(scope.$index, scope.row,2)" v-model="scope.row.fac_qty" :precision="3" :min="0" />
|
||||
<span v-show="isShow(scope.$index, scope.row,4)">{{ scope.row.fac_qty }}</span>
|
||||
@@ -155,7 +155,7 @@
|
||||
<script>
|
||||
import CRUD, { crud } from '@crud/crud'
|
||||
import check from '@/views/wms/storage_manage/product/productCheck/check'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
|
||||
import MaterDialog from '@/views/wms/pub/MaterDialog'
|
||||
|
||||
export default {
|
||||
@@ -218,7 +218,7 @@ export default {
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
const row = this.tableData[i]
|
||||
this.$set(row,'edit',false)
|
||||
this.$set(row, 'edit', false)
|
||||
if (row.status > '04') {
|
||||
row.edit = true
|
||||
}
|
||||
@@ -323,7 +323,7 @@ export default {
|
||||
},
|
||||
sendTask() {
|
||||
this.nowrow.is_antu_div = true // 是否自动分配盘点位
|
||||
check.sendTask(this.nowrow).then( res => {
|
||||
check.sendTask(this.nowrow).then(res => {
|
||||
this.crud.notify('任务下发成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
})
|
||||
},
|
||||
|
||||
@@ -81,20 +81,20 @@
|
||||
:disabled="process1_flag"
|
||||
@click="openReCheck"
|
||||
>
|
||||
拆箱盘点
|
||||
</el-button>
|
||||
拆箱盘点
|
||||
</el-button>
|
||||
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
:disabled="process0_flag"
|
||||
@click="process0"
|
||||
>
|
||||
账务为准
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
type="primary"
|
||||
icon="el-icon-plus"
|
||||
size="mini"
|
||||
:disabled="process0_flag"
|
||||
@click="process0"
|
||||
>
|
||||
账务为准
|
||||
</el-button>
|
||||
<slot name="left" />
|
||||
</span>
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="190" align="center" />
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="base_qty" label="重量/数量" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点重量/数量" :formatter="crud.formatNum0" width="160" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点结果/数量" :formatter="crud.formatNum0" width="160" align="center" />
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center" />
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" align="center" />
|
||||
<el-table-column prop="check_result" label="盘点结果" align="center" :formatter="check_resultFormat" />
|
||||
@@ -130,7 +130,7 @@
|
||||
<script>
|
||||
import CRUD, { crud } from '@crud/crud'
|
||||
import check from '@/views/wms/storage_manage/product/productCheck/check'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
|
||||
import ReCheckDialog from '@/views/wms/storage_manage/product/productCheck/ReCheckDialog'
|
||||
|
||||
export default {
|
||||
@@ -233,7 +233,7 @@ export default {
|
||||
})
|
||||
},
|
||||
getOutBillDtl() {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id,'check_result': '-1'}).then(res => {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id, 'check_result': '-1' }).then(res => {
|
||||
this.tableData = res
|
||||
})
|
||||
},
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
<el-form-item label="明细数" prop="dtl_num">
|
||||
<el-input v-model.trim="form.dtl_num" style="width: 200px" :disabled="true" />
|
||||
</el-form-item>
|
||||
<el-form-item label="盘点重量" prop="dtl_num">
|
||||
<el-form-item label="盘点结果" prop="dtl_num">
|
||||
<el-input v-model.trim="form.fac_qty" style="width: 200px" :disabled="true" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@@ -61,7 +61,7 @@
|
||||
<el-table-column show-overflow-tooltip prop="bucketunique" label="箱号" width="190" align="center">
|
||||
<template scope="scope">
|
||||
<el-input v-show="isCanDel(scope.$index, scope.row,'3')" v-model="scope.row.bucketunique" class="input-with-select">
|
||||
<!-- <el-button slot="append" icon="el-icon-search" @click="queryBucket(scope.$index, scope.row)" />-->
|
||||
<!-- <el-button slot="append" icon="el-icon-search" @click="queryBucket(scope.$index, scope.row)" />-->
|
||||
</el-input>
|
||||
<span v-show="isCanDel(scope.$index, scope.row,'2')">{{ scope.row.bucketunique }}</span>
|
||||
</template>
|
||||
@@ -69,7 +69,7 @@
|
||||
<el-table-column prop="material_code" label="物料编码" align="center" />
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="storage_qty" label="库存重量" :formatter="crud.formatNum3" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="ivt_qty_ck" label="盘点重量" width="160" align="center">
|
||||
<el-table-column show-overflow-tooltip prop="ivt_qty_ck" label="盘点结果" width="160" align="center">
|
||||
<template scope="scope">
|
||||
<el-input-number v-show="!scope.row.edit" v-model="scope.row.ivt_qty_ck" :precision="3" :min="0" />
|
||||
<span v-show="scope.row.edit">{{ scope.row.ivt_qty_ck }}</span>
|
||||
@@ -90,7 +90,7 @@
|
||||
<el-button type="primary" @click="process1">确认</el-button>
|
||||
</span>
|
||||
<MaterDialog :dialog-show.sync="materShow" @tableChanged2="tableChanged2" />
|
||||
<!-- <BucketDialog :dialog-show.sync="bucketShow" @bucketChange="tableChanged2" />-->
|
||||
<!-- <BucketDialog :dialog-show.sync="bucketShow" @bucketChange="tableChanged2" />-->
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
@@ -140,12 +140,12 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
open() {
|
||||
check.getBucketrecord({ 'storagevehicle_code': this.form.storagevehicle_code, 'status': '3', 'checkdtl_id': this.form.checkdtl_id}).then(res => {
|
||||
check.getBucketrecord({ 'storagevehicle_code': this.form.storagevehicle_code, 'status': '3', 'checkdtl_id': this.form.checkdtl_id }).then(res => {
|
||||
this.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
const row = this.tableData[i]
|
||||
this.$set(row,'edit',false)
|
||||
this.$set(row, 'edit', false)
|
||||
row.new_edit = false
|
||||
this.tableData.splice(i, 1, row)
|
||||
}
|
||||
@@ -175,7 +175,7 @@ export default {
|
||||
this.crud.notify('请先选中一条已存在的盘点明细!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
this.tableData.push({ bucketunique: '', storagevehicle_id: this.nowrow.storagevehicle_id, storagevehicle_type: this.nowrow.storagevehicle_type, storagevehicle_code: this.nowrow.storagevehicle_code, material_id: this.nowrow.material_id, material_name: this.nowrow.material_name,material_code: this.nowrow.material_code, ivt_qty: '0', qty_unit_id: '', qty_unit_name: '', pcsn: '', quality_scode: '00', ivt_level: '01', is_active: '1', ivt_qty_ck: '0', edit: false, new_edit: false })
|
||||
this.tableData.push({ bucketunique: '', storagevehicle_id: this.nowrow.storagevehicle_id, storagevehicle_type: this.nowrow.storagevehicle_type, storagevehicle_code: this.nowrow.storagevehicle_code, material_id: this.nowrow.material_id, material_name: this.nowrow.material_name, material_code: this.nowrow.material_code, ivt_qty: '0', qty_unit_id: '', qty_unit_name: '', pcsn: '', quality_scode: '00', ivt_level: '01', is_active: '1', ivt_qty_ck: '0', edit: false, new_edit: false })
|
||||
this.form.dtl_num = this.tableData.length
|
||||
},
|
||||
async queryMater(index, row) {
|
||||
@@ -257,8 +257,8 @@ export default {
|
||||
qty = parseFloat(this.tableData[i].ivt_qty_ck) + parseFloat(qty)
|
||||
}
|
||||
|
||||
if (qty > parseFloat(this.form.fac_qty) ) {
|
||||
this.crud.notify('不允许大于盘点重量!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
if (qty > parseFloat(this.form.fac_qty)) {
|
||||
this.crud.notify('不允许大于盘点结果!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,24 +11,37 @@
|
||||
>
|
||||
<el-row v-show="crud.status.cu > 0" :gutter="20">
|
||||
<el-col :span="20" style="border: 1px solid white">
|
||||
<span/>
|
||||
<span />
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<span>
|
||||
<el-button icon="el-icon-check" size="mini" :loading="crud.cu === 2" type="primary"
|
||||
@click="crud.submitCU">保存</el-button>
|
||||
<el-button
|
||||
icon="el-icon-check"
|
||||
size="mini"
|
||||
:loading="crud.cu === 2"
|
||||
type="primary"
|
||||
@click="crud.submitCU"
|
||||
>保存</el-button>
|
||||
<el-button icon="el-icon-close" size="mini" type="info" @click="crud.cancelCU">关闭</el-button>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true"
|
||||
:model="form" :rules="rules" size="mini" label-width="85px" label-suffix=":">
|
||||
<el-input v-show="false" v-model="form.stor_code" placeholder="仓库编码"/>
|
||||
<el-input v-show="false" v-model="form.stor_name" placeholder="仓库名称"/>
|
||||
<el-form
|
||||
ref="form"
|
||||
style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;"
|
||||
:inline="true"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
size="mini"
|
||||
label-width="85px"
|
||||
label-suffix=":"
|
||||
>
|
||||
<el-input v-show="false" v-model="form.stor_code" placeholder="仓库编码" />
|
||||
<el-input v-show="false" v-model="form.stor_name" placeholder="仓库名称" />
|
||||
<el-form-item label="单据号" prop="bill_code">
|
||||
<label slot="label">单 据 号:</label>
|
||||
<el-input v-model.trim="form.bill_code" disabled placeholder="系统生成" clearable style="width: 210px"/>
|
||||
<el-input v-model.trim="form.bill_code" disabled placeholder="系统生成" clearable style="width: 210px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="车间" prop="workshop_id">
|
||||
<label slot="label">车间</label>
|
||||
@@ -101,12 +114,17 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="明细数" prop="dtl_num">
|
||||
<label slot="label">明 细 数:</label>
|
||||
<el-input v-model.trim="form.dtl_num" size="mini" disabled style="width: 210px"/>
|
||||
<el-input v-model.trim="form.dtl_num" size="mini" disabled style="width: 210px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<label slot="label">备 注:</label>
|
||||
<el-input v-model.trim="form.remark" style="width: 380px;" rows="2" type="textarea"
|
||||
:disabled="crud.status.view > 0"/>
|
||||
<el-input
|
||||
v-model.trim="form.remark"
|
||||
style="width: 380px;"
|
||||
rows="2"
|
||||
type="textarea"
|
||||
:disabled="crud.status.view > 0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="crud-opts2">
|
||||
@@ -114,7 +132,7 @@
|
||||
<span v-if="crud.status.cu > 0" class="crud-opts-right2">
|
||||
|
||||
<!--左侧插槽-->
|
||||
<slot name="left"/>
|
||||
<slot name="left" />
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
@@ -135,30 +153,35 @@
|
||||
border
|
||||
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="50" align="center"/>
|
||||
<el-table-column prop="sect_name" label="盘点库区" align="center"/>
|
||||
<el-table-column prop="struct_name" label="盘点货位" align="center"/>
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="120" align="center"/>
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" min-width="120" show-overflow-tooltip/>
|
||||
<el-table-column prop="base_qty" label="重量" align="center" :formatter="crud.formatNum0"/>
|
||||
<el-table-column v-if="crud.status.view > 0" prop="fac_qty" label="盘点重量" align="center" :formatter="crud.formatNum0"/>
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="sect_name" label="盘点库区" align="center" />
|
||||
<el-table-column prop="struct_name" label="盘点货位" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="120" align="center" />
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="base_qty" label="重量/数量" align="center" :formatter="crud.formatNum0" />
|
||||
<el-table-column v-if="crud.status.view > 0" prop="fac_qty" label="盘点结果" align="center" :formatter="crud.formatNum0" />
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center" />
|
||||
<el-table-column v-if="crud.status.cu > 0" align="center" label="操作" width="160" fixed="right">
|
||||
<template scope="scope">
|
||||
<el-button type="danger" class="filter-item" size="mini" icon="el-icon-delete"
|
||||
@click.native.prevent="deleteRow(scope.$index, form.tableData)"/>
|
||||
<el-button
|
||||
type="danger"
|
||||
class="filter-item"
|
||||
size="mini"
|
||||
icon="el-icon-delete"
|
||||
@click.native.prevent="deleteRow(scope.$index, form.tableData)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<AddDtl :dialog-show.sync="dtlShow" @tableChanged="tableChanged"/>
|
||||
<AddDtl :dialog-show.sync="dtlShow" @tableChanged="tableChanged" />
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CRUD, {crud, form} from '@crud/crud'
|
||||
import CRUD, { crud, form } from '@crud/crud'
|
||||
import AddDtl from '@/views/wms/storage_manage/rawproduct/rawproductCheck/StructIvt'
|
||||
import check from '@/views/wms/storage_manage/rawproduct/rawproductCheck/check'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
|
||||
|
||||
const defaultForm = {
|
||||
check_code: '',
|
||||
@@ -175,7 +198,7 @@ const defaultForm = {
|
||||
}
|
||||
export default {
|
||||
name: 'AddDialog',
|
||||
components: {AddDtl},
|
||||
components: { AddDtl },
|
||||
mixins: [crud(), form(defaultForm)],
|
||||
props: {
|
||||
dialogShow: {
|
||||
@@ -194,13 +217,13 @@ export default {
|
||||
storlist: [],
|
||||
rules: {
|
||||
stor_id: [
|
||||
{required: true, message: '仓库不能为空', trigger: 'blur'}
|
||||
{ required: true, message: '仓库不能为空', trigger: 'blur' }
|
||||
],
|
||||
check_type: [
|
||||
{required: true, message: '业务类型不能为空', trigger: 'blur'}
|
||||
{ required: true, message: '业务类型不能为空', trigger: 'blur' }
|
||||
],
|
||||
workshop_id: [
|
||||
{required: true, message: '车间不能为空', trigger: 'blur'}
|
||||
{ required: true, message: '车间不能为空', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -215,7 +238,7 @@ export default {
|
||||
methods: {
|
||||
open() {
|
||||
// 查询原材料库的仓库
|
||||
crudStorattr.getStor({'stor_type': '3'}).then(res => {
|
||||
crudStorattr.getStor({ 'stor_type': '3' }).then(res => {
|
||||
this.storlist = res.content
|
||||
})
|
||||
},
|
||||
@@ -223,7 +246,7 @@ export default {
|
||||
this.$emit('AddChanged')
|
||||
},
|
||||
[CRUD.HOOK.afterToEdit]() {
|
||||
check.getCheckDtl({'check_id': this.form.check_id}).then(res => {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id }).then(res => {
|
||||
this.form.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.form.tableData.length; i++) {
|
||||
@@ -234,7 +257,7 @@ export default {
|
||||
})
|
||||
},
|
||||
[CRUD.HOOK.afterToView]() {
|
||||
check.getCheckDtl({'check_id': this.form.check_id}).then(res => {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id }).then(res => {
|
||||
this.form.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.form.tableData.length; i++) {
|
||||
|
||||
@@ -110,8 +110,8 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" />
|
||||
<el-table-column prop="base_qty" label="重量" :formatter="crud.formatNum0" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点重量" width="160" align="center">
|
||||
<el-table-column prop="base_qty" label="重量/数量" :formatter="crud.formatNum0" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点结果" width="160" align="center">
|
||||
<template scope="scope">
|
||||
<el-input-number v-show="isShow(scope.$index, scope.row,2)" v-model="scope.row.fac_qty" :precision="3" :min="0" />
|
||||
<span v-show="isShow(scope.$index, scope.row,4)">{{ scope.row.fac_qty }}</span>
|
||||
@@ -141,7 +141,7 @@
|
||||
<script>
|
||||
import CRUD, { crud } from '@crud/crud'
|
||||
import check from '@/views/wms/storage_manage/rawproduct/rawproductCheck/check'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
|
||||
import MaterDialog from '@/views/wms/pub/MaterDialog'
|
||||
|
||||
export default {
|
||||
@@ -204,7 +204,7 @@ export default {
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
const row = this.tableData[i]
|
||||
this.$set(row,'edit',false)
|
||||
this.$set(row, 'edit', false)
|
||||
if (row.status > '04') {
|
||||
row.edit = true
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="pcsn" label="批次" align="center" />
|
||||
<el-table-column prop="ivt_qty" label="库存重量" :formatter="crud.formatNum3" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="ivt_qty_ck" label="盘点重量" width="160" align="center">
|
||||
<el-table-column show-overflow-tooltip prop="ivt_qty_ck" label="盘点结果" width="160" align="center">
|
||||
<template scope="scope">
|
||||
<el-input-number v-show="!scope.row.edit" v-model="scope.row.ivt_qty_ck" :precision="3" :min="0" />
|
||||
<span v-show="scope.row.edit">{{ scope.row.ivt_qty_ck }}</span>
|
||||
@@ -138,7 +138,7 @@
|
||||
<el-button type="primary" @click="process1">确认</el-button>
|
||||
</span>
|
||||
<MaterDialog :dialog-show.sync="materShow" @tableChanged2="tableChanged2" />
|
||||
<!-- <BucketDialog :dialog-show.sync="bucketShow" @bucketChange="tableChanged2" />-->
|
||||
<!-- <BucketDialog :dialog-show.sync="bucketShow" @bucketChange="tableChanged2" />-->
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -11,24 +11,37 @@
|
||||
>
|
||||
<el-row v-show="crud.status.cu > 0" :gutter="20">
|
||||
<el-col :span="20" style="border: 1px solid white">
|
||||
<span/>
|
||||
<span />
|
||||
</el-col>
|
||||
<el-col :span="4">
|
||||
<span>
|
||||
<el-button icon="el-icon-check" size="mini" :loading="crud.cu === 2" type="primary"
|
||||
@click="crud.submitCU">保存</el-button>
|
||||
<el-button
|
||||
icon="el-icon-check"
|
||||
size="mini"
|
||||
:loading="crud.cu === 2"
|
||||
type="primary"
|
||||
@click="crud.submitCU"
|
||||
>保存</el-button>
|
||||
<el-button icon="el-icon-close" size="mini" type="info" @click="crud.cancelCU">关闭</el-button>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<el-form ref="form" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;" :inline="true"
|
||||
:model="form" :rules="rules" size="mini" label-width="85px" label-suffix=":">
|
||||
<el-input v-show="false" v-model="form.stor_code" placeholder="仓库编码"/>
|
||||
<el-input v-show="false" v-model="form.stor_name" placeholder="仓库名称"/>
|
||||
<el-form
|
||||
ref="form"
|
||||
style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;"
|
||||
:inline="true"
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
size="mini"
|
||||
label-width="85px"
|
||||
label-suffix=":"
|
||||
>
|
||||
<el-input v-show="false" v-model="form.stor_code" placeholder="仓库编码" />
|
||||
<el-input v-show="false" v-model="form.stor_name" placeholder="仓库名称" />
|
||||
<el-form-item label="单据号" prop="bill_code">
|
||||
<label slot="label">单 据 号:</label>
|
||||
<el-input v-model.trim="form.bill_code" disabled placeholder="系统生成" clearable style="width: 210px"/>
|
||||
<el-input v-model.trim="form.bill_code" disabled placeholder="系统生成" clearable style="width: 210px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="车间" prop="workshop_id">
|
||||
<label slot="label">车间</label>
|
||||
@@ -101,12 +114,17 @@
|
||||
</el-form-item>
|
||||
<el-form-item label="明细数" prop="dtl_num">
|
||||
<label slot="label">明 细 数:</label>
|
||||
<el-input v-model.trim="form.dtl_num" size="mini" disabled style="width: 210px"/>
|
||||
<el-input v-model.trim="form.dtl_num" size="mini" disabled style="width: 210px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="remark">
|
||||
<label slot="label">备 注:</label>
|
||||
<el-input v-model.trim="form.remark" style="width: 380px;" rows="2" type="textarea"
|
||||
:disabled="crud.status.view > 0"/>
|
||||
<el-input
|
||||
v-model.trim="form.remark"
|
||||
style="width: 380px;"
|
||||
rows="2"
|
||||
type="textarea"
|
||||
:disabled="crud.status.view > 0"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="crud-opts2">
|
||||
@@ -114,7 +132,7 @@
|
||||
<span v-if="crud.status.cu > 0" class="crud-opts-right2">
|
||||
|
||||
<!--左侧插槽-->
|
||||
<slot name="left"/>
|
||||
<slot name="left" />
|
||||
<el-button
|
||||
slot="left"
|
||||
class="filter-item"
|
||||
@@ -135,31 +153,36 @@
|
||||
border
|
||||
:header-cell-style="{background:'#f5f7fa',color:'#606266'}"
|
||||
>
|
||||
<el-table-column type="index" label="序号" width="50" align="center"/>
|
||||
<el-table-column prop="sect_name" label="盘点库区" align="center"/>
|
||||
<el-table-column prop="struct_name" label="盘点货位" align="center"/>
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="120" align="center"/>
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" min-width="120" show-overflow-tooltip/>
|
||||
<el-table-column prop="base_qty" label="数量" align="center" :formatter="crud.formatNum0"/>
|
||||
<el-table-column prop="unit_weight" label="单重" align="center"/>
|
||||
<el-table-column v-if="crud.status.view > 0" prop="fac_qty" label="盘点重量" align="center" :formatter="crud.formatNum0"/>
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" align="center"/>
|
||||
<el-table-column type="index" label="序号" width="50" align="center" />
|
||||
<el-table-column prop="sect_name" label="盘点库区" align="center" />
|
||||
<el-table-column prop="struct_name" label="盘点货位" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="120" align="center" />
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" min-width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="base_qty" label="重量/数量" align="center" :formatter="crud.formatNum0" />
|
||||
<el-table-column prop="unit_weight" label="单重" align="center" />
|
||||
<el-table-column v-if="crud.status.view > 0" prop="fac_qty" label="盘点结果" align="center" :formatter="crud.formatNum0" />
|
||||
<el-table-column prop="storagevehicle_code" label="载具号" align="center" />
|
||||
<el-table-column v-if="crud.status.cu > 0" align="center" label="操作" width="160" fixed="right">
|
||||
<template scope="scope">
|
||||
<el-button type="danger" class="filter-item" size="mini" icon="el-icon-delete"
|
||||
@click.native.prevent="deleteRow(scope.$index, form.tableData)"/>
|
||||
<el-button
|
||||
type="danger"
|
||||
class="filter-item"
|
||||
size="mini"
|
||||
icon="el-icon-delete"
|
||||
@click.native.prevent="deleteRow(scope.$index, form.tableData)"
|
||||
/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<AddDtl :dialog-show.sync="dtlShow" @tableChanged="tableChanged"/>
|
||||
<AddDtl :dialog-show.sync="dtlShow" @tableChanged="tableChanged" />
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import CRUD, {crud, form} from '@crud/crud'
|
||||
import CRUD, { crud, form } from '@crud/crud'
|
||||
import AddDtl from '@/views/wms/storage_manage/semiproduct/semiproductCheck/StructIvt'
|
||||
import check from '@/views/wms/storage_manage/semiproduct/semiproductCheck/check'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
|
||||
|
||||
const defaultForm = {
|
||||
check_code: '',
|
||||
@@ -176,7 +199,7 @@ const defaultForm = {
|
||||
}
|
||||
export default {
|
||||
name: 'AddDialog',
|
||||
components: {AddDtl},
|
||||
components: { AddDtl },
|
||||
mixins: [crud(), form(defaultForm)],
|
||||
props: {
|
||||
dialogShow: {
|
||||
@@ -195,13 +218,13 @@ export default {
|
||||
storlist: [],
|
||||
rules: {
|
||||
stor_id: [
|
||||
{required: true, message: '仓库不能为空', trigger: 'blur'}
|
||||
{ required: true, message: '仓库不能为空', trigger: 'blur' }
|
||||
],
|
||||
check_type: [
|
||||
{required: true, message: '业务类型不能为空', trigger: 'blur'}
|
||||
{ required: true, message: '业务类型不能为空', trigger: 'blur' }
|
||||
],
|
||||
workshop_id: [
|
||||
{required: true, message: '车间不能为空', trigger: 'blur'}
|
||||
{ required: true, message: '车间不能为空', trigger: 'blur' }
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -216,7 +239,7 @@ export default {
|
||||
methods: {
|
||||
open() {
|
||||
// 查询原材料库的仓库
|
||||
crudStorattr.getStor({'stor_type': '2'}).then(res => {
|
||||
crudStorattr.getStor({ 'stor_type': '2' }).then(res => {
|
||||
this.storlist = res.content
|
||||
})
|
||||
},
|
||||
@@ -224,7 +247,7 @@ export default {
|
||||
this.$emit('AddChanged')
|
||||
},
|
||||
[CRUD.HOOK.afterToEdit]() {
|
||||
check.getCheckDtl({'check_id': this.form.check_id}).then(res => {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id }).then(res => {
|
||||
this.form.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.form.tableData.length; i++) {
|
||||
@@ -235,7 +258,7 @@ export default {
|
||||
})
|
||||
},
|
||||
[CRUD.HOOK.afterToView]() {
|
||||
check.getCheckDtl({'check_id': this.form.check_id}).then(res => {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id }).then(res => {
|
||||
this.form.tableData = res
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.form.tableData.length; i++) {
|
||||
|
||||
@@ -121,8 +121,8 @@
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="material_name" label="物料名称" align="center" />
|
||||
<el-table-column prop="base_qty" label="重量" :formatter="crud.formatNum0" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点重量" width="160" align="center">
|
||||
<el-table-column prop="base_qty" label="重量/数量" :formatter="crud.formatNum0" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点结果" width="160" align="center">
|
||||
<template scope="scope">
|
||||
<el-input-number v-show="isShow(scope.$index, scope.row,2)" v-model="scope.row.fac_qty" :precision="3" :min="0" />
|
||||
<span v-show="isShow(scope.$index, scope.row,4)">{{ scope.row.fac_qty }}</span>
|
||||
@@ -152,7 +152,7 @@
|
||||
<script>
|
||||
import CRUD, { crud } from '@crud/crud'
|
||||
import check from '@/views/wms/storage_manage/semiproduct/semiproductCheck/check'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
|
||||
import MaterDialog from '@/views/wms/pub/MaterDialog'
|
||||
|
||||
export default {
|
||||
@@ -215,7 +215,7 @@ export default {
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
const row = this.tableData[i]
|
||||
this.$set(row,'edit',false)
|
||||
this.$set(row, 'edit', false)
|
||||
if (row.status > '04') {
|
||||
row.edit = true
|
||||
}
|
||||
@@ -381,7 +381,7 @@ export default {
|
||||
this.dialogVisible = false
|
||||
})
|
||||
},
|
||||
issueTask(){
|
||||
issueTask() {
|
||||
if (this.nowrow === null) {
|
||||
this.crud.notify('请先选中一条已存在的库存明细!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return false
|
||||
@@ -393,7 +393,7 @@ export default {
|
||||
// 将明细变成不可编辑
|
||||
for (let i = 0; i < this.tableData.length; i++) {
|
||||
const row = this.tableData[i]
|
||||
this.$set(row,'edit',false)
|
||||
this.$set(row, 'edit', false)
|
||||
if (row.status > '04') {
|
||||
row.edit = true
|
||||
}
|
||||
|
||||
@@ -116,8 +116,8 @@
|
||||
<el-table-column show-overflow-tooltip prop="storagevehicle_code" label="载具号" />
|
||||
<el-table-column show-overflow-tooltip prop="material_code" label="物料编码" width="190" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="material_name" label="物料名称" align="center" />
|
||||
<el-table-column prop="base_qty" label="重量" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点重量" :formatter="crud.formatNum0" width="160" align="center" />
|
||||
<el-table-column prop="base_qty" label="重量/数量" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="fac_qty" label="盘点结果" :formatter="crud.formatNum0" width="160" align="center" />
|
||||
<el-table-column prop="qty_unit_name" label="计量单位" align="center" />
|
||||
<el-table-column prop="check_result" label="盘点结果" align="center" :formatter="check_resultFormat" />
|
||||
<el-table-column prop="status" label="状态" align="center" :formatter="bill_statusFormat" />
|
||||
@@ -129,7 +129,7 @@
|
||||
<script>
|
||||
import { crud } from '@crud/crud'
|
||||
import check from '@/views/wms/storage_manage/semiproduct/semiproductCheck/check'
|
||||
import crudStorattr from "@/views/wms/storage_manage/basedata/basedata";
|
||||
import crudStorattr from '@/views/wms/storage_manage/basedata/basedata'
|
||||
import ReCheckDialog from '@/views/wms/storage_manage/rawproduct/rawproductCheck/ReCheckDialog'
|
||||
|
||||
export default {
|
||||
@@ -230,7 +230,7 @@ export default {
|
||||
})
|
||||
},
|
||||
getOutBillDtl() {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id,'check_result': '-1'}).then(res => {
|
||||
check.getCheckDtl({ 'check_id': this.form.check_id, 'check_result': '-1' }).then(res => {
|
||||
this.tableData = res
|
||||
})
|
||||
}
|
||||
|
||||
@@ -117,7 +117,7 @@
|
||||
</el-table-column>
|
||||
<el-table-column prop="pcsn" label="批次" align="center" />
|
||||
<el-table-column prop="ivt_qty" label="库存重量" :formatter="crud.formatNum3" align="center" />
|
||||
<el-table-column show-overflow-tooltip prop="ivt_qty_ck" label="盘点重量" width="160" align="center">
|
||||
<el-table-column show-overflow-tooltip prop="ivt_qty_ck" label="盘点结果" width="160" align="center">
|
||||
<template scope="scope">
|
||||
<el-input-number v-show="!scope.row.edit" v-model="scope.row.ivt_qty_ck" :precision="3" :min="0" />
|
||||
<span v-show="scope.row.edit">{{ scope.row.ivt_qty_ck }}</span>
|
||||
@@ -138,7 +138,7 @@
|
||||
<el-button type="primary" @click="process1">确认</el-button>
|
||||
</span>
|
||||
<MaterDialog :dialog-show.sync="materShow" @tableChanged2="tableChanged2" />
|
||||
<!-- <BucketDialog :dialog-show.sync="bucketShow" @bucketChange="tableChanged2" />-->
|
||||
<!-- <BucketDialog :dialog-show.sync="bucketShow" @bucketChange="tableChanged2" />-->
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user