rev:刻字后端代码

This commit is contained in:
zhangzhiqiang
2023-07-03 14:28:32 +08:00
parent ec0fd6cd53
commit 128272a27d
28 changed files with 277 additions and 636 deletions

View File

@@ -281,17 +281,17 @@
</dependency> </dependency>
<!-- 解析客户端操作系统、浏览器信息 --> <!-- 解析客户端操作系统、浏览器信息 -->
<dependency> <!-- <dependency>-->
<groupId>nl.basjes.parse.useragent</groupId> <!-- <groupId>nl.basjes.parse.useragent</groupId>-->
<artifactId>yauaa</artifactId> <!-- <artifactId>yauaa</artifactId>-->
<version>5.23</version> <!-- <version>5.23</version>-->
</dependency> <!-- </dependency>-->
<dependency> <!-- <dependency>-->
<groupId>eu.bitwalker</groupId> <!-- <groupId>eu.bitwalker</groupId>-->
<artifactId>UserAgentUtils</artifactId> <!-- <artifactId>UserAgentUtils</artifactId>-->
<version>1.21</version> <!-- <version>1.21</version>-->
</dependency> <!-- </dependency>-->
<!--WQL--> <!--WQL-->
<dependency> <dependency>

View File

@@ -28,9 +28,8 @@ public enum AcsTaskEnum {
TASK_PRODUCT_WASH("3","专机-深坑任务"), TASK_PRODUCT_WASH("3","专机-深坑任务"),
//3个点任务编号缓存线满料载具列表 //3个点任务编号缓存线满料载具列表
TASK_CACHELINE_OUT("4","缓存线-专机缺料任务"), TASK_CACHELINE_OUT("4","缓存线-专机缺料任务"),
TASK_PLOTTER_MAC("5","刻字机-满料入库"), TASK_PLOTTER_MAC("5","刻字机-满料入库"),//判断是否铁料框(否的话: 不处理人工处理跟acs反馈sucess)
TASK_PLOTTER_EMPTY("6","刻字机-呼叫空框"), TASK_PLOTTER_EMPTY("6","刻字机-呼叫空框"),//判断是否铁料框(否的话: 不处理人工处理跟acs反馈sucess):一体机加一个呼叫空框请求功能
TASK_PLOTTER_CALL_MATERIAL("14","刻字机-叫料请求"),
TASK_WARP_MAC("7","包装机-叫料出库"), TASK_WARP_MAC("7","包装机-叫料出库"),
TASK_WARP_EMPTY("8","包装机-送空框"), TASK_WARP_EMPTY("8","包装机-送空框"),
TASK_STRUCT_IN("9","入库-半成品-生产入库"), TASK_STRUCT_IN("9","入库-半成品-生产入库"),
@@ -41,7 +40,11 @@ public enum AcsTaskEnum {
TASK_STRUCT_BCP_EMPOUT("17","半成品-空托盘出库"), TASK_STRUCT_BCP_EMPOUT("17","半成品-空托盘出库"),
TASK_STRUCT_CP_IN("11","入库-成品-生产入库"), TASK_STRUCT_CP_IN("11","入库-成品-生产入库"),
TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"), TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"),
TASK_STRUCT_CP_CHECK("13","成品-盘点"), TASK_STRUCT_CP_CHECK("13","-盘点"),
TASK_WASH_LACK("20","清洗机-缺料请求"),
TASK_WASH_EMP("21","清洗机-空叫空框"),
TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位
TASK_WASH_FULL_QZ("23","清洗机-满料请求强制"),//去异常位:
//回调状态 //回调状态
STATUS_START("1","执行中"), STATUS_START("1","执行中"),
@@ -52,11 +55,13 @@ public enum AcsTaskEnum {
REQUEST_CALLTYPE_EMP("1","专机缺料请求"), REQUEST_CALLTYPE_EMP("1","专机缺料请求"),
REQUEST_PLOTTER_SEND_FULL("3","刻字满料请求"), REQUEST_PLOTTER_SEND_FULL("3","刻字满料请求"),
REQUEST_PLOTTER_CALL_EMP("4","刻字空框请求"), REQUEST_PLOTTER_CALL_EMP("4","刻字空框请求"),
REQUEST_PLOTTER_CALL_MATERIAL("9","刻字叫料请求"),//由mes下发
REQUEST_WARP_CALL_FULL("5","包装缺料请求"), REQUEST_WARP_CALL_FULL("5","包装缺料请求"),
REQUEST_WARP_SEND_EMP("6","包装送空框请求"), REQUEST_WARP_SEND_EMP("6","包装送空框请求"),
REQUEST_WASH_EMP("7","清洗机器缺料请求"), REQUEST_WASH_LACK("7","清洗机器缺料请求"),//深坑->清洗:相同物料的重量<150公斤
REQUEST_WASH_FULL("8","清洗机器满料请求"), REQUEST_WASH_EMP("8","清洗机器空框请求"),//清洗机下料位
REQUEST_WASH_FULL("9","清洗机器满料请求"),//清洗机满料请求
REQUEST_WASH_FULL_ERROR("10","清洗机-满料异常请求"),//去半成品入库
// //

View File

@@ -19,11 +19,8 @@ import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import nl.basjes.parse.useragent.UserAgent;
import nl.basjes.parse.useragent.UserAgentAnalyzer;
import org.nl.modules.common.config.ElAdminProperties; import org.nl.modules.common.config.ElAdminProperties;
import org.nl.modules.common.utils.ElAdminConstant; import org.nl.modules.common.utils.ElAdminConstant;
import org.nl.modules.wql.util.SpringContextHolder;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress; import java.net.InetAddress;
@@ -47,12 +44,12 @@ public class StringUtils {
* 注入bean * 注入bean
*/ */
private static final UserAgentAnalyzer USER_AGENT_ANALYZER = UserAgentAnalyzer // private static final UserAgentAnalyzer USER_AGENT_ANALYZER = UserAgentAnalyzer
.newBuilder() // .newBuilder()
.hideMatcherLoadStats() // .hideMatcherLoadStats()
.withCache(10000) // .withCache(10000)
.withField(UserAgent.AGENT_NAME_VERSION) // .withField(UserAgent.AGENT_NAME_VERSION)
.build(); // .build();
/** /**
* 驼峰命名法工具 * 驼峰命名法工具
@@ -198,8 +195,9 @@ public class StringUtils {
public static String getBrowser(HttpServletRequest request) { public static String getBrowser(HttpServletRequest request) {
UserAgent.ImmutableUserAgent userAgent = USER_AGENT_ANALYZER.parse(request.getHeader("User-Agent")); // UserAgent.ImmutableUserAgent userAgent = USER_AGENT_ANALYZER.parse(request.getHeader("User-Agent"));
return userAgent.get(UserAgent.AGENT_NAME_VERSION).getValue(); // return userAgent.get(UserAgent.AGENT_NAME_VERSION).getValue();
return "default";
} }
/** /**

View File

@@ -11,7 +11,6 @@ import org.nl.wms.product_manage.sch.tasks.WashMachineryTask;
import org.nl.wms.product_manage.sch.tasks.callEmpty.PlotterCallEmptyTask; import org.nl.wms.product_manage.sch.tasks.callEmpty.PlotterCallEmptyTask;
import org.nl.wms.product_manage.sch.tasks.callMaterial.WrapCallMaterialTask; import org.nl.wms.product_manage.sch.tasks.callMaterial.WrapCallMaterialTask;
import org.nl.wms.product_manage.sch.tasks.sendEmpty.WrapSendEmptyTask; import org.nl.wms.product_manage.sch.tasks.sendEmpty.WrapSendEmptyTask;
import org.nl.wms.product_manage.sch.tasks.callMaterial.PlotterCallMaterialTask;
import org.nl.wms.product_manage.sch.tasks.sendMaterial.PlotterSendMaterialTask; import org.nl.wms.product_manage.sch.tasks.sendMaterial.PlotterSendMaterialTask;
import org.springframework.context.SmartLifecycle; import org.springframework.context.SmartLifecycle;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
@@ -25,10 +24,10 @@ public class ConventConfig implements SmartLifecycle {
public void start() { public void start() {
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_FULL, SpringContextHolder.getBean(SpeFullTask.class)); 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_CALLTYPE_EMP, SpringContextHolder.getBean(SpeEmpTask.class));
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_EMP, SpringContextHolder.getBean(WashMachineryTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_LACK, SpringContextHolder.getBean(WashMachineryTask.class));
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_SEND_FULL, SpringContextHolder.getBean(PlotterSendMaterialTask.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_PLOTTER_CALL_EMP, SpringContextHolder.getBean(PlotterCallEmptyTask.class));
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_CALL_MATERIAL, SpringContextHolder.getBean(PlotterCallMaterialTask.class)); // AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_CALL_MATERIAL, SpringContextHolder.getBean(EngraveCallMaterialTask.class));
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_CALL_FULL, SpringContextHolder.getBean(WrapCallMaterialTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_CALL_FULL, SpringContextHolder.getBean(WrapCallMaterialTask.class));
AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_SEND_EMP, SpringContextHolder.getBean(WrapSendEmptyTask.class)); AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_SEND_EMP, SpringContextHolder.getBean(WrapSendEmptyTask.class));
System.out.println("初始化Task_Collent完成777"+AcsToWmsServiceImpl.Task_Collent.size()); System.out.println("初始化Task_Collent完成777"+AcsToWmsServiceImpl.Task_Collent.size());

View File

@@ -16,18 +16,15 @@
package org.nl.modules.common.utils; package org.nl.modules.common.utils;
import cn.hutool.http.HttpUtil; import cn.hutool.http.HttpUtil;
import cn.hutool.http.useragent.UserAgent;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import nl.basjes.parse.useragent.UserAgent;
import nl.basjes.parse.useragent.UserAgentAnalyzer;
import org.nl.modules.common.config.ElAdminProperties; import org.nl.modules.common.config.ElAdminProperties;
import org.nl.modules.wql.util.SpringContextHolder;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.NetworkInterface; import java.net.NetworkInterface;
import java.net.UnknownHostException;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.Enumeration; import java.util.Enumeration;
@@ -47,12 +44,6 @@ public class StringUtils {
*/ */
private static final UserAgentAnalyzer USER_AGENT_ANALYZER = UserAgentAnalyzer
.newBuilder()
.hideMatcherLoadStats()
.withCache(10000)
.withField(UserAgent.AGENT_NAME_VERSION)
.build();
/** /**
* 驼峰命名法工具 * 驼峰命名法工具
@@ -188,8 +179,7 @@ public class StringUtils {
public static String getBrowser(HttpServletRequest request) { public static String getBrowser(HttpServletRequest request) {
UserAgent.ImmutableUserAgent userAgent = USER_AGENT_ANALYZER.parse(request.getHeader("User-Agent")); return "default";
return userAgent.get(UserAgent.AGENT_NAME_VERSION).getValue();
} }
/** /**

View File

@@ -102,7 +102,7 @@ public class LogServiceImpl implements LogService {
logDto.setMethod(methodName); logDto.setMethod(methodName);
logDto.setUsername(username); logDto.setUsername(username);
logDto.setParams(getParameter(method, joinPoint.getArgs())); logDto.setParams(getParameter(method, joinPoint.getArgs()));
logDto.setBrowser(browser); logDto.setBrowser("default");
logRepository.save(logDto); logRepository.save(logDto);
} }

View File

@@ -1,86 +0,0 @@
package org.nl.wms.masterdata_manage.备份pdm.rest;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.nl.common.anno.Log;
import lombok.extern.slf4j.Slf4j;
import org.nl.wms.masterdata_manage.备份pdm.service.WorkProcedureService;
import org.nl.wms.masterdata_manage.备份pdm.service.dto.WorkProcedureDto;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
/**
*
* @author ldjun
* @date 2021-12-19
**/
//@RestController
@RequiredArgsConstructor
//@Api(tags = "工序管理")
//@RequestMapping("/api/workProcedure")
@Slf4j
public class WorkProcedureController {
private final WorkProcedureService workProcedureService;
@GetMapping
@Log("查询工序")
@ApiOperation("查询工序")
//@PreAuthorize("@el.check('WorkProcedure:list')")
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) {
return new ResponseEntity<>(workProcedureService.queryAll(whereJson, page), HttpStatus.OK);
}
@PostMapping
@Log("新增工序")
@ApiOperation("新增工序")
//@PreAuthorize("@el.check('WorkProcedure:add')")
public ResponseEntity<Object> create(@Validated @RequestBody WorkProcedureDto dto) {
workProcedureService.create(dto);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PutMapping
@Log("修改工序")
@ApiOperation("修改工序")
//@PreAuthorize("@el.check('WorkProcedure:edit')")
public ResponseEntity<Object> update(@Validated @RequestBody WorkProcedureDto dto) {
workProcedureService.update(dto);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@Log("删除工序")
@ApiOperation("删除工序")
//@PreAuthorize("@el.check('WorkProcedure:del')")
@DeleteMapping
public ResponseEntity<Object> delete(@RequestBody Long[] ids) {
workProcedureService.deleteAll(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@GetMapping("/downSelect")
@Log("查询工序下拉列表")
@ApiOperation("查询工序下拉列表")
public ResponseEntity<Object> downSelect() {
return new ResponseEntity<>(workProcedureService.downSelect(), HttpStatus.OK);
}
@GetMapping("/queryWorkprocedure")
@Log("查询生产工序")
@ApiOperation("查询生产工序")
//@PreAuthorize("@el.check('workprocedure:list')")
public ResponseEntity<Object> queryWorkprocedure() {
return new ResponseEntity<>(workProcedureService.queryWorkprocedure(), HttpStatus.OK);
}
}

View File

@@ -1,87 +0,0 @@
package org.nl.wms.masterdata_manage.备份pdm.service;
import com.alibaba.fastjson.JSONArray;
import org.nl.wms.masterdata_manage.备份pdm.service.dto.WorkProcedureDto;
import org.springframework.data.domain.Pageable;
import java.util.List;
import java.util.Map;
/**
* @author ldjun
* @description 服务接口
* @date 2021-12-19
**/
public interface WorkProcedureService {
/**
* 查询数据分页
*
* @param whereJson 条件
* @param page 分页参数
* @return Map<String, Object>
*/
Map<String, Object> queryAll(Map whereJson, Pageable page);
/**
* 查询所有数据不分页
*
* @param whereJson 条件参数
* @return List<WorkProcedureDto>
*/
List<WorkProcedureDto> queryAll(Map whereJson);
/**
* 根据ID查询
*
* @param workProcedure_id ID
* @return WorkProcedure
*/
WorkProcedureDto findById(String workProcedure_id);
/**
* 根据编码查询
*
* @param code code
* @return WorkProcedure
*/
WorkProcedureDto findByCode(String code);
/**
* 创建
*
* @param dto /
*/
void create(WorkProcedureDto dto);
/**
* 多选删除
*
* @param ids /
*/
void deleteAll(Long[] ids);
/**
* 编辑
*
* @param dto /
*/
void update(WorkProcedureDto dto);
/**
* 获取下拉选列表
*
* @return
*/
JSONArray downSelect();
/**
* 查询所有数据不分页
* @param
* @return List<PdmBaseWorkprocedureDto>
*/
List<WorkProcedureDto> queryWorkprocedure();
}

View File

@@ -1,64 +0,0 @@
package org.nl.wms.masterdata_manage.备份pdm.service.dto;
import lombok.Data;
import java.io.Serializable;
/**
* @author ldjun
* @description /
* @date 2021-12-19
**/
@Data
public class WorkProcedureDto implements Serializable {
/** 工序标识 */
private String workprocedure_id;
/** 生产区域 */
private String product_area;
/** 工序编码 */
private String workprocedure_code;
/** 工序名称 */
private String workprocedure_name;
/** 对应工段 */
private String worksection_type_scode;
/** 分段计算类型 */
private String burst_type_scode;
/** 是否关键工序 */
private String is_keyworkprocedure;
/** 是否首道工序 */
private String is_first;
/** 是否启用 */
private String is_used;
/** 备注 */
private String remark;
/** 创建人 */
private String create_id;
/** 创建人姓名 */
private String create_name;
/** 创建时间 */
private String create_time;
/** 修改人 */
private String update_id;
/** 修改人姓名 */
private String update_name;
/** 修改时间 */
private String update_time;
}

View File

@@ -1,159 +0,0 @@
package org.nl.wms.masterdata_manage.备份pdm.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.wql.core.bean.ResultBean;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.system_manage.service.user.dto.CurrentUser;
import org.nl.wms.masterdata_manage.备份pdm.service.WorkProcedureService;
import org.nl.wms.masterdata_manage.备份pdm.service.dto.WorkProcedureDto;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
/**
* @author ldjun
* @description 服务实现
* @date 2021-12-19
**/
@Service
@RequiredArgsConstructor
@Slf4j
public class WorkProcedureServiceImpl implements WorkProcedureService {
@Override
public Map<String, Object> queryAll(Map whereJson, Pageable page) {
String where = "";
WQLObject wo = WQLObject.getWQLObject("pdm_bi_workprocedure");
String search = (String) whereJson.get("search");
String product_area = (String) whereJson.get("product_area");
if (!StrUtil.isEmpty(search)) {
where += " AND (workprocedure_code like '%" + search + "%' OR workprocedure_name like '%" + search + "%' )";
}
if(!StrUtil.isEmpty(product_area)) {
where += " AND product_area = '" + product_area + "'";
}
ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), "is_used = '1' " + where, "workprocedure_code");
final JSONObject json = rb.pageResult();
return json;
}
@Override
public List<WorkProcedureDto> queryAll(Map whereJson) {
WQLObject wo = WQLObject.getWQLObject("pdm_bi_workProcedure");
JSONArray arr = wo.query().getResultJSONArray(0);
List<WorkProcedureDto> list = arr.toJavaList(WorkProcedureDto.class);
return list;
}
@Override
public WorkProcedureDto findById(String workProcedure_id) {
WQLObject wo = WQLObject.getWQLObject("pdm_bi_workProcedure");
JSONObject json = wo.query("workProcedure_id =" + workProcedure_id + "").uniqueResult(0);
if (ObjectUtil.isEmpty(json)) return null;
final WorkProcedureDto obj = json.toJavaObject(WorkProcedureDto.class);
return obj;
}
@Override
public WorkProcedureDto findByCode(String code) {
WQLObject wo = WQLObject.getWQLObject("pdm_bi_workProcedure");
JSONObject json = wo.query("workprocedure_code ='" + code + "'").uniqueResult(0);
if (ObjectUtil.isEmpty(json)) return null;
final WorkProcedureDto obj = json.toJavaObject(WorkProcedureDto.class);
return obj;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void create(WorkProcedureDto dto) {
//判断编码是否存在
String workprocedure_code = dto.getWorkprocedure_code();
WorkProcedureDto byCode = this.findByCode(workprocedure_code);
if (ObjectUtil.isNotEmpty(byCode)) throw new BadRequestException("编码已存在!");
CurrentUser currentUser = SecurityUtils.getCurrentUser();
String currentUserId = currentUser.getId();
String nickName = SecurityUtils.getCurrentNickName();
dto.setWorkprocedure_id(IdUtil.getSnowflake(1, 1).nextIdStr());
dto.setCreate_id(currentUserId);
dto.setCreate_name(nickName);
dto.setUpdate_id(currentUserId);
dto.setUpdate_name(nickName);
dto.setUpdate_time(DateUtil.now());
dto.setCreate_time(DateUtil.now());
WQLObject wo = WQLObject.getWQLObject("pdm_bi_workProcedure");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.insert(json);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void update(WorkProcedureDto dto) {
WorkProcedureDto entity = this.findById(dto.getWorkprocedure_id());
if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!");
String workprocedure_code = entity.getWorkprocedure_code();
WorkProcedureDto byCode = this.findByCode(workprocedure_code);
if (ObjectUtil.isNotEmpty(byCode) && !dto.getWorkprocedure_id().equals(byCode.getWorkprocedure_id()))
throw new BadRequestException("存在相同的编码!");
String currentUserId = SecurityUtils.getCurrentUserId();
String nickName = SecurityUtils.getCurrentNickName();
dto.setUpdate_time(DateUtil.now());
dto.setUpdate_id(currentUserId);
dto.setUpdate_name(nickName);
WQLObject wo = WQLObject.getWQLObject("pdm_bi_workProcedure");
JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto));
wo.update(json);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void deleteAll(Long[] ids) {
WQLObject wo = WQLObject.getWQLObject("pdm_bi_workProcedure");
for (Long workProcedure_id : ids) {
wo.delete("workProcedure_id = '" + workProcedure_id + "'");
}
}
@Override
public JSONArray downSelect() {
//工序表【PDM_BI_WorkProcedure】
WQLObject workProcedureTab = WQLObject.getWQLObject("PDM_BI_WorkProcedure");
JSONArray resultJSONArray = workProcedureTab.query("is_used ='1'", "workprocedure_code").getResultJSONArray(0);
return resultJSONArray;
}
@Override
public List<WorkProcedureDto> queryWorkprocedure() {
WQLObject wo = WQLObject.getWQLObject("pdm_bi_workprocedure");
//只查清洗 跟仓储
JSONArray arr = wo.query(" is_used = '1' and workprocedure_code in ('12','08')").getResultJSONArray(0);
if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(WorkProcedureDto.class);
return null;
}
}

View File

@@ -11,15 +11,9 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.common.TableDataInfo; import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log; import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.modules.wql.core.bean.ResultBean;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.modules.wql.util.WqlUtil;
import org.nl.wms.masterdata_manage.备份pdm.service.WorkProcedureService;
import org.nl.wms.masterdata_manage.备份pdm.service.dto.WorkProcedureDto;
import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; 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.service.workprocedure.dao.PdmBiWorkprocedure;
import org.nl.wms.product_manage.service.workprocedure.dto.WorkprocedureQuery; import org.nl.wms.product_manage.service.workprocedure.dto.WorkprocedureQuery;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;

View File

@@ -90,7 +90,7 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject param) { public String createTask(JSONObject param) {
String start_point_code = param.getString("device_code"); String end_point_code = param.getString("device_code");
PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>() PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
.eq("workorder_code", param.getString("workorder_code")) .eq("workorder_code", param.getString("workorder_code"))
.eq("is_delete", false) .eq("is_delete", false)
@@ -111,13 +111,13 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + "";
JSONObject task = new JSONObject(); JSONObject task = new JSONObject();
task.put("task_id", taskdtl_id); task.put("task_id", taskdtl_id);
task.put("task_name", AcsTaskEnum.TASK_PLOTTER_MAC.getDesc()); task.put("task_name", AcsTaskEnum.TASK_PLOTTER_EMPTY.getDesc());
task.put("task_type", AcsTaskEnum.TASK_PLOTTER_MAC.getCode()); task.put("task_type", AcsTaskEnum.TASK_PLOTTER_EMPTY.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("material_id", order.getMaterial_id()); task.put("material_id", order.getMaterial_id());
task.put("task_status", StatusEnum.TASK_CREATE.getCode()); task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code1", start_point_code); task.put("point_code2", end_point_code);
task.put("handle_class", this.getClass().getName()); task.put("handle_class", this.getClass().getName());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode()); task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId(); String currentUserId = SecurityUtils.getCurrentUserId();
@@ -181,7 +181,7 @@ public class PlotterCallEmptyTask extends AbstractAcsTask {
.eq("point_code",map.get("point_code"))); .eq("point_code",map.get("point_code")));
// 设置点位 // 设置点位
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
taskObj.put("point_code2",map.get("point_code")); taskObj.put("point_code1",map.get("point_code"));
SchBaseTask schBaseTask = taskObj.toJavaObject(SchBaseTask.class); SchBaseTask schBaseTask = taskObj.toJavaObject(SchBaseTask.class);
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setUpdate_time(new Date()); schBaseTask.setUpdate_time(new Date());

View File

@@ -1,32 +0,0 @@
package org.nl.wms.product_manage.sch.tasks.callMaterial;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
import org.springframework.stereotype.Service;
/*
* @author ZZQ
* @Date 2023/6/16 08:40
*/
@Service
public class EngraveCallMaterialTask extends AbstractAcsTask {
@Override
public void updateTaskStatus(JSONObject taskObj, String status) {
}
@Override
public String createTask(JSONObject param) {
return null;
}
@Override
public void cancel(String task_id) {
}
@Override
public void pointConfirm(JSONObject param) {
}
}

View File

@@ -1,14 +1,20 @@
package org.nl.wms.product_manage.sch.tasks.callMaterial; package org.nl.wms.product_manage.sch.tasks.callMaterial;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum; 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.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil; import org.nl.modules.system.util.CodeUtil;
@@ -16,9 +22,21 @@ import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* @Author: lyd * @Author: lyd
@@ -28,7 +46,12 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j @Slf4j
@Service @Service
public class WrapCallMaterialTask extends AbstractAcsTask { public class WrapCallMaterialTask extends AbstractAcsTask {
private static final String OPT_NAME = "包装机#"; @Autowired
private IPdmProduceWorkorderService workorderService;
@Autowired
private ISchBaseTaskService taskService;
@Autowired
private ISchBasePointService pointService;
@Autowired @Autowired
private WmsToAcsService wms; private WmsToAcsService wms;
@Override @Override
@@ -94,64 +117,54 @@ public class WrapCallMaterialTask extends AbstractAcsTask {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject param) { public String createTask(JSONObject param) {
WQLObject workOrderTab = WQLObject.getWQLObject("PDM_produce_workOrder"); PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); .eq("workorder_code", param.getString("workorder_code"))
String end_point_code = param.getString("device_code"); .eq("is_delete", false)
String workorder = param.getString("workorder_code"); .lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode()));
if(StrUtil.isEmpty(end_point_code)) { Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
throw new BadRequestException("终点不能为空!"); //?刻字满料请求:可以存在多个任务?
} List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
if(StrUtil.isEmpty(workorder)) { .eq("point_code2", param.getString("device_code")).lt("task_status", StatusEnum.TASK_FINISH.getCode())
throw new BadRequestException("工单不能为空!"); );
} if (!CollectionUtils.isEmpty(list)){
// 判断当前点是否有未完成任务 throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
JSONObject taskObj = taskTab.query("is_delete='0' and point_code2 = '" + end_point_code + "' and task_status <> '" + TaskStatusEnum.FINISHED.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(taskObj)) {
throw new BadRequestException("当前点位" + end_point_code + "存在未完成的任务");
}
// 判断工单
JSONObject workOrderObj = workOrderTab.query("workorder_code = '" + workorder + "' and workorder_status <> '" + StatusEnum.TASK_FINISH.getCode() + "' and is_delete ='0'").uniqueResult(0);
if (ObjectUtil.isEmpty(workOrderObj)){
throw new BadRequestException("下发工单不存在未完成工单:"+workorder);
} }
// 查找任务状态 // 查找任务状态
String taskdtl_id = IdUtil.getSnowflake(1, 1).nextIdStr();
JSONObject task = new JSONObject(); JSONObject task = new JSONObject();
task.put("task_id", taskdtl_id); task.put("task_id", IdUtil.getStringId());
task.put("task_name", AcsTaskEnum.TASK_WARP_MAC.getDesc()); task.put("task_name", AcsTaskEnum.TASK_WARP_MAC.getDesc());
task.put("task_type", AcsTaskEnum.TASK_WARP_MAC.getCode()); task.put("task_type", AcsTaskEnum.TASK_WARP_MAC.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("task_status", StatusEnum.TASK_CREATE.getCode()); task.put("task_status", StatusEnum.TASK_CREATE.getCode());
task.put("point_code2", end_point_code); task.put("point_code2", param.getString("device_code"));
task.put("handle_class", this.getClass().getName()); task.put("handle_class", this.getClass().getName());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode()); task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId(); String currentUserId = SecurityUtils.getCurrentUserId();
task.put("create_id", currentUserId); task.put("create_id", currentUserId);
task.put("create_name", SecurityUtils.getCurrentNickName()); task.put("create_name", SecurityUtils.getCurrentNickName());
task.put("update_id", currentUserId);
task.put("update_name", SecurityUtils.getCurrentNickName());
task.put("create_time", DateUtil.now()); task.put("create_time", DateUtil.now());
task.put("update_time", DateUtil.now());
task.put("priority", "1"); task.put("priority", "1");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
WQLObject.getWQLObject("SCH_BASE_Task").insert(task); task.put("table_fk_id",order.getWorkorder_code());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
taskService.save(schBaseTask);
// 找终点 // 找终点
try { try {
pointConfirm(task); pointConfirm(task);
JSONArray data = new JSONArray(); JSONArray data = new JSONArray();
JSONObject result = taskTab.query("task_id = '" + taskdtl_id + "'").uniqueResult(0); data.add(task);
data.add(result);
// 下发 // 下发
wms.issueTaskToAcs2(data); wms.issueTaskToAcs2(data);
} catch (Exception ex) { } catch (Exception ex) {
// 未找到 log.error("刻字请求异常,error:{}",ex);
task.put("remark", ex.getMessage()); schBaseTask.setRemark(ex.getMessage());
task.put("task_status", StatusEnum.TASK_START_ERROR.getCode()); schBaseTask.setUpdate_time(new Date());
task.put("update_time", DateUtil.now()); schBaseTask.setUpdate_name("acs");
taskTab.update(task); schBaseTask.setTask_status(StatusEnum.TASK_START_ERROR.getCode());
taskService.save(schBaseTask);
} }
return taskdtl_id; return task.getString("task_id");
} }
@Override @Override
@@ -161,26 +174,29 @@ public class WrapCallMaterialTask extends AbstractAcsTask {
@Override @Override
public void pointConfirm(JSONObject taskObj) { public void pointConfirm(JSONObject taskObj) {
log.info(OPT_NAME+"callMaterial param:{}",JSONObject.toJSONString(taskObj)); // 去刻字缓存区寻找空位
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); List<Map<String, String>> points = pointService.queryVehicle(
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); MapOf.of("is_used", "1",
// 去刻字缓存区找物料 "lock_type", StatusEnum.LOCK_OFF.getCode(),
JSONObject point = pointTab.query("region_code = 'A1_KZHC' AND point_status = '" + "region_code", "A1_KZHC",
StatusEnum.POINT_STATUS_FULL.getCode() + "' AND lock_type = '" + StatusEnum.LOCK_OFF.getCode() + "material_id", taskObj.getString("material_id")));
"' AND is_used = '" + StatusEnum.STATUS_TRUE.getCode() + "' AND is_delete = '" + if (ObjectUtil.isNotEmpty(points)) {
StatusEnum.STATUS_FLASE.getCode() + "'").uniqueResult(0); Map<String, String> map = points.get(0);
if (ObjectUtil.isNotEmpty(point)) { if (CollectionUtils.isEmpty(map)|| StringUtils.isEmpty(map.get("point_code"))){
// 找到位置 throw new BadRequestException("刻字缓存区没有可用货位.");
// 点位上锁 }
point.put("lock_type", StatusEnum.LOCK_ON.getCode()); pointService.update(new UpdateWrapper<SchBasePoint>()
pointTab.update(point); .set("lock_type",StatusEnum.LOCK_ON.getCode())
// 任务修改 .eq("point_code",map.get("point_code")));
taskObj.put("point_code1", point.getString("point_code")); // 设置点位
taskObj.put("task_status", StatusEnum.TASK_START_END_P.getCode());
taskObj.put("update_time", DateUtil.now()); taskObj.put("update_time", DateUtil.now());
taskTab.update(taskObj); taskObj.put("point_code1",map.get("point_code"));
SchBaseTask schBaseTask = taskObj.toJavaObject(SchBaseTask.class);
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setUpdate_time(new Date());
taskService.updateById(schBaseTask);
} else { } else {
throw new BadRequestException("刻字缓存区没有可用空框."); throw new BadRequestException("刻字缓存区没有可用货位.");
} }
} }
} }

View File

@@ -6,6 +6,7 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
@@ -15,10 +16,18 @@ import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
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.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/** /**
* @Author: lyd * @Author: lyd
* @Description: 包装机送空框 * @Description: 包装机送空框
@@ -27,7 +36,12 @@ import org.springframework.transaction.annotation.Transactional;
@Slf4j @Slf4j
@Service @Service
public class WrapSendEmptyTask extends AbstractAcsTask { public class WrapSendEmptyTask extends AbstractAcsTask {
private static final String OPT_NAME = "包装机#"; @Autowired
private IPdmProduceWorkorderService workorderService;
@Autowired
private ISchBaseTaskService taskService;
@Autowired
private ISchBasePointService pointService;
@Autowired @Autowired
private WmsToAcsService wms; private WmsToAcsService wms;
@Override @Override
@@ -148,27 +162,28 @@ public class WrapSendEmptyTask extends AbstractAcsTask {
} }
@Override @Override
public void pointConfirm(JSONObject taskObj) { public void pointConfirm(JSONObject task) {
log.info(OPT_NAME+"sendEmptyVehicle param:{}",JSONObject.toJSONString(taskObj)); // 去刻字缓存区寻找空位
WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>().isNull("vehicle_code")
WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); .eq("is_used", "1")
// 去刻字缓存区找空位 .eq("region_code","A1_KZHC")
JSONObject point = pointTab.query("region_code = 'A1_KZHC' AND point_status = '" + .eq("lock_type", StatusEnum.LOCK_OFF.getCode()));
StatusEnum.POINT_STATUS_EMPTY.getCode() + "' AND lock_type = '" + StatusEnum.LOCK_OFF.getCode() +
"' AND is_used = '" + StatusEnum.STATUS_TRUE.getCode() + "' AND is_delete = '" + if (ObjectUtil.isNotEmpty(list)) {
StatusEnum.STATUS_FLASE.getCode() + "'").uniqueResult(0);
if (ObjectUtil.isNotEmpty(point)) {
// 找到位置 // 找到位置
// 点位上锁 // 点位上锁
point.put("lock_type", StatusEnum.LOCK_ON.getCode()); SchBasePoint point = list.get(0);
pointTab.update(point); point.setLock_type(StatusEnum.LOCK_ON.getCode());
pointService.updateById(point);
// 设置点位 // 设置点位
taskObj.put("point_code2", point.getString("point_code")); task.put("update_time", DateUtil.now());
taskObj.put("task_status", StatusEnum.TASK_START_END_P.getCode()); task.put("point_code2",point.getPoint_code());
taskObj.put("update_time", DateUtil.now()); SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
taskTab.update(taskObj); schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setUpdate_time(new Date());
taskService.updateById(schBaseTask);
} else { } else {
throw new BadRequestException("刻字缓存区没有可用货位."); throw new BadRequestException("刻字缓存区没有可用货位.");
} }
} }
} }

View File

@@ -1,51 +1,59 @@
package org.nl.wms.product_manage.sch.tasks.callMaterial; package org.nl.wms.product_manage.sch.tasks.sendMaterial;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum; import org.nl.common.enums.StatusEnum;
import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.enums.WorkerOrderEnum;
import org.nl.common.utils.MapOf; import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil; import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.manage.AbstractAcsTask;
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
import org.nl.wms.storage_manage.IOSEnum;
import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService;
import org.nl.wms.storage_manage.productmanage.util.RuleUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /*
* @Author: lyd * @author ZZQ
* @Description: 刻字机送料 * @Date 2023/6/16 08:40
* @Date: 2023/4/3
*/ */
@Slf4j
@Service @Service
public class PlotterCallMaterialTask extends AbstractAcsTask { @Slf4j
public class WashSendMaterialTask extends AbstractAcsTask {
@Autowired
private DivRuleCpService divRuleCpService;
@Autowired
private IStIvtSectattrService sectattrService;
@Autowired @Autowired
private IPdmProduceWorkorderService workorderService; private IPdmProduceWorkorderService workorderService;
@Autowired @Autowired
@@ -55,14 +63,15 @@ public class PlotterCallMaterialTask extends AbstractAcsTask {
@Autowired @Autowired
private WmsToAcsService wms; private WmsToAcsService wms;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateTaskStatus(JSONObject param, String status) { public void updateTaskStatus(JSONObject param, String status) {
SchBaseTask task = taskService.getById(param.getString("task_id")); SchBaseTask task = taskService.getById(param.getString("task_id"));
if (status.equals(AcsTaskEnum.STATUS_START.getCode())) { if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
taskService.update(new UpdateWrapper<SchBaseTask>() taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_RUNNING.getCode()) .set("task_status", StatusEnum.TASK_RUNNING.getCode())
.set("update_name","acs") .set("update_name","acs")
.set("update_time",DateUtil.now()).eq("task_id",task.getTask_id())); .set("update_time", DateUtil.now()).eq("task_id",task.getTask_id()));
} }
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
// 完成 // 完成
@@ -75,6 +84,7 @@ public class PlotterCallMaterialTask extends AbstractAcsTask {
.in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3())); .in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3()));
} }
if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) { if (status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
// 完成
taskService.update(new UpdateWrapper<SchBaseTask>() taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_CANNEL.getCode()) .set("task_status",StatusEnum.TASK_CANNEL.getCode())
.set("update_name","acs") .set("update_name","acs")
@@ -96,32 +106,34 @@ public class PlotterCallMaterialTask extends AbstractAcsTask {
Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code")));
//?刻字满料请求可以存在多个任务 //?刻字满料请求可以存在多个任务
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>() List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
.eq("point_code1", param.getString("device_code")).lt("task_status", StatusEnum.TASK_FINISH.getCode()) .lt("task_status", StatusEnum.TASK_FINISH.getCode())
.and(wa->wa
.eq("point_code1", param.getString("device_code"))
.or()
.eq("point_code2", param.getString("device_code")))
); );
if (!CollectionUtils.isEmpty(list)){ if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code"))); throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
} }
// 查找任务状态 // 查找任务状态
String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; String taskdtl_id = IdUtil.getStringId();
JSONObject task = new JSONObject(); JSONObject task = new JSONObject();
task.put("task_id", taskdtl_id); task.put("task_id", taskdtl_id);
task.put("task_name", AcsTaskEnum.TASK_PLOTTER_MAC.getDesc()); task.put("task_name", AcsTaskEnum.REQUEST_WASH_FULL.getDesc());
task.put("task_type", AcsTaskEnum.TASK_PLOTTER_MAC.getCode()); task.put("task_type", AcsTaskEnum.REQUEST_WASH_FULL.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode()); task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("material_id", order.getMaterial_id()); task.put("material_id", order.getMaterial_id());
task.put("task_status", StatusEnum.TASK_CREATE.getCode()); task.put("task_status", TaskStatusEnum.CREATED.getCode());
task.put("point_code1", start_point_code); task.put("point_code1", start_point_code);
task.put("handle_class", this.getClass().getName()); task.put("handle_class", this.getClass().getName());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode()); task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId(); String currentUserId = SecurityUtils.getCurrentUserId();
task.put("create_id", currentUserId); task.put("create_id", currentUserId);
task.put("create_name", SecurityUtils.getCurrentNickName()); task.put("create_name", SecurityUtils.getCurrentNickName());
task.put("update_id", currentUserId);
task.put("update_name", SecurityUtils.getCurrentNickName());
task.put("create_time", DateUtil.now()); task.put("create_time", DateUtil.now());
task.put("update_time", DateUtil.now());
task.put("priority", "1"); task.put("priority", "1");
task.put("finished_type", "1");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode()); task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
task.put("table_fk_id",order.getWorkorder_code()); task.put("table_fk_id",order.getWorkorder_code());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
@@ -134,7 +146,8 @@ public class PlotterCallMaterialTask extends AbstractAcsTask {
// 下发 // 下发
wms.issueTaskToAcs2(data); wms.issueTaskToAcs2(data);
} catch (Exception ex) { } catch (Exception ex) {
log.error("刻字请求异常,error:{}",ex); // 未找到
log.error("刻字满料请求异常,error:{}",ex);
schBaseTask.setRemark(ex.getMessage()); schBaseTask.setRemark(ex.getMessage());
schBaseTask.setUpdate_time(new Date()); schBaseTask.setUpdate_time(new Date());
schBaseTask.setUpdate_name("acs"); schBaseTask.setUpdate_name("acs");
@@ -155,34 +168,32 @@ public class PlotterCallMaterialTask extends AbstractAcsTask {
/** /**
* 满料请求 * 满料请求
* 从刻字机满料缓存区中获取空位放入就行 * 从刻字机满料缓存区中获取空位放入就行
* @param taskObj: 任务对象
*/ */
@Override @Override
public void pointConfirm(JSONObject taskObj) { @Transactional(timeout=TransactionDefinition.ISOLATION_READ_UNCOMMITTED)
public void pointConfirm(JSONObject task) {
// 去刻字缓存区寻找空位 // 去刻字缓存区寻找空位
List<Map<String, String>> points = pointService.queryVehicle( //分配货位下发任务更新主单据状态更新明细任务
MapOf.of("is_used", "1", StIvtSectattr sect = sectattrService.getOne(new QueryWrapper<StIvtSectattr>().eq("sect_name", "半成品库区"));
"lock_type", StatusEnum.LOCK_OFF.getCode(), JSONObject jo = new JSONObject();
"region_code", "A1_KZHC", jo.put("sect_id", sect.getSect_id());
"material_id", taskObj.getString("material_id"))); jo.put("stor_id", sect.getStor_id());
if (ObjectUtil.isNotEmpty(points)) { jo.put("rule_type", RuleUtil.PRODUCTION_IN_1);
Map<String, String> map = points.get(0); StIvtStructattr stIvtStructattr = divRuleCpService.divRuleIn(jo);
if (CollectionUtils.isEmpty(map)|| StringUtils.isEmpty(map.get("point_code"))){ //少出入库记录
throw new BadRequestException("刻字缓存区没有可用货位."); if (ObjectUtil.isEmpty(stIvtStructattr)) {
} throw new BadRequestException("无可分配货位");
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("lock_type",StatusEnum.LOCK_ON.getCode())
.eq("point_code",map.get("point_code")));
// 设置点位
taskObj.put("update_time", DateUtil.now());
taskObj.put("point_code2",map.get("point_code"));
SchBaseTask schBaseTask = taskObj.toJavaObject(SchBaseTask.class);
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setUpdate_time(new Date());
taskService.updateById(schBaseTask);
} else {
throw new BadRequestException("刻字缓存区没有可用货位.");
} }
stIvtStructattr.setLock_type(IOSEnum.LOCK_TYPE.code("入库锁"));
stIvtStructattr.setInv_code(task.getString("task_code"));
// 设置点位
task.put("update_time", DateUtil.now());
task.put("point_code2",stIvtStructattr.getStruct_code());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setUpdate_time(new Date());
schBaseTask.setTask_type(AcsTaskEnum.TASK_STRUCT_IN.getCode());
taskService.updateById(schBaseTask);
} }
@Override @Override
@@ -190,7 +201,7 @@ public class PlotterCallMaterialTask extends AbstractAcsTask {
ArrayList<SchBaseTask> Merge = new ArrayList<>(); ArrayList<SchBaseTask> Merge = new ArrayList<>();
if (!CollectionUtils.isEmpty(tasks)){ if (!CollectionUtils.isEmpty(tasks)){
for (SchBaseTask task : tasks) { for (SchBaseTask task : tasks) {
task.setTask_group_id(org.nl.common.utils.IdUtil.getStringId()); task.setTask_group_id(IdUtil.getStringId());
Merge.add(task); Merge.add(task);
} }
} }

View File

@@ -224,6 +224,6 @@ public class PdmProduceWorkorder implements Serializable {
/** /**
* 是否删除 * 是否删除
*/ */
private Boolean is_used_fxx = false; private String package_ext;
} }

View File

@@ -91,12 +91,12 @@ public class PdmProduceWorkorderrecord implements Serializable {
private BigDecimal person_finish_qty; private BigDecimal person_finish_qty;
/** /**
* 开时间 * 开时间
*/ */
private String operatetime_start; private String operatetime_start;
/** /**
* 完工时间 * 结束时间
*/ */
private String operatetime_end; private String operatetime_end;

View File

@@ -128,7 +128,10 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
@Override @Override
public void create(JSONObject form) { public void create(JSONObject form) {
JSONObject ext = form.getJSONObject("package_ext");
form.put("package_ext",null);
PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class); PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class);
entity.setPackage_ext(ext.toJSONString());
entity.setWorkorder_id(IdUtil.getStringId()); entity.setWorkorder_id(IdUtil.getStringId());
entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER")); entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
entity.setCurrent_produce_person_id(SecurityUtils.getCurrentUserId()); entity.setCurrent_produce_person_id(SecurityUtils.getCurrentUserId());
@@ -636,7 +639,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
form.put("material_spec", material.getMaterial_spec()); form.put("material_spec", material.getMaterial_spec());
form.put("device_code", workOrder.getDevice_code()); form.put("device_code", workOrder.getDevice_code());
form.put("is_needmove", workOrder.getIs_needmove() ? 1 : 0); form.put("is_needmove", workOrder.getIs_needmove() ? 1 : 0);
form.put("is_used_fxx", workOrder.getIs_used_fxx() ? 1 : 0); form.put("package_ext", workOrder.getPackage_ext());
if (param.containsKey("extra_map")) { if (param.containsKey("extra_map")) {
form.put("extra_map", param.getJSONObject("extra_map")); form.put("extra_map", param.getJSONObject("extra_map"));
} }
@@ -649,28 +652,32 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
Assert.notNull(new Object[]{param, param.get("report_qty"), param.getString("workorder_id")}, "请求参数不能为空"); Assert.notNull(new Object[]{param, param.get("report_qty"), param.getString("workorder_id")}, "请求参数不能为空");
PdmProduceWorkorder workorder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id"))); PdmProduceWorkorder workorder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
// if (workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())) { Assert.notNull(workorder, "当前工单不存在");
// if (workorder.getWorkorder_status().equals(WorkerOrderEnum.AUTO_COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())) {
// throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工"); // throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工");
// } // }
Assert.notNull(workorder, "当前工单不存在");
PdmProduceWorkorderrecord one = reportRecordService.getOne(new QueryWrapper<PdmProduceWorkorderrecord>() PdmProduceWorkorderrecord one = reportRecordService.getOne(new QueryWrapper<PdmProduceWorkorderrecord>()
.eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportEnum.REPORT_STATUS.code("生成"))); .eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportEnum.REPORT_STATUS.code("生成")));
Assert.notNull(one, param.getString("workorder_id") + "当前工单没有生成状态的报工记录"); Assert.notNull(one, param.getString("workorder_id") + "当前工单没有生成状态的报工记录");
workorder.setReport_qty(workorder.getReport_qty().add(param.getBigDecimal("report_qty"))); workorder.setReport_qty(workorder.getReport_qty().add(param.getBigDecimal("report_qty")));
if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()) { if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()) {
workorder.setWorkorder_status(WorkerOrderEnum.COMPLETE.getCode()); workorder.setWorkorder_status(WorkerOrderEnum.COMPLETE.getCode());
JSONArray array = new JSONArray(); }else {
JSONObject map = new JSONObject(); workorder.setWorkorder_status(WorkerOrderEnum.STOP.getCode());
map.put("workorder_id", workorder.getWorkorder_id());
map.put("type", WorkerOrderEnum.COMPLETE.getCode());
array.add(map);
wmsToAcsService.orderStatusUpdate(array);
} }
JSONArray array = new JSONArray();
JSONObject map = new JSONObject();
map.put("workorder_id", workorder.getWorkorder_id());
map.put("type", WorkerOrderEnum.COMPLETE.getCode());
array.add(map);
wmsToAcsService.orderStatusUpdate(array);
workorder.setReal_qty(null); workorder.setReal_qty(null);
this.updateById(workorder); this.updateById(workorder);
reportRecordService.update(new UpdateWrapper<PdmProduceWorkorderrecord>() reportRecordService.update(new UpdateWrapper<PdmProduceWorkorderrecord>()
.set("report_qty", param.getBigDecimal("report_qty")) .set("report_qty", param.getBigDecimal("report_qty"))
.set("report_status", ReportEnum.REPORT_STATUS.code("报工")) .set("report_status", ReportEnum.REPORT_STATUS.code("报工"))
.set("operatetime_end",DateUtil.now())
.set("needproduct_qty", Math.max(0, workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue())) .set("needproduct_qty", Math.max(0, workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue()))
.eq("macoperate_id", one.getMacoperate_id())); .eq("macoperate_id", one.getMacoperate_id()));
return one.getMacoperate_id(); return one.getMacoperate_id();

View File

@@ -11,12 +11,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.utils.SecurityUtils; import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.masterdata_manage.备份pdm.service.dto.WorkProcedureDto;
import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; 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.service.workprocedure.dao.PdmBiWorkprocedure;
import org.nl.wms.product_manage.service.workprocedure.dao.mapper.PdmBiWorkprocedureMapper; import org.nl.wms.product_manage.service.workprocedure.dao.mapper.PdmBiWorkprocedureMapper;
import org.nl.wms.system_manage.service.user.dto.CurrentUser;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;

View File

@@ -5,18 +5,16 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.enums.WorkerOrderEnum;
import org.nl.common.utils.BaseCode; import org.nl.common.utils.BaseCode;
import org.nl.common.utils.IdUtil; import org.nl.common.utils.IdUtil;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; 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.service.material.dao.MdMeMaterialbase;
import org.nl.wms.product_manage.sch.tasks.callMaterial.EngraveCallMaterialTask; import org.nl.wms.product_manage.sch.tasks.sendMaterial.WashSendMaterialTask;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp; import org.nl.wms.storage_manage.productmanage.service.structIvt.dao.StIvtStructivtCp;
import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpOutService; import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpOutService;
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
import org.slf4j.MDC; import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -24,13 +22,16 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/* /*
* @author ZZQ * @author ZZQ "'
* //一体机加一个从入库点到刻字机的搬运任务;
* //一体机加一个刻字机到空框回库
* //一体机加一个手动打开气缸按钮
* //一体机加预料上完上到刻字机14号设备虚拟设备
* @Date 2023/6/16 09:21 * @Date 2023/6/16 09:21
*/ */
@Service @Service
@@ -45,7 +46,7 @@ public class EngraveScheduleService {
@Autowired @Autowired
private IStIvtIostorinvBcpOutService stIvtIostorinvBcpOutService; private IStIvtIostorinvBcpOutService stIvtIostorinvBcpOutService;
@Autowired @Autowired
private EngraveCallMaterialTask engraveCallMaterialTask; private WashSendMaterialTask engraveCallMaterialTask;
@Autowired @Autowired
private IMdMeMaterialbaseService materialbaseService; private IMdMeMaterialbaseService materialbaseService;
@@ -61,6 +62,7 @@ public class EngraveScheduleService {
public void EngravePublish(){ public void EngravePublish(){
/** /**
* 1.查询当前正在执行的刻字工单数组 * 1.查询当前正在执行的刻字工单数组
* 3.
* 2.获取相同物料的工单:查询半成品库存物料:有的话则进行半成品出库:出到对接位 * 2.获取相同物料的工单:查询半成品库存物料:有的话则进行半成品出库:出到对接位
* 3.半成品出库完成后:触发刻字机叫料任务: * 3.半成品出库完成后:触发刻字机叫料任务:
* 4。根据物料获取工单对应设备生成刻字机叫料任务 * 4。根据物料获取工单对应设备生成刻字机叫料任务

View File

@@ -453,7 +453,6 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl<StIvtIostorinvCpMap
// 查出对应仓位 // 查出对应仓位
attrDao = iStIvtStructattrService.getById(struct_id); attrDao = iStIvtStructattrService.getById(struct_id);
} }
if (ObjectUtil.isEmpty(attrDao)) throw new BadRequestException("未找到仓位!"); if (ObjectUtil.isEmpty(attrDao)) throw new BadRequestException("未找到仓位!");
// 2.更新分配明细、分配、明细、主表 // 2.更新分配明细、分配、明细、主表

View File

@@ -34,7 +34,7 @@ export default {
}, },
data() { data() {
return { return {
title: '海mes系统', title: '海mes系统',
logo: Logo, logo: Logo,
title_param: 'platform' title_param: 'platform'
} }

View File

@@ -2,7 +2,7 @@
<div class="login" :style="'background-image:url('+ Background +');'"> <div class="login" :style="'background-image:url('+ Background +');'">
<el-form ref="loginForm" :model="loginForm" :rules="loginRules" label-position="left" label-width="0px" class="login-form"> <el-form ref="loginForm" :model="loginForm" :rules="loginRules" label-position="left" label-width="0px" class="login-form">
<h3 class="title"> <h3 class="title">
mes系统 mes系统
</h3> </h3>
<el-form-item prop="username"> <el-form-item prop="username">
<el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号"> <el-input v-model="loginForm.username" type="text" auto-complete="off" placeholder="账号">

View File

@@ -157,8 +157,8 @@
<el-table-column prop="nok_qty" label="报废数量" /> <el-table-column prop="nok_qty" label="报废数量" />
<el-table-column prop="repare_qty" label="报修数量" /> <el-table-column prop="repare_qty" label="报修数量" />
<el-table-column prop="person_finish_qty" label="人员期末数量" :min-width="flexWidth('person_finish_qty',tableData,'人员期末数量')"/> <el-table-column prop="person_finish_qty" label="人员期末数量" :min-width="flexWidth('person_finish_qty',tableData,'人员期末数量')"/>
<el-table-column prop="operatetime_start" label="开时间" :min-width="flexWidth('operatetime_start',tableData,'开工时间')"/> <el-table-column prop="operatetime_start" label="开时间" :min-width="flexWidth('operatetime_start',tableData,'开工时间')"/>
<el-table-column prop="operatetime_end" label="完工时间" /> <el-table-column prop="operatetime_end" label="结束时间" />
<el-table-column prop="report_status" label="报工状态" > <el-table-column prop="report_status" label="报工状态" >
<template slot-scope="scope"> <template slot-scope="scope">
{{ reportStatus[scope.row.report_status-1].label }} {{ reportStatus[scope.row.report_status-1].label }}

View File

@@ -368,11 +368,47 @@
<el-radio <el-radio
v-for="item in dict.IS_OR_NOT" v-for="item in dict.IS_OR_NOT"
:key="item.id" :key="item.id"
v-model="form.is_used_fxx" v-model="form.package_ext.is_used_fxx"
:label="item.value" :label="item.value"
>{{ item.label }} >{{ item.label }}
</el-radio> </el-radio>
</el-form-item> </el-form-item>
<el-form-item v-show="form.workprocedure_id == '1535144822984282112'" label="包装模版" prop="package_model">
<el-input-number
v-model="form.package_ext.package_model"
style="width: 200px;"
clearable
@focus="materialShow=true"
@clear="form.material_id='',form.material_code='',form.material_name='',form.material_spec=''"
/>
</el-form-item>
<el-form-item v-show="form.workprocedure_id == '1535144822984282112'" label="拆箱数量" prop="demol_num">
<el-input-number
v-model="form.package_ext.demol_num"
style="width: 200px;"
clearable
@focus="materialShow=true"
@clear="form.material_id='',form.material_code='',form.material_name='',form.material_spec=''"
/>
</el-form-item>
<el-form-item v-show="form.workprocedure_id == '1535144822984282112'" label="总袋量" prop="demol_num">
<el-input-number
v-model="form.package_ext.demol_num"
style="width: 200px;"
clearable
@focus="materialShow=true"
@clear="form.material_id='',form.material_code='',form.material_name='',form.material_spec=''"
/>
</el-form-item>
<el-form-item v-show="form.workprocedure_id == '1535144822984282112'" label="码盘模版" prop="stack_model">
<el-input-number
v-model="form.package_ext.stack_model"
style="width: 200px;"
clearable
@focus="materialShow=true"
@clear="form.material_id='',form.material_code='',form.material_name='',form.material_spec=''"
/>
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button> <el-button type="text" @click="crud.cancelCU">取消</el-button>
@@ -512,7 +548,7 @@ const defaultForm = {
device_code: null, device_code: null,
current_produce_person_id: null, current_produce_person_id: null,
is_canupdate_update: null, is_canupdate_update: null,
is_used_fxx: false, package_ext: {},
workorder_status: null, workorder_status: null,
is_needmove: null, is_needmove: null,
sale_id: null, sale_id: null,

View File

@@ -94,8 +94,8 @@
<!-- </template>--> <!-- </template>-->
<!-- </el-table-column>--> <!-- </el-table-column>-->
<!-- <el-table-column prop="person_finish_qty" label="人员期末数量" />--> <!-- <el-table-column prop="person_finish_qty" label="人员期末数量" />-->
<el-table-column prop="operatetime_start" label="开时间" :min-width="flexWidth('operatetime_start',crud.data,'开时间')"/> <el-table-column prop="operatetime_start" label="开时间" :min-width="flexWidth('operatetime_start',crud.data,'开时间')"/>
<el-table-column prop="operatetime_end" label="完时间" :min-width="flexWidth('operatetime_end',crud.data,'完时间')"/> <el-table-column prop="operatetime_end" label="完时间" :min-width="flexWidth('operatetime_end',crud.data,'完时间')"/>
<el-table-column prop="report_status" label="报工状态" > <el-table-column prop="report_status" label="报工状态" >
<template slot-scope="scope"> <template slot-scope="scope">
{{ reportStatus[scope.row.report_status-1].label }} {{ reportStatus[scope.row.report_status-1].label }}

View File

@@ -87,8 +87,8 @@
<el-input v-model="scope.row.repare_qty" /></template> <el-input v-model="scope.row.repare_qty" /></template>
</el-table-column> </el-table-column>
<el-table-column prop="person_finish_qty" label="人员期末数量" /> <el-table-column prop="person_finish_qty" label="人员期末数量" />
<el-table-column prop="operatetime_start" label="开时间" /> <el-table-column prop="operatetime_start" label="开时间" />
<el-table-column prop="operatetime_end" label="完工时间" /> <el-table-column prop="operatetime_end" label="结束时间" />
<el-table-column prop="report_status" label="报工状态"> <el-table-column prop="report_status" label="报工状态">
<template slot-scope="scope"> <template slot-scope="scope">
{{ reportStatus[scope.row.report_status-1].label }} {{ reportStatus[scope.row.report_status-1].label }}