opt: 格式

This commit is contained in:
2023-12-28 18:59:07 +08:00
parent c7d153e8db
commit 2ef3d94403
31 changed files with 1543 additions and 115 deletions

View File

@@ -155,7 +155,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
result.setMessage(message);
result.setRequestNo(requestNo);
// 消息通知
noticeService.createNotice("异常信息:" + message, "acsApply: " + param.getString("request_medthod_code"),
noticeService.createNotice(message, "acsApply: " + param.getString(RequestConstant.REQUEST_METHOD_NAME),
NoticeTypeEnum.EXCEPTION.getCode());
}
// acs对接记录
@@ -542,8 +542,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
bdWorkorder.setQualified_qty(qualified_qty);
bdWorkorder.setUnqualified_qty(unqualified_qty);
workorderService.updateById(bdWorkorder);
// todo: 统计当前设备的不合格位置的数量作为不合格数并上报给mes
wmsToMesService.reportPressUnusedMaterial(bdWorkorder);
return BaseResponse.responseOk(requestNo);
}
@@ -668,7 +666,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
*/
@Override
public ApplyTaskResponse recordKilnTime(ApplyTaskRequest baseRequest) {
log.info("扫码成功申请 - 入窑记录时间的参数: {}", baseRequest);
log.info("扫码成功申请 - 入窑记录时间的参数: {}", baseRequest);
if (ObjectUtil.isEmpty(baseRequest.getVehicle_code())) {
throw new BadRequestException("载具编码不能为空");
}
@@ -680,11 +678,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 入窑记录时间
SchBaseVehiclematerialgroup groupInfo = vehiclematerialgroupService.getGroupInfo(baseRequest.getVehicle_code(),
baseRequest.getVehicle_type(), GroupBindMaterialStatusEnum.BOUND.getValue());
if (ObjectUtil.isNotEmpty(groupInfo.getInto_kiln_time())) {
if (basePoint.getPoint_type().equals(GeneralDefinition.ENTRANCE)
&& ObjectUtil.isNotEmpty(groupInfo.getInto_kiln_time())) {
// 如果已经记录就跳过
return ApplyTaskResponse.responseOk(baseRequest.getRequestNo());
}
groupInfo.setInto_kiln_time(DateUtil.now());
if (basePoint.getPoint_type().equals(GeneralDefinition.EXIT)
&& ObjectUtil.isNotEmpty(groupInfo.getOut_kiln_time())) {
// 如果已经记录就跳过
return ApplyTaskResponse.responseOk(baseRequest.getRequestNo());
}
recordInOrOutKilnTime(groupInfo, basePoint);
if (ObjectUtil.isNotEmpty(basePoint)) {
// 记录当前位置
groupInfo.setPoint_code(basePoint.getPoint_code()); // 当前位置
@@ -696,13 +700,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
// 插入生产过程跟踪表
PdmBdProductionProcessTracking processTracking = new PdmBdProductionProcessTracking();
processTracking.setBuss_move_id(groupInfo.getBuss_move_id());
processTracking.setProcess_action("送料到入窑口");
processTracking.setProcess_action("送料到入窑口");
processTracking.setProcess_location(baseRequest.getDevice_code());
processTracking.setRecord_time(DateUtil.now());
processTrackingService.create(processTracking);
return ApplyTaskResponse.responseOk(baseRequest.getRequestNo(), "扫码成功申请");
}
private void recordInOrOutKilnTime(SchBaseVehiclematerialgroup groupInfo, SchBasePoint basePoint) {
if (GeneralDefinition.ENTRANCE.equals(basePoint.getPoint_type())) {
groupInfo.setInto_kiln_time(DateUtil.now());
} else {
groupInfo.setOut_kiln_time(DateUtil.now());
groupInfo.setIs_firing(true);
}
}
/**
* 压机请求要料
*

View File

@@ -23,7 +23,7 @@
AND LOWER(wo.point_code) LIKE LOWER(CONCAT('%', #{query.point_code}, '%'))
</if>
<if test="query.region_code != null and query.region_code != ''">
AND wo.region_code = #{query.region_code}
AND wo.region_code LIKE CONCAT('%', #{query.region_code}, '%')
</if>
<if test="query.begin_time != null and query.begin_time != ''">
AND wo.create_time <![CDATA[ >= ]]> #{query.begin_time}

View File

@@ -40,6 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -198,7 +199,7 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
}
// 设置开工人
pdmBdWorkorder.setOperator(SecurityUtils.getCurrentNickName());
List<AcsWorkOrderVo> list = new CopyOnWriteArrayList<>();
List<AcsWorkOrderVo> list = new ArrayList<>();
// 重装数据回ACS重新根据id找一遍省的改动以上代码
AcsWorkOrderVo acsWorkOrderVo = pdmBdWorkorderMapper.toAcsWorkOrderById(pdmBdWorkorder.getWorkorder_id());
list.add(acsWorkOrderVo);

View File

@@ -88,8 +88,8 @@ public class ExceptionConstant {
public static String exceptionBasRequest(String msg) {
// 获取堆栈跟踪元素
StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();
if (stackTraceElements.length > 2) { // Index 0 is the current method, Index 1 is Thread.getStackTrace, Index 2 is the caller
// Index 0 is the current method, Index 1 is Thread.getStackTrace, Index 2 is the caller
if (stackTraceElements.length > 2) {
StackTraceElement callerStackTraceElement = stackTraceElements[2];
String className = callerStackTraceElement.getClassName();
int lineNumber = callerStackTraceElement.getLineNumber();

View File

@@ -1,7 +1,9 @@
package org.nl.wms.sch.task_manage.task;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
@@ -10,33 +12,32 @@ import java.util.Map;
/**
* @author ldjun
* @version 2.0
* @version 3.0
* @date 2023年05月16日 16:42
* @desc 采用获取注解来标识任务类型,并通过扫描和反射的方式来获取任务实例
* @desc 2.0 采用获取注解来标识任务类型,并通过扫描和反射的方式来获取任务实例
* 3.0 采用获取所有bean对象判断是否为AbstractTask
*/
@Component
public class TaskFactory {
public class TaskFactory implements BeanPostProcessor {
private final Map<String, AbstractTask> taskMap;
@Autowired
public TaskFactory(ApplicationContext applicationContext) {
public TaskFactory() {
taskMap = new HashMap<>();
initializeTasks(applicationContext);
}
private void initializeTasks(ApplicationContext applicationContext) {
Map<String, Object> taskBeans = applicationContext.getBeansWithAnnotation(TaskType.class);
for (Object taskBean : taskBeans.values()) {
TaskType taskTypeAnnotation = taskBean.getClass().getAnnotation(TaskType.class);
String taskType = taskTypeAnnotation.value();
taskMap.put(taskType.toUpperCase(), (AbstractTask) taskBean);
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof AbstractTask) {
taskMap.put(beanName, (AbstractTask) bean);
}
return bean;
}
public AbstractTask getTask(String taskType) {
if (taskType == null) {
return null;
}
return taskMap.get(taskType.toUpperCase());
return taskMap.get(taskType);
}
}

View File

@@ -33,10 +33,9 @@
// * @Description: 入窑口叫料
// * @Date: 2023/6/19
// */
//@Component
//@TaskType("RYKQLTask")
//@Component("RYKQLTask")
//public class RYKQLTask extends AbstractTask {
// private static String TASK_CONFIG_CODE = "RYKQLTask";
// private static final String TASK_CONFIG_CODE = "RYKQLTask";
// @Autowired
// private ISchBasePointService pointService;
// @Autowired

View File

@@ -1,6 +1,5 @@
package org.nl.wms.sch.task_manage.task.tasks.dtk;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.nl.common.exception.BadRequestException;
@@ -14,9 +13,7 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.dtk.mapper.DTKMapper;
import org.nl.wms.util.PointUtils;
@@ -34,8 +31,7 @@ import java.util.stream.Collectors;
* @Description: 拆盘机呼叫空托
* @Date: 2023/6/21
*/
@Component
@TaskType("DTKQKTask")
@Component("DTKQKTask")
public class DTKQKTask extends AbstractTask {
private static final String TASK_CONFIG_CODE = "DTKQKTask";
@Autowired
@@ -102,6 +98,7 @@ public class DTKQKTask extends AbstractTask {
}
// 设置终点并修改创建成功状态
task.setPoint_code1(point.getPoint_code());
task.setVehicle_type(GeneralDefinition.STEEL_TRAY);
task.setRemark("");
task.setVehicle_qty(point.getVehicle_qty());
task.setTask_status(TaskStatus.CREATED.getCode());

View File

@@ -15,7 +15,6 @@ import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.dtk.mapper.DTKMapper;
import org.nl.wms.util.PointUtils;
@@ -33,10 +32,9 @@ import java.util.stream.Collectors;
* @Description: 叠托送空盘任务:-> 货架
* @Date: 2023/6/21
*/
@Component
@TaskType("DTKSKTask")
@Component("DTKSKTask")
public class DTSKTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "DTKSKTask";
private static final String TASK_CONFIG_CODE = "DTKSKTask";
@Autowired
private ISchBasePointService pointService;
@Autowired

View File

@@ -21,7 +21,6 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.*;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper;
import org.nl.wms.util.PointUtils;
@@ -40,10 +39,9 @@ import java.util.stream.Collectors;
* @Description: 分拣满空任务 - 4点
* @Date: 2023/6/21
*/
@Component
@TaskType("FJMLTask")
@Component("FJMLTask")
public class FJMLTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "FJMLTask";
private static final String TASK_CONFIG_CODE = "FJMLTask";
@Autowired
private ISchBasePointService pointService;
@Autowired
@@ -169,6 +167,7 @@ public class FJMLTask extends AbstractTask {
groupEntity.setVehicle_code(vehicleCode);
groupEntity.setVehicle_type(vehicleType);
groupEntity.setMaterial_qty(qty);
groupEntity.setCustomer(workorderObject.getCustomer());
groupEntity.setExt_data(JSONObject.toJSONString(stackParameters));
groupEntity.setPoint_code(basePoint.getPoint_code());
groupEntity.setPoint_name(basePoint.getPoint_name());

View File

@@ -20,7 +20,6 @@ import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper;
import org.nl.wms.util.PointUtils;
@@ -29,7 +28,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@@ -39,10 +37,9 @@ import java.util.stream.Collectors;
* @Description: 分拣呼叫空木托盘任务 - 2点
* @Date: 2023/6/21
*/
@Component
@TaskType("FJQKTask")
@Component("FJQKTask")
public class FJQKTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "FJQKTask";
private static final String TASK_CONFIG_CODE = "FJQKTask";
@Autowired
private ISchBasePointService pointService;
@Autowired

View File

@@ -25,7 +25,6 @@ import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper;
import org.nl.wms.util.PointUtils;
@@ -43,10 +42,9 @@ import java.util.stream.Collectors;
* @Description: 分拣缺料任务,缓存货架获取相同物料
* @Date: 2023/6/20
*/
@Component
@TaskType("FJQLTask")
@Component("FJQLTask")
public class FJQLTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "FJQLTask";
private static final String TASK_CONFIG_CODE = "FJQLTask";
@Autowired
private ISchBasePointService pointService;
@Autowired
@@ -154,7 +152,7 @@ public class FJQLTask extends AbstractTask {
: null;
Assert.notNull(workOrder, "工单不能为空!");
// 从所选区域中,选择满料位、无锁、可用的点位
List<SchBasePoint> points = fjMapper.findPointForFJQL(startRegionStr, workOrder.getMaterial_id());
List<SchBasePoint> points = fjMapper.findPointForFJQL(startRegionStr, workOrder.getMaterial_id(), workOrder.getCustomer());
return ObjectUtil.isNotEmpty(points) ? points.get(0) : null;
}

View File

@@ -19,8 +19,10 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.*;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.GroupStatusEnum;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.PointUtils;
import org.nl.wms.util.TaskUtils;
@@ -37,10 +39,9 @@ import java.util.stream.Collectors;
* @Description: rgv - 分拣强制入库任务 - 2点
* @Date: 2023/6/21
*/
@Component
@TaskType("FJQZRKTask")
@Component("FJQZRKTask")
public class FJQZRKTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "FJQZRKTask";
private static final String TASK_CONFIG_CODE = "FJQZRKTask";
@Autowired
private ISchBasePointService pointService;
@Autowired

View File

@@ -7,7 +7,6 @@ import org.nl.common.exception.BadRequestException;
import org.nl.system.service.notice.ISysNoticeService;
import org.nl.wms.ext.mes.service.WmsToMesService;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService;
@@ -16,11 +15,9 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper;
import org.nl.wms.util.PointUtils;
@@ -38,10 +35,9 @@ import java.util.stream.Collectors;
* @Description: 分拣送空托 -> 叠托位
* @Date: 2023/6/20
*/
@Component
@TaskType("FJSKTask")
@Component("FJSKTask")
public class FJSKTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "FJSKTask";
private static final String TASK_CONFIG_CODE = "FJSKTask";
@Autowired
private ISchBasePointService pointService;
@Autowired

View File

@@ -21,7 +21,6 @@ import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.PointUtils;
import org.nl.wms.util.TaskUtils;
@@ -38,11 +37,10 @@ import java.util.stream.Collectors;
* @Description: 分拣回收剩料
* @Date: 2023/7/20
*/
@Component
@Component("FJSLHSTask")
@Deprecated
@TaskType("FJSLHSTask")
public class FJSLTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "FJSLHSTask";
private static final String TASK_CONFIG_CODE = "FJSLHSTask";
@Autowired
private ISchBasePointService pointService;
@Autowired

View File

@@ -21,7 +21,6 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.*;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.fj.mapper.FJMapper;
import org.nl.wms.util.PointUtils;
@@ -40,10 +39,9 @@ import java.util.stream.Collectors;
* @Description: rgv - 分拣强制入库任务 - 2点 改:不需要强制入库,改为人工分拣入库的方法
* @Date: 2023/6/21
*/
@Component
@TaskType("RGFJRKTask")
@Component("RGFJRKTask")
public class RGFJRKTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "RGFJRKTask";
private static final String TASK_CONFIG_CODE = "RGFJRKTask";
@Autowired
private ISchBasePointService pointService;
@Autowired

View File

@@ -18,7 +18,7 @@ public interface FJMapper {
* @param materialId
* @return
*/
List<SchBasePoint> findPointForFJQL(List<String> regionCode, String materialId);
List<SchBasePoint> findPointForFJQL(List<String> regionCode, String materialId, String customer);
List<SchBasePoint> findPointForFJSK(List<String> regionCode);
/**

View File

@@ -14,6 +14,7 @@
AND p.point_status = '3'
AND vg.material_id = #{materialId}
AND TIMESTAMPDIFF(MINUTE, vg.instorage_time, NOW()) >= ma.cooling_time
AND vg.customer = #{customer}
AND p.region_code IN
<foreach collection="regionCode" item="code" separator="," open="(" close=")">
#{code}

View File

@@ -21,12 +21,11 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.constant.ExceptionConstant;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.constant.PointTypeConstant;
import org.nl.wms.sch.task_manage.constant.RegionConstant;
import org.nl.wms.sch.task_manage.enums.*;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.hn.mapper.HNMapper;
import org.nl.wms.util.PointUtils;
@@ -46,10 +45,9 @@ import java.util.stream.Collectors;
* @date 2023年05月16日 16:44
* @desc 混碾满料任务: 混碾机 -> 困料货架,校验物料,特殊物料直接找压机工单泥料相同的上料位上。
*/
@Component
@TaskType("HNMLTask")
@Component("HNMLTask")
public class HNMLTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "HNMLTask";
private static final String TASK_CONFIG_CODE = "HNMLTask";
@Autowired
private ISchBasePointService pointService;
@Autowired

View File

@@ -12,12 +12,11 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.constant.ExceptionConstant;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.PointUtils;
import org.nl.wms.util.TaskUtils;
@@ -34,10 +33,9 @@ import java.util.stream.Collectors;
* @Description: 混料缺空:呼叫空载具,从困料货架上获取
* @Date: 2023/11/1
*/
@Component
@TaskType("HNQKTask")
@Component("HNQKTask")
public class HNQKTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "HNQKTask";
private static final String TASK_CONFIG_CODE = "HNQKTask";
@Autowired
private ISchBasePointService pointService;

View File

@@ -24,7 +24,6 @@ import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.PointUtils;
import org.nl.wms.util.TaskUtils;
@@ -42,10 +41,9 @@ import java.util.stream.Collectors;
* @Date: 2023/6/20
*/
@Slf4j
@Component
@TaskType("CYHCXMLTask")
@Component("CYHCXMLTask")
public class CYHCXMLTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "CYHCXMLTask";
private static final String TASK_CONFIG_CODE = "CYHCXMLTask";
@Autowired
private ISchBasePointService pointService;
@Autowired
@@ -148,9 +146,9 @@ public class CYHCXMLTask extends AbstractTask {
/**
* 找终点:到钢托盘缓存区中获取一个空位
*
* @param nextRegionStr
* @param extData
* @return
* @param nextRegionStr 区域
* @param extData 数据
* @return 点位
*/
private SchBasePoint findNextPoint(List<String> nextRegionStr, JSONObject extData) {
LambdaQueryWrapper<SchBasePoint> lam = new LambdaQueryWrapper<>();
@@ -227,8 +225,7 @@ public class CYHCXMLTask extends AbstractTask {
.eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicle_code)
.eq(SchBaseVehiclematerialgroup::getVehicle_type, vehicleType)
.eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status,
GroupBindMaterialStatusEnum.BOUND.getValue())
.eq(SchBaseVehiclematerialgroup::getIs_firing, true));
GroupBindMaterialStatusEnum.BOUND.getValue()));
if (ObjectUtil.isEmpty(one)) {
throw new BadRequestException(vehicle_code + " => " + vehicleType + "的组盘信息未找到");
}

View File

@@ -18,7 +18,6 @@ import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper;
import org.nl.wms.util.PointUtils;
@@ -38,10 +37,9 @@ import java.util.stream.Collectors;
*/
@Slf4j
@Deprecated
@Component
@TaskType("-")
@Component("-")
public class GZYQLTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "-";
private static final String TASK_CONFIG_CODE = "-";
@Autowired
private ISchBasePointService pointService;
@Autowired

View File

@@ -27,7 +27,6 @@ import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.*;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper;
import org.nl.wms.util.PointUtils;
@@ -47,10 +46,9 @@ import java.util.stream.Collectors;
* @Date: 2023/6/19
*/
@Slf4j
@Component
@TaskType("YZMLTask")
@Component("YZMLTask")
public class YZMLTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "YZMLTask";
private static final String TASK_CONFIG_CODE = "YZMLTask";
@Autowired
private ISchBasePointService pointService;
@Autowired
@@ -250,6 +248,7 @@ public class YZMLTask extends AbstractTask {
groupEntity.setVehicle_code(vehicleCode);
groupEntity.setVehicle_type(vehicleType);
groupEntity.setMaterial_qty(qty);
groupEntity.setCustomer(workorderObject.getCustomer());
groupEntity.setExt_data(JSONObject.toJSONString(stackParameters));
groupEntity.setPoint_code(basePoint.getPoint_code());
groupEntity.setPoint_name(basePoint.getPoint_name());

View File

@@ -13,12 +13,10 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.constant.ExceptionConstant;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.PointUtils;
import org.nl.wms.util.TaskUtils;
@@ -36,10 +34,9 @@ import java.util.stream.Collectors;
* @Date: 2023/6/16
*/
@Slf4j
@Component
@TaskType("YZQKTask")
@Component("YZQKTask")
public class YZQKTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "YZQKTask";
private static final String TASK_CONFIG_CODE = "YZQKTask";
@Autowired
private ISchBasePointService pointService;
@Autowired
@@ -50,12 +47,12 @@ public class YZQKTask extends AbstractTask {
private ISysNoticeService noticeService;
@Override
@Transactional
@Transactional(rollbackFor = Exception.class)
protected void createCompletion(SchBaseTask task) {
// 配置信息
SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper<SchBaseTaskconfig>()
.eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE));
TaskUtils.setUpdateByAcs(task); // 修改修改者
TaskUtils.setUpdateByAcs(task);
List<String> startRegionStr = Arrays.stream(taskConfig.getStart_region_str().split(","))
.collect(Collectors.toList());
task.setVehicle_type(GeneralDefinition.STEEL_TRAY);

View File

@@ -20,12 +20,11 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService;
import org.nl.wms.sch.task.service.dao.SchBaseTask;
import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig;
import org.nl.wms.sch.task_manage.AbstractTask;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.constant.ExceptionConstant;
import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.sch.task_manage.task.tasks.yz.mapper.YZMapper;
import org.nl.wms.util.PointUtils;
@@ -44,10 +43,9 @@ import java.util.stream.Collectors;
* @Date: 2023/11/1
*/
@Slf4j
@Component
@TaskType("YZQLTask")
@Component("YZQLTask")
public class YZQLTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "YZQLTask";
private static final String TASK_CONFIG_CODE = "YZQLTask";
@Autowired
private ISchBasePointService pointService;

View File

@@ -17,7 +17,6 @@ import org.nl.wms.sch.task_manage.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
import org.nl.wms.sch.task_manage.enums.PointStatusEnum;
import org.nl.wms.sch.task_manage.enums.TaskFinishedTypeEnum;
import org.nl.wms.sch.task_manage.task.TaskType;
import org.nl.wms.sch.task_manage.task.core.TaskStatus;
import org.nl.wms.util.PointUtils;
import org.nl.wms.util.TaskUtils;
@@ -35,10 +34,9 @@ import java.util.stream.Collectors;
* @Date: 2023/5/25
*/
@Slf4j
@Component
@TaskType("YZSKTask")
@Component("YZSKTask")
public class YZSKTask extends AbstractTask {
private static String TASK_CONFIG_CODE = "YZSKTask";
private static final String TASK_CONFIG_CODE = "YZSKTask";
@Autowired
private ISchBasePointService pointService;
@Autowired

View File

@@ -458,4 +458,53 @@ public class PointCreate {
}
pointService.saveOrUpdateBatch(list);
}
@Test
void testCreateRYAO() {
String name = "入窑口";
String code = "RYK";
String now = DateUtil.now();
List<SchBasePoint> list = new ArrayList<>();
for (int i = 1; i <= 2; i++) {
SchBasePoint p1 = new SchBasePoint();
p1.setPoint_code(code + "0" + i);
p1.setPoint_name(name + "0" + i);
p1.setRegion_code("YAO");
p1.setRegion_name("窑区域");
p1.setPoint_type("1");
p1.setParent_point_code("YAO0" + i);
p1.setIs_has_workder(true);
p1.setWorkshop_code("A1");
p1.setIs_auto(true);
p1.setCreate_id("1");
p1.setCreate_name("管理员");
p1.setCreate_time(now);
list.add(p1);
}
pointService.saveOrUpdateBatch(list);
}
@Test
void testCreateCYAO() {
String name = "出窑口";
String code = "CYK";
String now = DateUtil.now();
List<SchBasePoint> list = new ArrayList<>();
for (int i = 1; i <= 2; i++) {
SchBasePoint p1 = new SchBasePoint();
p1.setPoint_code(code + "0" + i);
p1.setPoint_name(name + "0" + i);
p1.setRegion_code("YAO");
p1.setRegion_name("窑区域");
p1.setPoint_type("2");
p1.setParent_point_code("YAO0" + i);
p1.setIs_has_workder(true);
p1.setWorkshop_code("A1");
p1.setIs_auto(true);
p1.setCreate_id("1");
p1.setCreate_name("管理员");
p1.setCreate_time(now);
list.add(p1);
}
pointService.saveOrUpdateBatch(list);
}
}

View File

@@ -129,7 +129,7 @@ export default {
},
initWebSocket() {
// const wsUri = (process.env.VUE_APP_WS_API === '/' ? '/' : (process.env.VUE_APP_WS_API + '/')) + 'messageInfo'
const wsUri = window.g.prod.VUE_APP_BASE_API.replace('http', 'ws') + '/webSocket/' + 'messageInfo'
const wsUri = window.g.prod.VUE_APP_BASE_API.replace('http', 'ws') + '/webSocket/' + 'messageInfo'
this.websock = new WebSocket(wsUri)
this.websock.onerror = this.webSocketOnError
this.websock.onmessage = this.webSocketOnMessage

View File

@@ -73,12 +73,12 @@
开工
</el-button>
<el-button
v-if="false"
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
disabled
@click="synchronize()"
>
同步

View File

@@ -73,6 +73,7 @@
开工
</el-button>
<el-button
v-if="false"
slot="right"
class="filter-item"
type="success"
@@ -480,7 +481,7 @@ export default {
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: '工单管理',
title: '混碾工单',
url: 'api/pdmBdWorkorder',
idField: 'workorder_id',
sort: 'workorder_id,desc',

View File

@@ -0,0 +1,703 @@
<template>
<div v-loading.fullscreen.lock="fullscreenLoading" class="app-container">
<!--工具栏-->
<div class="head-container">
<div v-if="crud.props.searchToggle">
<!-- 搜索 -->
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="工单编号">
<el-input
v-model="query.workorder_code"
clearable
placeholder="工单编号"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="设备编码">
<el-input
v-model="query.point_code"
clearable
placeholder="设备编码"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
v-model="query.createTime"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="crud.toQuery"
/>
</el-form-item>
<el-form-item label="工单状态">
<el-select
v-model="query.workorder_status"
multiple
placeholder="工单状态"
class="filter-item"
clearable
@change="handOrderStatus"
>
<el-option
v-for="item in dict.pdm_workorder_status"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<rrOperation :crud="crud"/>
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
:disabled="!(crud.selections[0]) || crud.selections[1]"
@click="submits(crud.selections[0])"
>
开工
</el-button>
<el-button
v-if="false"
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
disabled
@click="synchronize()"
>
同步
</el-button>
</crudOperation>
<!--表单组件-->
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:title="crud.status.title"
width="820px"
>
<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="135px"
label-suffix=":"
>
<el-form-item v-if="false" label="所属车间">
<el-select
v-model="form.workshop_code"
placeholder="请选择"
style="width: 240px;"
>
<el-option
v-for="item in workShopList"
:label="item.workshop_name"
:value="item.workshop_code"
/>
</el-select>
</el-form-item>
<el-form-item label="所属工序" prop="region_code">
<el-select
v-model="form.region_code"
disabled
filterable
placeholder="请选择"
style="width: 240px;"
@change="setRegionName"
>
<el-option
v-for="item in regionList"
:key="item.region_code"
:label="item.region_code"
:value="item.region_code"
>
<span style="float: left">{{ item.region_name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.region_code }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="工序名称">
<el-input v-model="form.region_name" style="width: 240px;" disabled/>
</el-form-item>
<el-form-item label="设备编码" prop="point_code">
<el-select
v-model="form.point_code"
filterable
placeholder="请选择"
style="width: 240px;"
@change="setPointName"
>
<el-option
v-for="item in pointList"
:key="item.point_code"
:label="item.point_code"
:value="item.point_code"
>
<span style="float: left">{{ item.point_name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.point_code }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="设备名称">
<el-input v-model="form.point_name" style="width: 240px;" disabled />
</el-form-item>
<el-form-item label="物料名称" prop="material_name">
<el-input v-model="form.material_name" style="width: 240px;" @focus="getMaterial(1)"/>
</el-form-item>
<el-form-item label="物料编码">
<el-input v-model="form.material_code" style="width: 240px;" disabled/>
</el-form-item>
<el-form-item label="物料规格">
<el-input v-model="form.material_spec" style="width: 240px;" disabled/>
</el-form-item>
<el-form-item label="半成品编码" prop="material_name">
<el-input v-model="form.half_material_code" style="width: 240px;" disabled/>
</el-form-item>
<el-form-item label="原料编码">
<el-input v-model="form.raw_material_code" style="width: 240px;" disabled/>
</el-form-item>
<el-form-item label="新料比例" v-if="form.region_code === 'YZ'">
<el-input-number
v-model.number="form.material_ratio"
:min="0"
:max="999"
style="width: 240px;"
/>
</el-form-item>
<el-form-item v-if="form.region_code === 'HN' || form.region_code === 'YZ'" label="计划重量" prop="plan_weight">
<el-input-number
v-model.number="form.plan_weight"
:min="0"
style="width: 240px;"
/>
</el-form-item>
<el-form-item v-if="form.region_code != 'HN'" label="计划数量" prop="plan_qty">
<el-input-number
v-model.number="form.plan_qty"
:min="0"
style="width: 240px;"
/>
</el-form-item>
<el-form-item label="计划开始时间" prop="planproducestart_date">
<el-date-picker
v-model="form.planproducestart_date"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
style="width: 240px;"
placeholder="选择日期时间"
/>
</el-form-item>
<el-form-item label="计划结束时间" prop="planproduceend_date">
<el-date-picker
v-model="form.planproduceend_date"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
style="width: 240px;"
placeholder="选择日期时间"
/>
</el-form-item>
<el-form-item v-if="crud.status.edit" label="实际开始时间">
<el-date-picker
v-model="form.realproducestart_date"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
style="width: 240px;"
placeholder="选择日期时间"
/>
</el-form-item>
<el-form-item v-if="crud.status.edit" label="实际结束时间">
<el-date-picker
v-model="form.realproduceend_date"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
style="width: 240px;"
placeholder="选择日期时间"
/>
</el-form-item>
<el-form-item label="检验员" v-if="form.region_code === 'YZ'">
<el-select
v-model="form.inspector"
clearable
size="mini"
placeholder="请选择"
style="width: 240px;"
>
<el-option
v-for="item in userList"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="静置时间(分钟)" prop="standing_time" v-if="form.region_code === 'HN'">
<el-input-number
v-model.number="form.standing_time"
:min="0"
:max="999"
style="width: 240px;"
/>
</el-form-item>
<el-form-item v-if="crud.status.edit" label="实际数量" prop="real_qty">
<el-input-number
v-model.number="form.real_qty"
:min="0"
style="width: 240px;"
/>
</el-form-item>
<el-form-item v-if="form.region_code !== 'HN'" label="客户编码">
<el-select v-model="form.customer" clearable filterable placeholder="请选择" style="width: 240px;">
<el-option
v-for="item in custerList"
:key="item.cust_id"
:label="item.cust_name"
:value="item.cust_id"
>
<span style="float: left">{{ item.cust_code }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.cust_name }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="载具类型">
<el-select
v-model="form.vehicle_type"
clearable
size="mini"
placeholder="请选择"
style="width: 240px;"
>
<el-option
v-for="item in dict.vehicle_type"
:label="item.label"
:value="item.value"
:disabled="item.value !== 'GTP'"
/>
</el-select>
</el-form-item>
<el-form-item v-if="false" label="工单类型" prop="workorder_type">
<el-input v-model="form.workorder_type" style="width: 240px;"/>
</el-form-item>
<el-form-item label="是否自动搬运" prop="is_needmove">
<el-radio-group v-model="form.is_needmove" style="width: 240px">
<el-radio :label="true">是</el-radio>
<el-radio :label="false">否</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="是否加急" prop="is_needmove">
<el-radio-group v-model="form.is_urgent" style="width: 240px">
<el-radio :label="true">是</el-radio>
<el-radio :label="false">否</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.region_code === 'HN'" label="是否新料" prop="is_new">
<el-radio-group v-model="form.is_new" style="width: 240px">
<el-radio :label="true">是</el-radio>
<el-radio :label="false">否</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="info" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
size="mini"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55"/>
<el-table-column
prop="workorder_code"
label="工单编号"
:min-width="flexWidth('workorder_code',crud.data,'工单编号')"
/>
<el-table-column
prop="workorder_status"
label="工单状态"
:min-width="flexWidth('workorder_status',crud.data,'工单状态')"
>
<template slot-scope="scope">
{{ dict.label.pdm_workorder_status[scope.row.workorder_status] }}
</template>
</el-table-column>
<el-table-column prop="plan_qty" label="计划数量" :min-width="flexWidth('plan_qty',crud.data,'计划数量')" />
<el-table-column prop="real_qty" label="实际数量" :min-width="flexWidth('real_qty',crud.data,'实际数量')" />
<el-table-column prop="plan_weight" label="计划重量" :min-width="flexWidth('plan_weight',crud.data,'计划数量')" />
<el-table-column prop="real_weight" label="实际重量" :min-width="flexWidth('real_weight',crud.data,'实际数量')" />
<!-- <el-table-column prop="region_code" label="区域编码" :min-width="flexWidth('region_code',crud.data,'区域编码')" />-->
<el-table-column
prop="region_name"
label="区域名称"
:min-width="flexWidth('region_name',crud.data,'区域名称')"
/>
<el-table-column prop="point_code" label="设备编码" :min-width="flexWidth('point_code',crud.data,'设备编码')" />
<el-table-column prop="point_name" label="设备名称" :min-width="flexWidth('point_name',crud.data,'设备名称')" />
<el-table-column
prop="material_code"
label="成品编码"
:min-width="flexWidth('material_name',crud.data,'物料标识')"
/>
<el-table-column
prop="half_material_code"
label="半成品编码"
:min-width="flexWidth('half_material_code',crud.data,'半成品编码')"
/>
<el-table-column
prop="raw_material_code"
label="泥料编码"
:min-width="flexWidth('raw_material_code',crud.data,'物料标识')"
/>
<el-table-column
prop="material_name"
label="物料名称"
:min-width="flexWidth('material_name',crud.data,'物料标识')"
/>
<el-table-column
prop="material_spec"
label="物料规格"
:min-width="flexWidth('material_spec',crud.data,'物料标识')"
/>
<el-table-column
prop="vehicle_type"
label="载具类型"
:min-width="flexWidth('vehicle_type',crud.data,'载具类型', 20)"
>
<template slot-scope="scope">
{{ dict.label.vehicle_type[scope.row.vehicle_type] }}
</template>
</el-table-column>
<el-table-column
prop="produce_date"
label="生产日期"
:min-width="flexWidth('produce_date',crud.data,'生产日期')"
/>
<el-table-column
prop="planproducestart_date"
label="计划开始时间"
:min-width="flexWidth('planproducestart_date',crud.data,'计划开始时间')"
/>
<el-table-column
prop="planproduceend_date"
label="计划结束时间"
:min-width="flexWidth('planproduceend_date',crud.data,'计划结束时间')"
/>
<el-table-column
prop="realproducestart_date"
label="实际开始时间"
:min-width="flexWidth('realproducestart_date',crud.data,'实际开始时间')"
/>
<el-table-column
prop="realproduceend_date"
label="实际结束时间"
:min-width="flexWidth('realproduceend_date',crud.data,'实际结束时间')"
/>
<el-table-column
prop="standing_time"
label="静置时间(分钟)"
:min-width="flexWidth('standing_time',crud.data,'静置时间(分钟)')"
/>
<el-table-column
prop="is_needmove"
label="是否自动搬运"
:min-width="flexWidth('is_needmove',crud.data,'是否自动搬运')"
>
<template slot-scope="scope">
{{ scope.row.is_needmove ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column prop="is_urgent" label="是否加急" :min-width="flexWidth('is_urgent',crud.data,'是否加急')">
<template slot-scope="scope">
{{ scope.row.is_urgent ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')"/>
<el-table-column
prop="create_time"
label="创建时间"
:min-width="flexWidth('create_time',crud.data,'创建时间')"
/>
<el-table-column prop="update_name" label="修改人" :min-width="flexWidth('update_name',crud.data,'修改人')"/>
<el-table-column
prop="update_time"
label="修改时间"
:min-width="flexWidth('update_time',crud.data,'修改时间')"
/>
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination/>
</div>
<MaterialDialog :dialog-show.sync="materialDialog" :flag="flag" @tableChanged="tableChanged"/>
</div>
</template>
<script>
import crudPdmBdWorkorder from './pdmBdWorkorder'
import crudMdCsCustomerbase from '@/views/wms/basedata/customer/mdCsCustomerbase'
import crudSchBaseRegion from '@/views/wms/sch/region/schBaseRegion'
import crudSchBasePoint from '@/views/wms/sch/point/schBasePoint'
import CRUD, { crud, form, header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import crudMdBaseWorkShop from '@/views/wms/basedata/workshop/mdBaseWorkshop'
import MaterialDialog from '@/views/wms/sch/group/MaterialDialog.vue'
import item from '@/layout/components/Sidebar/Item.vue'
const defaultForm = {
workorder_id: null,
workorder_code: null,
plan_weight: null,
plan_qty: null,
real_qty: null,
material_id: null,
half_material_code: null,
raw_material_code: null,
vehicle_type: 'GTP',
planproducestart_date: null,
planproduceend_date: null,
realproducestart_date: null,
realproduceend_date: null,
material_spec: null,
material_code: null,
material_name: null,
standing_time: null,
point_code: null,
point_name: null,
region_code: 'YZ',
region_name: null,
workorder_status: null,
is_needmove: true,
workorder_type: null,
passback_status: null,
workshop_code: null,
ext_id: null,
is_delete: false,
is_urgent: false,
is_new: true,
inspector: null,
material_ratio: 100,
pack_method: null,
customer: null,
ext_data: 0
}
export default {
name: 'PressedOrder',
dicts: ['vehicle_type', 'pdm_workorder_status'],
components: { MaterialDialog, pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: '压制工单',
url: 'api/pdmBdWorkorder',
idField: 'workorder_id',
sort: 'workorder_id,desc',
query: {
region_code: 'YZ'
},
crudMethod: { ...crudPdmBdWorkorder }
})
},
data() {
return {
permission: {},
rules: {
material_code: [
{ required: true, message: '物料不能为空', trigger: 'blur' }
],
plan_qty: [
{ required: true, message: '计划数量不能为空', trigger: 'blur' }
],
plan_weight: [
{ required: true, message: '计划重量不能为空', trigger: 'blur' }
],
planproducestart_date: [
{ required: true, message: '计划开始不能为空', trigger: 'change' }
],
planproduceend_date: [
{ required: true, message: '计划结束不能为空', trigger: 'change' }
],
point_code: [
{ required: true, message: '设备编码不能为空', trigger: 'change' }
],
region_code: [
{ required: true, message: '区域编码不能为空', trigger: 'change' }
]
},
queryTypeOptions: [
{ key: 'workorder_code', display_name: '工单编号' },
{ key: 'point_code', display_name: '设备编码' }
],
workShopList: [],
regionList: [],
pointList: [],
custerList: [],
userList: [],
regionCodeParam: null,
materialDialog: false,
orderDialog: false,
fullscreenLoading: false,
flag: 1
}
},
created() {
this.getWorkShopList()
this.getRegionList()
this.getUserList()
this.getCustomerList()
},
methods: {
item() {
return item
},
getCustomerList() {
// 获取客户列表
crudMdCsCustomerbase.getCustomerList().then(res => {
this.custerList = res
})
},
getUserList() {
// 获取检验员列表
crudPdmBdWorkorder.userList().then(res => {
this.userList = res
})
},
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
[CRUD.HOOK.beforeToCU]() {
this.setRegionName('YZ')
const extData = this.form.ext_data
if (extData !== undefined || extData !== null || extData !== '') {
const ext = JSON.parse(extData)
this.form.order_no = ext.order_no
this.form.order_subnum = ext.custer_no
}
},
getWorkShopList() { // 获取车间列表
crudMdBaseWorkShop.getWorkShopList().then(res => {
this.workShopList = res
})
},
getRegionList() { // 获取区域列表
const param = {
is_has_workder: true
}
crudSchBaseRegion.getRegionList(param).then(res => {
this.regionList = res
})
},
getPointList() { // 获取点位列表
if (this.regionCodeParam) {
const param = {
region_code: this.regionCodeParam
}
crudSchBasePoint.getPointList(param).then(res => {
this.pointList = res
this.regionCodeParam = null
})
}
},
getMaterial(flag) {
this.materialDialog = true
this.flag = flag
},
tableChanged(row, flag) {
if (flag === 1) {
this.form.material_name = row.material_name
this.form.material_id = row.material_id
this.form.material_spec = row.material_spec
this.form.material_code = row.material_code
this.form.half_material_code = row.half_material_code
this.form.raw_material_code = row.raw_material_code
} else {
this.form.raw_material_name = row.material_name
this.form.raw_material_id = row.material_id
this.form.raw_material_code = row.material_code
}
this.form.pack_method = row.pack_method
this.form.standing_time = row.standing_time === null ? 0 : row.standing_time
},
setRegionName(data) {
// 清空
this.form.point_code = null
this.form.point_name = null
this.regionCodeParam = data
var region = this.regionList.find(item => item.region_code === data)
this.form.region_name = region.region_name
this.getPointList()
},
setPointName(data) {
var point = this.pointList.find(item => item.point_code === data)
this.form.point_name = point.point_name
},
handOrderStatus(value) {
this.crud.query.more_order_status = null
if (value) {
this.crud.query.more_order_status = value.toString()
}
this.crud.toQuery()
},
// 下发
submits(row) {
this.fullscreenLoading = true
crudPdmBdWorkorder.submits(row).then(res => {
this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
}).catch(() => {
this.fullscreenLoading = false
}).finally(() => {
this.fullscreenLoading = false
})
},
synchronize() {
this.fullscreenLoading = true
crudPdmBdWorkorder.orderSynchronize(this.crud.query).then(res => {
this.fullscreenLoading = false
this.crud.notify('同步成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
}).catch(() => {
this.fullscreenLoading = false
}).finally(() => {
this.fullscreenLoading = false
})
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,695 @@
<template>
<div v-loading.fullscreen.lock="fullscreenLoading" class="app-container">
<!--工具栏-->
<div class="head-container">
<div v-if="crud.props.searchToggle">
<!-- 搜索 -->
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="80px"
label-suffix=":"
>
<el-form-item label="工单编号">
<el-input
v-model="query.workorder_code"
clearable
placeholder="工单编号"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="设备编码">
<el-input
v-model="query.point_code"
clearable
placeholder="设备编码"
class="filter-item"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="创建时间">
<el-date-picker
v-model="query.createTime"
type="datetimerange"
value-format="yyyy-MM-dd HH:mm:ss"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
@change="crud.toQuery"
/>
</el-form-item>
<el-form-item label="工单状态">
<el-select
v-model="query.workorder_status"
multiple
placeholder="工单状态"
class="filter-item"
clearable
@change="handOrderStatus"
>
<el-option
v-for="item in dict.pdm_workorder_status"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<rrOperation :crud="crud" />
</el-form>
</div>
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
:disabled="!(crud.selections[0]) || crud.selections[1]"
@click="submits(crud.selections[0])"
>
开工
</el-button>
<el-button
v-if="false"
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
disabled
@click="synchronize()"
>
同步
</el-button>
</crudOperation>
<!--表单组件-->
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:title="crud.status.title"
width="820px"
>
<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="135px"
label-suffix=":"
>
<el-form-item v-if="false" label="所属车间">
<el-select
v-model="form.workshop_code"
placeholder="请选择"
style="width: 240px;"
>
<el-option
v-for="item in workShopList"
:label="item.workshop_name"
:value="item.workshop_code"
/>
</el-select>
</el-form-item>
<el-form-item label="所属工序" prop="region_code">
<el-select
v-model="form.region_code"
filterable
placeholder="请选择"
style="width: 240px;"
@change="setRegionName"
>
<el-option
v-for="item in regionList"
:key="item.region_code"
:label="item.region_code"
:value="item.region_code"
>
<span style="float: left">{{ item.region_name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.region_code }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="工序名称">
<el-input v-model="form.region_name" style="width: 240px;" disabled />
</el-form-item>
<el-form-item label="设备编码" prop="point_code">
<el-select
v-model="form.point_code"
filterable
placeholder="请选择"
style="width: 240px;"
@change="setPointName"
>
<el-option
v-for="item in pointList"
:key="item.point_code"
:label="item.point_code"
:value="item.point_code"
>
<span style="float: left">{{ item.point_name }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.point_code }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="设备名称">
<el-input v-model="form.point_name" style="width: 240px;" disabled />
</el-form-item>
<el-form-item label="物料名称" prop="material_name">
<el-input v-model="form.material_name" style="width: 240px;" @focus="getMaterial(1)" />
</el-form-item>
<el-form-item label="物料编码">
<el-input v-model="form.material_code" style="width: 240px;" disabled />
</el-form-item>
<el-form-item label="物料规格">
<el-input v-model="form.material_spec" style="width: 240px;" disabled />
</el-form-item>
<el-form-item label="半成品编码" prop="material_name">
<el-input v-model="form.half_material_code" style="width: 240px;" disabled />
</el-form-item>
<el-form-item label="原料编码">
<el-input v-model="form.raw_material_code" style="width: 240px;" disabled />
</el-form-item>
<el-form-item v-if="form.region_code === 'HN' || form.region_code === 'YZ'" label="计划重量" prop="plan_weight">
<el-input-number
v-model.number="form.plan_weight"
:min="0"
style="width: 240px;"
/>
</el-form-item>
<el-form-item v-if="form.region_code != 'HN'" label="计划数量" prop="plan_qty">
<el-input-number
v-model.number="form.plan_qty"
:min="0"
style="width: 240px;"
/>
</el-form-item>
<el-form-item label="计划开始时间" prop="planproducestart_date">
<el-date-picker
v-model="form.planproducestart_date"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
style="width: 240px;"
placeholder="选择日期时间"
/>
</el-form-item>
<el-form-item label="计划结束时间" prop="planproduceend_date">
<el-date-picker
v-model="form.planproduceend_date"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
style="width: 240px;"
placeholder="选择日期时间"
/>
</el-form-item>
<el-form-item v-if="crud.status.edit" label="实际开始时间">
<el-date-picker
v-model="form.realproducestart_date"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
style="width: 240px;"
placeholder="选择日期时间"
/>
</el-form-item>
<el-form-item v-if="crud.status.edit" label="实际结束时间">
<el-date-picker
v-model="form.realproduceend_date"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetime"
style="width: 240px;"
placeholder="选择日期时间"
/>
</el-form-item>
<el-form-item v-if="form.region_code === 'YZ'" label="新料比例">
<el-input-number
v-model.number="form.material_ratio"
:min="0"
:max="999"
style="width: 240px;"
/>
</el-form-item>
<el-form-item v-if="form.region_code === 'YZ'" label="检验员">
<el-select
v-model="form.inspector"
clearable
size="mini"
placeholder="请选择"
style="width: 240px;"
>
<el-option
v-for="item in userList"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item v-if="form.region_code === 'HN'" label="静置时间(分钟)" prop="standing_time">
<el-input-number
v-model.number="form.standing_time"
:min="0"
:max="999"
style="width: 240px;"
/>
</el-form-item>
<el-form-item v-if="crud.status.edit" label="实际数量" prop="real_qty">
<el-input-number
v-model.number="form.real_qty"
:min="0"
style="width: 240px;"
/>
</el-form-item>
<el-form-item v-if="form.region_code !== 'HN'" label="客户编码">
<el-select v-model="form.customer" clearable filterable placeholder="请选择" style="width: 240px;">
<el-option
v-for="item in custerList"
:key="item.cust_id"
:label="item.cust_name"
:value="item.cust_id"
>
<span style="float: left">{{ item.cust_code }}</span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.cust_name }}</span>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="载具类型">
<el-select
v-model="form.vehicle_type"
clearable
size="mini"
placeholder="请选择"
style="width: 240px;"
>
<el-option
v-for="item in dict.vehicle_type"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item v-if="false" label="工单类型" prop="workorder_type">
<el-input v-model="form.workorder_type" style="width: 240px;" />
</el-form-item>
<el-form-item label="是否自动搬运" prop="is_needmove">
<el-radio-group v-model="form.is_needmove" style="width: 240px">
<el-radio :label="true">是</el-radio>
<el-radio :label="false">否</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="是否加急" prop="is_needmove">
<el-radio-group v-model="form.is_urgent" style="width: 240px">
<el-radio :label="true">是</el-radio>
<el-radio :label="false">否</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.region_code === 'HN'" label="是否新料" prop="is_new">
<el-radio-group v-model="form.is_new" style="width: 240px">
<el-radio :label="true">是</el-radio>
<el-radio :label="false">否</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="info" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
size="mini"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column
prop="workorder_code"
label="工单编号"
:min-width="flexWidth('workorder_code',crud.data,'工单编号')"
/>
<el-table-column
prop="workorder_status"
label="工单状态"
:min-width="flexWidth('workorder_status',crud.data,'工单状态')"
>
<template slot-scope="scope">
{{ dict.label.pdm_workorder_status[scope.row.workorder_status] }}
</template>
</el-table-column>
<el-table-column prop="plan_qty" label="计划数量" :min-width="flexWidth('plan_qty',crud.data,'计划数量')" />
<el-table-column prop="real_qty" label="实际数量" :min-width="flexWidth('real_qty',crud.data,'实际数量')" />
<el-table-column prop="plan_weight" label="计划重量" :min-width="flexWidth('plan_weight',crud.data,'计划数量')" />
<el-table-column prop="real_weight" label="实际重量" :min-width="flexWidth('real_weight',crud.data,'实际数量')" />
<!-- <el-table-column prop="region_code" label="区域编码" :min-width="flexWidth('region_code',crud.data,'区域编码')" />-->
<el-table-column
prop="region_name"
label="区域名称"
:min-width="flexWidth('region_name',crud.data,'区域名称')"
/>
<el-table-column prop="point_code" label="设备编码" :min-width="flexWidth('point_code',crud.data,'设备编码')" />
<el-table-column prop="point_name" label="设备名称" :min-width="flexWidth('point_name',crud.data,'设备名称')" />
<el-table-column
prop="material_code"
label="成品编码"
:min-width="flexWidth('material_name',crud.data,'物料标识')"
/>
<el-table-column
prop="half_material_code"
label="半成品编码"
:min-width="flexWidth('half_material_code',crud.data,'半成品编码')"
/>
<el-table-column
prop="raw_material_code"
label="泥料编码"
:min-width="flexWidth('raw_material_code',crud.data,'物料标识')"
/>
<el-table-column
prop="material_name"
label="物料名称"
:min-width="flexWidth('material_name',crud.data,'物料标识')"
/>
<el-table-column
prop="material_spec"
label="物料规格"
:min-width="flexWidth('material_spec',crud.data,'物料标识')"
/>
<el-table-column
prop="vehicle_type"
label="载具类型"
:min-width="flexWidth('vehicle_type',crud.data,'载具类型', 20)"
>
<template slot-scope="scope">
{{ dict.label.vehicle_type[scope.row.vehicle_type] }}
</template>
</el-table-column>
<el-table-column
prop="produce_date"
label="生产日期"
:min-width="flexWidth('produce_date',crud.data,'生产日期')"
/>
<el-table-column
prop="planproducestart_date"
label="计划开始时间"
:min-width="flexWidth('planproducestart_date',crud.data,'计划开始时间')"
/>
<el-table-column
prop="planproduceend_date"
label="计划结束时间"
:min-width="flexWidth('planproduceend_date',crud.data,'计划结束时间')"
/>
<el-table-column
prop="realproducestart_date"
label="实际开始时间"
:min-width="flexWidth('realproducestart_date',crud.data,'实际开始时间')"
/>
<el-table-column
prop="realproduceend_date"
label="实际结束时间"
:min-width="flexWidth('realproduceend_date',crud.data,'实际结束时间')"
/>
<el-table-column
prop="standing_time"
label="静置时间(分钟)"
:min-width="flexWidth('standing_time',crud.data,'静置时间(分钟)')"
/>
<el-table-column
prop="is_needmove"
label="是否自动搬运"
:min-width="flexWidth('is_needmove',crud.data,'是否自动搬运')"
>
<template slot-scope="scope">
{{ scope.row.is_needmove ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column prop="is_urgent" label="是否加急" :min-width="flexWidth('is_urgent',crud.data,'是否加急')">
<template slot-scope="scope">
{{ scope.row.is_urgent ? '是' : '否' }}
</template>
</el-table-column>
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" />
<el-table-column
prop="create_time"
label="创建时间"
:min-width="flexWidth('create_time',crud.data,'创建时间')"
/>
<el-table-column prop="update_name" label="修改人" :min-width="flexWidth('update_name',crud.data,'修改人')" />
<el-table-column
prop="update_time"
label="修改时间"
:min-width="flexWidth('update_time',crud.data,'修改时间')"
/>
<el-table-column v-permission="[]" label="操作" width="120px" align="center" fixed="right">
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
<MaterialDialog :dialog-show.sync="materialDialog" :flag="flag" @tableChanged="tableChanged" />
</div>
</template>
<script>
import crudPdmBdWorkorder from './pdmBdWorkorder'
import crudMdCsCustomerbase from '@/views/wms/basedata/customer/mdCsCustomerbase'
import crudSchBaseRegion from '@/views/wms/sch/region/schBaseRegion'
import crudSchBasePoint from '@/views/wms/sch/point/schBasePoint'
import CRUD, { crud, form, header, presenter } from '@crud/crud'
import rrOperation from '@crud/RR.operation'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import crudMdBaseWorkShop from '@/views/wms/basedata/workshop/mdBaseWorkshop'
import MaterialDialog from '@/views/wms/sch/group/MaterialDialog.vue'
import item from '@/layout/components/Sidebar/Item.vue'
const defaultForm = {
workorder_id: null,
workorder_code: null,
plan_weight: null,
plan_qty: null,
real_qty: null,
material_id: null,
half_material_code: null,
raw_material_code: null,
vehicle_type: null,
planproducestart_date: null,
planproduceend_date: null,
realproducestart_date: null,
realproduceend_date: null,
material_spec: null,
material_code: null,
material_name: null,
standing_time: null,
point_code: null,
point_name: null,
region_code: null,
region_name: null,
workorder_status: null,
is_needmove: true,
workorder_type: null,
passback_status: null,
workshop_code: null,
ext_id: null,
is_delete: false,
is_urgent: false,
is_new: true,
inspector: null,
material_ratio: 0,
pack_method: null,
customer: null,
ext_data: 0
}
export default {
name: 'SortedOrder',
dicts: ['vehicle_type', 'pdm_workorder_status'],
components: { MaterialDialog, pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
cruds() {
return CRUD({
title: '分拣工单',
url: 'api/pdmBdWorkorder',
idField: 'workorder_id',
sort: 'workorder_id,desc',
query: {
region_code: 'FJ'
},
crudMethod: { ...crudPdmBdWorkorder }
})
},
data() {
return {
permission: {},
rules: {
material_code: [
{ required: true, message: '物料不能为空', trigger: 'blur' }
],
plan_qty: [
{ required: true, message: '计划数量不能为空', trigger: 'blur' }
],
planproducestart_date: [
{ required: true, message: '计划开始不能为空', trigger: 'change' }
],
planproduceend_date: [
{ required: true, message: '计划结束不能为空', trigger: 'change' }
],
point_code: [
{ required: true, message: '设备编码不能为空', trigger: 'change' }
],
region_code: [
{ required: true, message: '区域编码不能为空', trigger: 'change' }
]
},
queryTypeOptions: [
{ key: 'workorder_code', display_name: '工单编号' },
{ key: 'point_code', display_name: '设备编码' }
],
workShopList: [],
regionList: [],
pointList: [],
custerList: [],
userList: [],
regionCodeParam: null,
materialDialog: false,
orderDialog: false,
fullscreenLoading: false,
flag: 1
}
},
created() {
this.getWorkShopList()
this.getRegionList()
this.getUserList()
this.getCustomerList()
},
methods: {
item() {
return item
},
getCustomerList() {
// 获取客户列表
crudMdCsCustomerbase.getCustomerList().then(res => {
this.custerList = res
})
},
getUserList() {
// 获取检验员列表
crudPdmBdWorkorder.userList().then(res => {
this.userList = res
})
},
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
[CRUD.HOOK.beforeToCU]() {
const extData = this.form.ext_data
if (extData !== undefined || extData !== null || extData !== '') {
const ext = JSON.parse(extData)
this.form.order_no = ext.order_no
this.form.order_subnum = ext.custer_no
}
},
getWorkShopList() { // 获取车间列表
crudMdBaseWorkShop.getWorkShopList().then(res => {
this.workShopList = res
})
},
getRegionList() { // 获取区域列表
const param = {
is_has_workder: true
}
crudSchBaseRegion.getRegionList(param).then(res => {
this.regionList = res
})
},
getPointList() { // 获取点位列表
if (this.regionCodeParam) {
const param = {
region_code: this.regionCodeParam
}
crudSchBasePoint.getPointList(param).then(res => {
this.pointList = res
this.regionCodeParam = null
})
}
},
getMaterial(flag) {
this.materialDialog = true
this.flag = flag
},
tableChanged(row, flag) {
this.form.material_name = row.material_name
this.form.material_id = row.material_id
this.form.material_spec = row.material_spec
this.form.material_code = row.material_code
this.form.half_material_code = row.half_material_code
this.form.raw_material_code = row.raw_material_code
this.form.pack_method = row.pack_method
const result = Object.keys(this.dict.label.vehicle_type).find(key => this.dict.label.vehicle_type[key] === row.pack_palletspec)
if (result) {
this.form.vehicle_type = result
}
this.form.standing_time = row.standing_time === null ? 0 : row.standing_time
},
setRegionName(data) {
// 清空
this.form.point_code = null
this.form.point_name = null
this.regionCodeParam = data
var region = this.regionList.find(item => item.region_code === data)
this.form.region_name = region.region_name
this.getPointList()
},
setPointName(data) {
var point = this.pointList.find(item => item.point_code === data)
this.form.point_name = point.point_name
},
handOrderStatus(value) {
this.crud.query.more_order_status = null
if (value) {
this.crud.query.more_order_status = value.toString()
}
this.crud.toQuery()
},
// 下发
submits(row) {
this.fullscreenLoading = true
crudPdmBdWorkorder.submits(row).then(res => {
this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
}).catch(() => {
this.fullscreenLoading = false
}).finally(() => {
this.fullscreenLoading = false
})
},
synchronize() {
this.fullscreenLoading = true
crudPdmBdWorkorder.orderSynchronize(this.crud.query).then(res => {
this.fullscreenLoading = false
this.crud.notify('同步成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
}).catch(() => {
this.fullscreenLoading = false
}).finally(() => {
this.fullscreenLoading = false
})
}
}
}
</script>
<style scoped>
</style>