Compare commits
2 Commits
master2
...
feature/sa
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
708a31b9e6 | ||
|
|
06e9ccc0fe |
@@ -1,38 +1,36 @@
|
||||
# hl_one_wms
|
||||
|
||||
#### Description
|
||||
|
||||
{**When you're done, you can delete the content in this README and update the file with details for others getting
|
||||
started with your repository**}
|
||||
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
|
||||
|
||||
#### Software Architecture
|
||||
|
||||
Software architecture description
|
||||
|
||||
#### Installation
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Instructions
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Contribution
|
||||
|
||||
1. Fork the repository
|
||||
2. Create Feat_xxx branch
|
||||
3. Commit your code
|
||||
4. Create Pull Request
|
||||
1. Fork the repository
|
||||
2. Create Feat_xxx branch
|
||||
3. Commit your code
|
||||
4. Create Pull Request
|
||||
|
||||
|
||||
#### Gitee Feature
|
||||
|
||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||
|
||||
@@ -4,8 +4,7 @@ import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alicp.jetcache.Cache;
|
||||
import com.alicp.jetcache.anno.config.EnableCreateCacheAnnotation;
|
||||
import com.alicp.jetcache.anno.config.EnableMethodCache;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import org.mybatis.spring.annotation.MapperScan;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.springframework.boot.CommandLineRunner;
|
||||
@@ -30,7 +29,7 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
*/
|
||||
@EnableAsync
|
||||
@RestController
|
||||
|
||||
|
||||
@SpringBootApplication(exclude = {
|
||||
org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
|
||||
})
|
||||
@@ -41,7 +40,6 @@ import org.springframework.web.bind.annotation.RestController;
|
||||
@EnableMethodCache(basePackages = "org.nl")
|
||||
@EnableCreateCacheAnnotation
|
||||
@MapperScan("org.nl.**.mapper")
|
||||
@Slf4j
|
||||
public class AppRun implements CommandLineRunner {
|
||||
|
||||
private Cache<String, Object> userCache;
|
||||
@@ -55,7 +53,7 @@ public class AppRun implements CommandLineRunner {
|
||||
|
||||
@Override
|
||||
public void run(String... args) throws Exception {
|
||||
log.warn("项目启动完成");
|
||||
System.out.println(111);
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
@@ -53,13 +53,15 @@ public enum AcsTaskEnum {
|
||||
TASK_Engrave_CALL("24","刻字机上料"),
|
||||
TASK_Engrave_EMPTY("25","刻字输送线-空框送回"),
|
||||
|
||||
TASK_STRUCT_HR_IN("26","入库-海柔半成品-生产入库"),
|
||||
TASK_STRUCT_HR_OUT("27","出库-海柔半成品-生产出库"),
|
||||
TASK_STRUCT_HR_IN("26","入库-海柔半成品-单据入库"),
|
||||
TASK_STRUCT_HR_OUT("27","出库-海柔半成品-单据出库"),
|
||||
TASK_STRUCT_HR_CHECK("28","海柔半成品-盘点"),
|
||||
TASK_STRUCT_HR_EMP_IN("29","入库-海柔半成品-空托盘"),
|
||||
TASK_STRUCT_HR_EMP_OUT("30","出库-海柔半成品-空托盘"),
|
||||
TASK_STRUCT_HR_PRODUCT_IN("31","入库-海柔半成品-生产入库"),
|
||||
TASK_STRUCT_HR_PRODUCT_OUT("32","出库-海柔半成品-生产出库"),
|
||||
TASK_STRUCT_HR_TRANSPORT_IN("35","搬运任务-海柔半成品库入库点"),
|
||||
TASK_STRUCT_HR_TRANSPORT_OUT("36","搬运任务-海柔半成品库入库点"),
|
||||
TASK_STRUCT_HR_TRANSPORT_OUT("36","搬运任务-海柔半成品库出库点"),
|
||||
TASK_WASH_FEEDING_JG("40","激光清洗机上料"),
|
||||
TASK_WASH_FEEDING_FH("41","发黑清洗机上料"),
|
||||
TASK_WASH_FEEDING_ZD("42","振动清洗机上料"),
|
||||
@@ -91,9 +93,10 @@ public enum AcsTaskEnum {
|
||||
AGV_SYSTEM_HR("3","海柔任务"),
|
||||
|
||||
ACS_TASK_TYPE_NOBLE_DOUBLE_TASK("1","诺宝双工任务"),
|
||||
ACS_TASK_TYPE_NOBLE_SINGLE_TASK("12","诺宝单工任务"),
|
||||
ACS_TASK_TYPE_NOBLE_SINGLE_TASK("2","诺宝单工任务"),
|
||||
ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK("3","诺宝单入-单任务"),
|
||||
ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK("4","诺宝双入-双任务"),
|
||||
ACS_TASK_TYPE_HR_TASK("14","海柔任务"),
|
||||
|
||||
ACS_TASK_TYPE_NOBLE_POINT_POINT_TASK("5","诺宝点对点任务"),
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package org.nl.common.publish.event;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/4/28 13:50
|
||||
*/
|
||||
@Data
|
||||
@SuperBuilder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TaskEvent2 extends PublishEvent {
|
||||
|
||||
private TaskStatusEnum status;
|
||||
private String task_id;
|
||||
private Map<String,String> extParam;
|
||||
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import cn.hutool.http.HttpRequest;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
@@ -35,12 +34,7 @@ public class AcsUtil {
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
// String acsParam = "acs_url";
|
||||
// JSONObject jsonObject = list.getJSONObject(0);
|
||||
// String acs = jsonObject.getString("acs");
|
||||
// if (StringUtils.isNotEmpty(acs)){
|
||||
// acsParam=acs;
|
||||
// }
|
||||
|
||||
//ACS地址:127.0.0.1:8010
|
||||
String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("acs_url").getValue();
|
||||
|
||||
|
||||
@@ -37,10 +37,10 @@ public class OptionRecord {
|
||||
bean.save(qlOption);
|
||||
}
|
||||
public static<T> void recordAsync(OptionEnum type,String status, Buss classname, String order, T option){
|
||||
// ThreadPoolExecutor EXECUTOR = SpringContextHolder.getBean("meshandlerPool");
|
||||
// EXECUTOR.execute(()->{
|
||||
// record(type,status,classname,order,option);
|
||||
// });
|
||||
ThreadPoolExecutor EXECUTOR = SpringContextHolder.getBean("meshandlerPool");
|
||||
EXECUTOR.execute(()->{
|
||||
record(type,status,classname,order,option);
|
||||
});
|
||||
}
|
||||
public static<T> List<T> getRecord(OptionRecordQuery query,final Class<T> clazz){
|
||||
IPdmQlOptionService bean = SpringContextHolder.getBean(IPdmQlOptionService.class);
|
||||
|
||||
@@ -85,11 +85,11 @@ public class LogAspect {
|
||||
try {
|
||||
log.info("[--request--][请求接口:{}][请求参数:{}]",url,params);
|
||||
result = joinPoint.proceed();
|
||||
// //是否把日志存到日志表
|
||||
// if (logInfo.isAddLogTable()) {
|
||||
// Log log = new Log("INFO", System.currentTimeMillis() - comming);
|
||||
// logService.save(getUsername(), StringUtils.getBrowser(request), requestIp, joinPoint, log);
|
||||
// }
|
||||
//是否把日志存到日志表
|
||||
if (logInfo.isAddLogTable()) {
|
||||
Log log = new Log("INFO", System.currentTimeMillis() - comming);
|
||||
logService.save(getUsername(), StringUtils.getBrowser(request), requestIp, joinPoint, log);
|
||||
}
|
||||
}catch (Exception ex){
|
||||
StringBuffer errorStack = new StringBuffer();
|
||||
errorStack.append("<br/>【异常堆栈:");
|
||||
|
||||
@@ -141,7 +141,7 @@ public class WQLCore {
|
||||
|
||||
|
||||
//开始加载系统默认wql根目录
|
||||
isSuccess = loadWQL(WQLCore.ROOT);
|
||||
isSuccess = true;//loadWQL(WQLCore.ROOT);
|
||||
|
||||
return isSuccess;
|
||||
|
||||
|
||||
@@ -173,7 +173,6 @@ public class WqlUtil{
|
||||
str = str.substring(str.indexOf(beginStr) + 1, str.indexOf(endStr));
|
||||
}
|
||||
catch(Exception arg3) {
|
||||
arg3.printStackTrace();
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
@@ -358,44 +358,31 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{
|
||||
@Override
|
||||
@Async
|
||||
public void feedOrderRealQty(JSONObject param) {
|
||||
|
||||
if (CollectionUtils.isEmpty(param)){
|
||||
return;
|
||||
}
|
||||
String today = DateUtil.format(new Date(), "yyMMdd");
|
||||
String yesterday = DateUtil.format(DateUtil.yesterday(), "yyMMdd");
|
||||
|
||||
Iterator<String> check = param.keySet().iterator();
|
||||
while (check.hasNext()){
|
||||
String key = check.next();
|
||||
if (!key.contains(today) && !key.contains(yesterday)){
|
||||
check.remove();
|
||||
Iterator<String> iterator = param.keySet().iterator();
|
||||
Map<String, PdmProduceWorkorder> map = workorderService.list(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.in("workorder_code", param.keySet()))
|
||||
.stream().collect(HashMap::new, (k, v) -> k.put(v.getWorkorder_code(), v), HashMap::putAll);
|
||||
Date now = new Date();
|
||||
BigDecimal divide = new BigDecimal(0);
|
||||
while (iterator.hasNext()){
|
||||
String workorderCode = iterator.next();
|
||||
BigDecimal dq_real_qty = param.getBigDecimal(workorderCode);
|
||||
PdmProduceWorkorder workorder = map.get(workorderCode);
|
||||
if(workorder == null){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (!CollectionUtils.isEmpty(param)){
|
||||
Iterator<String> iterator = param.keySet().iterator();
|
||||
Map<String, PdmProduceWorkorder> map = workorderService.list(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.in("workorder_code", param.keySet()))
|
||||
.stream().collect(HashMap::new, (k, v) -> k.put(v.getWorkorder_code(), v), HashMap::putAll);
|
||||
Date now = new Date();
|
||||
BigDecimal divide = new BigDecimal(0);
|
||||
while (iterator.hasNext()){
|
||||
String workorderCode = iterator.next();
|
||||
BigDecimal dq_real_qty = param.getBigDecimal(workorderCode);
|
||||
PdmProduceWorkorder workorder = map.get(workorderCode);
|
||||
if(workorder == null){
|
||||
continue;
|
||||
}
|
||||
BigDecimal subtract = dq_real_qty.subtract(workorder.getDq_real_qty());
|
||||
if (workorder.getUpdate_time() !=null){
|
||||
divide = subtract.divide(new BigDecimal(DateUtil.between(workorder.getUpdate_time(), now, DateUnit.SECOND)), 3, RoundingMode.HALF_UP);
|
||||
}
|
||||
workorderService.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||
.set("dq_real_qty",dq_real_qty)
|
||||
.set("update_time",DateUtil.now())
|
||||
.set("slope",divide)
|
||||
.eq("workorder_code",workorderCode));
|
||||
BigDecimal subtract = dq_real_qty.subtract(workorder.getDq_real_qty());
|
||||
if (workorder.getUpdate_time() !=null){
|
||||
divide = subtract.divide(new BigDecimal(DateUtil.between(workorder.getUpdate_time(), now, DateUnit.SECOND)), 3, RoundingMode.HALF_UP);
|
||||
}
|
||||
workorderService.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||
.set("dq_real_qty",dq_real_qty)
|
||||
.set("update_time",DateUtil.now())
|
||||
.set("slope",divide)
|
||||
.eq("workorder_code",workorderCode));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
package org.nl.wms.ext_manage.acs.service.listener;
|
||||
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.publish.AbstraceListener;
|
||||
import org.nl.common.publish.event.TaskEvent;
|
||||
import org.nl.common.publish.event.TaskEvent2;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.wql.util.SpringContextHolder;
|
||||
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.storage_manage.semimanage.TASKEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@Service
|
||||
public class TaskListener extends AbstraceListener<TaskEvent2> {
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
@Override
|
||||
protected String doEvent(TaskEvent2 event) {
|
||||
TaskStatusEnum status = event.getStatus();
|
||||
if (StringUtils.isNotEmpty(event.getTask_id())){
|
||||
SchBaseTask task = taskService.getById(event.getTask_id());
|
||||
|
||||
switch (status){
|
||||
case CREATED:
|
||||
//下发
|
||||
JSONArray param = new JSONArray();
|
||||
param.add(JSON.parseObject(JSONUtil.toJsonStr(task)));
|
||||
WmsToAcsService bean = SpringContextHolder.getBean(WmsToAcsService.class);
|
||||
Map<String, Object> result = bean.issueTaskToAcs4(param);
|
||||
if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) {
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("remark","下发acs失败"+MapUtil.getStr(result, "message"))
|
||||
.set("task_status",TaskStatusEnum.SURE_START_ERROR.getCode())
|
||||
.eq("task_id",task.getTask_id()));
|
||||
}else {
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",TaskStatusEnum.EXECUTING.getCode())
|
||||
.eq("task_id",task.getTask_id()));
|
||||
}
|
||||
|
||||
break;
|
||||
case EXECUTING:
|
||||
break;
|
||||
case FINISHED:
|
||||
break;
|
||||
case CANCEL:
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -185,8 +185,7 @@ public class BigScreenServiceImpl implements BigScreenService, ApplicationAutoIn
|
||||
List<Map> arr4 = deviceService.repairList(ids);
|
||||
//故障曲线
|
||||
List<Map> collect = arr4.stream().filter(map -> {
|
||||
Object date_time = map.get("date_time");
|
||||
if (date_time != null) {
|
||||
if (map.get("date_time") != null) {
|
||||
return map.get("date_time").equals(DateUtil.today());
|
||||
}
|
||||
return false;
|
||||
@@ -201,9 +200,8 @@ public class BigScreenServiceImpl implements BigScreenService, ApplicationAutoIn
|
||||
}
|
||||
//周工单情况
|
||||
ScrapRateQuery query = new ScrapRateQuery();
|
||||
DateTime dateTime = DateUtil.offsetWeek(new Date(), -1);
|
||||
query.setWorkprocedure_ids(ids);//统计月
|
||||
query.setStart_time(DateFormatUtils.format(dateTime, "yyyy-MM-dd"));
|
||||
query.setWorkprocedure_ids(ids);
|
||||
query.setStart_time(DateFormatUtils.format(DateUtil.offsetWeek(new Date(), -1), "yyyy-MM-dd"));
|
||||
List<Map> scrapRate = workorderService.scrapRate(query);
|
||||
Map map = scrapRate.get(0);
|
||||
Map jo3 = MapOf.of("sumfinishproduce_qty", map.get("real_qty"),
|
||||
@@ -213,6 +211,11 @@ public class BigScreenServiceImpl implements BigScreenService, ApplicationAutoIn
|
||||
result.put("result",MapOf.of("screenname",one.getValue(),
|
||||
"arr1",arr1,"arr2",arr2,"arr4",arr4,"arr5",arr5,"jo3",jo3,"jo6",MapOf.of("sumproduce_orderqty","1","sumfinishproduce_orderqty","2","sumproducing_orderqty","3")));
|
||||
}
|
||||
|
||||
|
||||
|
||||
//str = "{\"code\":\"1\",\"desc\":\"查询成功\",\"result\":{\"screenname\":\"车间推弯看板\",\"arr1\":[{\"workprocedure_name\":\"推弯一体机加工\",\"device_runningnum\":\"3\",\"device_errornum\":\"9\",\"device_waitingnum\":\"3\",\"shutdownnum\":\"16\",\"device_num\":\"31\"}],\"arr2\":[{\"produceschedule_date\":\"2021-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"推弯一体机加工\",\"sysdic_name\":\"弯头工段\",\"worksection_type_scode\":\"01\",\"finishproduce_qty\":\"0\",\"produce_qty\":\"4200\",\"waiting_qty\":\"4200\",\"progress_qty\":\"0\"},{\"produceschedule_date\":\"2020-09-16\",\"produceorder_code\":\"0916014\",\"workprocedure_name\":\"盘管无屑下料\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"3500\",\"produce_qty\":\"3500\",\"waiting_qty\":\"0\",\"progress_qty\":\"100\"},{\"produceschedule_date\":\"2020-12-31\",\"produceorder_code\":\"1231013\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"790\",\"produce_qty\":\"3500\",\"waiting_qty\":\"2710\",\"progress_qty\":\"23\"},{\"produceschedule_date\":\"2020-05-06\",\"produceorder_code\":\"0506009\",\"workprocedure_name\":\"三通拉伸\",\"sysdic_name\":\"综合工段\",\"worksection_type_scode\":\"02\",\"finishproduce_qty\":\"4225\",\"produce_qty\":\"6000\",\"waiting_qty\":\"1775\",\"progress_qty\":\"70\"}],\"jo3\":{\"sumproduce_qty\":\"31952\",\"sumfinishproduce_qty\":\"108048\",\"sumproducing_qty\":\"0\",\"sumweek_qty\":\"140000\"},\"arr4\":[],\"arr5\":[[\"product\",\"昨日\",\"今日\"],[\"推弯一体机加工\",\"0\",\"0\"]],\"jo6\":{\"sumproduce_orderqty\":\"\",\"sumfinishproduce_orderqty\":\"\",\"sumproducing_orderqty\":\"\"},\"arr7\":[{\"count\":\"0\",\"date\":\"07-10\"},{\"count\":\"0\",\"date\":\"07-11\"},{\"count\":\"0\",\"date\":\"07-12\"},{\"count\":\"0\",\"date\":\"07-13\"},{\"count\":\"0\",\"date\":\"07-14\"},{\"count\":\"0\",\"date\":\"07-15\"},{\"count\":\"0\",\"date\":\"07-16\"}]}}";
|
||||
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -23,18 +23,36 @@ public class MpsSaleOrderIcExt implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@TableId(value = "orderext_id")
|
||||
private String orderext_id;
|
||||
/**
|
||||
* 销售单标识
|
||||
*/
|
||||
@TableId(value = "sale_id")
|
||||
private String sale_id;
|
||||
|
||||
/**
|
||||
* 销售单编号
|
||||
*/
|
||||
private String sale_code;
|
||||
|
||||
/**
|
||||
* 明细序号
|
||||
*/
|
||||
private Integer seq_no;
|
||||
|
||||
/**
|
||||
* print_序号
|
||||
*/
|
||||
private Integer print_no;
|
||||
|
||||
/**
|
||||
* 物料规格
|
||||
*/
|
||||
private String material_code;
|
||||
|
||||
/**
|
||||
* 包装袋类型
|
||||
*/
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.nl.wms.mps_manage.saleorder.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
@@ -56,16 +55,13 @@ public class MpsSaleOrderIcExtController {
|
||||
@Log("新增订单扩展表")
|
||||
//("新增订单扩展表")
|
||||
public ResponseEntity<Object> query(@RequestBody JSONObject whereJson) {
|
||||
MpsSaleOrderIcExt one = extService.getOne(new QueryWrapper<MpsSaleOrderIcExt>()
|
||||
.eq("sale_id", whereJson.getString("sale_id")).eq("remark1", whereJson.getString("material_code")));
|
||||
Map result;
|
||||
if (one==null){
|
||||
String bar_code = whereJson.getString("workorder_code") + whereJson.getString("is_flip") + whereJson.getString("target_roadway") + "00001";
|
||||
result = MapOf.of("sale_id",whereJson.getString("sale_id"),"material_code",whereJson.getString("material_code"),"bar_code",bar_code,"print_no",0);
|
||||
}else {
|
||||
result = MapOf.of("sale_id",one.getSale_id(),"material_code",one.getRemark1(),"bar_code",one.getBar_code(),"print_no",one.getRemark2());
|
||||
Map<String, Object> map = extService.getMap(new QueryWrapper<MpsSaleOrderIcExt>()
|
||||
.eq("sale_id", whereJson.getString("sale_id")).eq("material_code", whereJson.getString("material_code")));
|
||||
if (map==null){
|
||||
MpsSaleOrder saleOrder = saleOrderService.getById(whereJson.getString("sale_id"));
|
||||
map= MapOf.of("sale_code",saleOrder.getSale_code(),"material_code",whereJson.getString("material_code"),"bar_code","","print_no",0,"orderext_id","");
|
||||
}
|
||||
return new ResponseEntity<>(result,HttpStatus.OK);
|
||||
return new ResponseEntity<>(map,HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/getExtList")
|
||||
@@ -75,13 +71,14 @@ public class MpsSaleOrderIcExtController {
|
||||
if (StringUtils.isEmpty(whereJson.getString("sale_id"))){throw new BadRequestException("当前工单没有绑定订单无法打印");};
|
||||
if (whereJson.getInteger("print_num")==null){throw new BadRequestException("没有设置打印标签数量");};
|
||||
MpsSaleOrderIcExt one = extService.getOne(new QueryWrapper<MpsSaleOrderIcExt>()
|
||||
.eq("sale_id", whereJson.getString("sale_id")).eq("remark1", whereJson.getString("material_code")));
|
||||
.eq("sale_id", whereJson.getString("sale_id")).eq("material_code", whereJson.getString("material_code")));
|
||||
int print_no = 0;
|
||||
if (one==null){
|
||||
one = new MpsSaleOrderIcExt();
|
||||
one.setRemark1(whereJson.getString("material_code"));
|
||||
one.setSale_id(whereJson.getString("sale_id"));
|
||||
one.setMaterial_code(whereJson.getString("material_code"));
|
||||
}else {
|
||||
print_no = Integer.parseInt(one.getRemark2());
|
||||
print_no = one.getPrint_no();
|
||||
}
|
||||
LinkedList<String> barCodes = new LinkedList<>();
|
||||
for (int i =0;i<whereJson.getInteger("print_num");i++){
|
||||
@@ -89,34 +86,16 @@ public class MpsSaleOrderIcExtController {
|
||||
barCodes.add(bar_code);
|
||||
}
|
||||
|
||||
one.setRemark2(String.valueOf(print_no+whereJson.getInteger("print_num")));
|
||||
one.setPrint_no(print_no+whereJson.getInteger("print_num"));
|
||||
one.setBar_code(barCodes.getLast());
|
||||
if (StringUtils.isEmpty(one.getSale_id())){
|
||||
one.setSale_id(whereJson.getString("sale_id"));
|
||||
one.setSeq_no(1);
|
||||
if (one.getOrderext_id() == null){
|
||||
one.setOrderext_id(IdUtil.getStringId());
|
||||
extService.save(one);
|
||||
}else {
|
||||
extService.update(new UpdateWrapper<MpsSaleOrderIcExt>()
|
||||
.set("remark2",one.getRemark2())
|
||||
.set("bar_code",one.getBar_code())
|
||||
.eq("sale_id", whereJson.getString("sale_id"))
|
||||
.eq("remark1", whereJson.getString("material_code")));
|
||||
extService.updateById(one);
|
||||
}
|
||||
return new ResponseEntity<>(barCodes,HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/reset")
|
||||
@Log("根据工单获取条码")
|
||||
//("根据工单获取条码")
|
||||
public ResponseEntity<Object> reset(@RequestBody JSONObject whereJson) {
|
||||
if (StringUtils.isEmpty(whereJson.getString("sale_id"))||StringUtils.isEmpty(whereJson.getString("material_code"))) {
|
||||
throw new BadRequestException("请求参数不能为空,缺少sale_id或者物料信息");
|
||||
};
|
||||
extService.remove(new QueryWrapper<MpsSaleOrderIcExt>()
|
||||
.eq("sale_id", whereJson.getString("sale_id"))
|
||||
.eq("remark1", whereJson.getString("material_code")));
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ public class MpsSaleOrder implements Serializable{
|
||||
* 明细序号
|
||||
*/
|
||||
|
||||
private int seq_no;
|
||||
private Integer seq_no;
|
||||
/**
|
||||
* 销售单类型
|
||||
*/
|
||||
|
||||
@@ -6,8 +6,10 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.wms.scheduler_manage.service.cacheline.CachelinePositionService;
|
||||
import org.nl.wms.staging_manage.service.conveyor.dao.SchConveyorPosition;
|
||||
import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -23,15 +25,19 @@ import java.util.List;
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
public class CacheConveyorContorller {
|
||||
|
||||
@Autowired
|
||||
private CachelinePositionService cachelinePositionService;
|
||||
|
||||
/**
|
||||
* 半成品数据库:/api/bcp/hr/bypda
|
||||
* @param param
|
||||
* 缓存线物料查询接口:/getCacheLineMaterialInfo"
|
||||
* @param bcpIvt
|
||||
* @return
|
||||
*/
|
||||
|
||||
@PostMapping("/call")
|
||||
@Log("缓存线叫料")
|
||||
public ResponseEntity<Object> conveyor(@RequestBody StIvtStructivtBcp param,@RequestParam("target") String target){
|
||||
public ResponseEntity<Object> conveyor(@RequestBody JSONObject bcpIvt){
|
||||
StIvtStructivtBcp bcp = new StIvtStructivtBcp();
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -95,10 +95,10 @@ public class FhWashController {
|
||||
}
|
||||
@PostMapping("/blanking")
|
||||
@Log("清洗下料")
|
||||
public ResponseEntity<Object> blanking(@RequestBody JSONObject params){
|
||||
public ResponseEntity<Object> blanking(@RequestBody JSONArray params,String vechile_code){
|
||||
//创建半成品入库任务
|
||||
pointService.queryPointMaterial(null);
|
||||
fhWashService.blanking(params);
|
||||
fhWashService.blanking(params,vechile_code);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
//退火区
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package org.nl.wms.pda_manage.pda.controller.a3wash;
|
||||
|
||||
/**
|
||||
* 振动清洗机手持功能
|
||||
* 振动清洗机手持功能:acs同步缓存线物料相关未开发
|
||||
*/
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
@@ -18,7 +18,9 @@ import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.scheduler_manage.service.cacheline.CachelinePositionService;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.a3.FHWash.FhWashService;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.a3.HBWash.ZdWashService;
|
||||
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
|
||||
import org.nl.wms.scheduler_manage.service.point.PointQuery;
|
||||
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
|
||||
@@ -26,6 +28,7 @@ import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.staging_manage.service.conveyor.ISchConveyorPositionService;
|
||||
import org.nl.wms.staging_manage.service.conveyor.dao.SchConveyorPosition;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.impl.HrBcpProjectOutService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
@@ -45,30 +48,32 @@ import java.util.Map;
|
||||
@SaIgnore
|
||||
public class ZdWashController {
|
||||
private static String CONVEYOR = "";
|
||||
@Autowired
|
||||
private ISchConveyorPositionService schConveyorPositionService;
|
||||
|
||||
@Autowired
|
||||
private FhWashService fhWashService;
|
||||
private ZdWashService zdWashService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private IMdPbStoragevehicleextService storagevehicleextService;
|
||||
@Autowired
|
||||
private HrBcpProjectOutService hrBcpProjectOutService;
|
||||
|
||||
|
||||
|
||||
@PostMapping("/conveyor")
|
||||
@Log("查询输送线")
|
||||
public ResponseEntity<Object> conveyor(@RequestBody JSONObject param){
|
||||
List<SchConveyorPosition> list = schConveyorPositionService.list(new QueryWrapper<SchConveyorPosition>()
|
||||
.eq("position_code", CONVEYOR));
|
||||
return new ResponseEntity<>(TableDataInfo.build(list),HttpStatus.OK);
|
||||
@PostMapping("/callMaterial")
|
||||
@Log("半成品库叫料")
|
||||
public ResponseEntity<Object> callMaterial(@RequestBody JSONObject bcpIvt){
|
||||
hrBcpProjectOutService.create(bcpIvt);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
// * 缓存线物料查询接口:/getCacheLineMaterialInfo"
|
||||
@PostMapping("/feeding")
|
||||
@Log("激光清洗机上料")
|
||||
public ResponseEntity<Object> feeding(@RequestBody JSONArray params){
|
||||
fhWashService.feeding(params);
|
||||
//缓存线叫料"
|
||||
zdWashService.feeding(params);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
|
||||
@@ -76,7 +81,7 @@ public class ZdWashController {
|
||||
@Log("清洗中物料")
|
||||
public ResponseEntity<Object> washing(){
|
||||
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
|
||||
.eq("task_type", AcsTaskEnum.TASK_WASH_FEEDING_JG.getCode())
|
||||
.eq("task_type", AcsTaskEnum.TASK_WASH_FEEDING_ZD.getCode())
|
||||
.eq("task_status", StatusEnum.TASK_RUNNING.getCode())
|
||||
.eq("is_delete", Boolean.FALSE)
|
||||
.orderByAsc("task_code"));
|
||||
@@ -99,37 +104,7 @@ public class ZdWashController {
|
||||
@Log("清洗下料")
|
||||
public ResponseEntity<Object> blanking(@RequestBody JSONObject params){
|
||||
//创建半成品入库任务
|
||||
pointService.queryPointMaterial(null);
|
||||
fhWashService.blanking(params);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
//退火区
|
||||
@RequestMapping("/staging")
|
||||
@Log("查询退火暂存区")
|
||||
public ResponseEntity<Object> staging(PointQuery query, PageQuery page){
|
||||
//创建半成品入库任务
|
||||
List<Map> maps = pointService.queryVechileMaterial(query);
|
||||
return new ResponseEntity<>(TableDataInfo.build(maps),HttpStatus.OK);
|
||||
}
|
||||
|
||||
@PostMapping("/release")
|
||||
@Log("点位释放")
|
||||
public ResponseEntity<Object> release(@RequestBody List<Long> ids){
|
||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||
.set("vehicle_code","").in("point_id",ids));
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/place")
|
||||
@Log("点位放置")
|
||||
public ResponseEntity<Object> place(@RequestBody JSONObject param){
|
||||
//更新点位
|
||||
pointService.update(new UpdateWrapper<SchBasePoint>()
|
||||
.set("vehicle_code",param.getString("vehicle_code"))
|
||||
.eq("point_code",param.getString("point_code")));
|
||||
//更新载具物料信息为清洗
|
||||
storagevehicleextService.update(new UpdateWrapper<MdPbStoragevehicleext>()
|
||||
.set("is_need_clean",true)
|
||||
.eq("storagevehicle_code",param.getString("vehicle_code")));
|
||||
zdWashService.blanking(params);
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/vechileRelease")
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.nl.wms.product_manage.controller.workorder;
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import com.github.pagehelper.Page;
|
||||
@@ -11,7 +10,6 @@ import com.github.pagehelper.PageHelper;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.nl.common.TableDataInfo;
|
||||
import org.nl.common.anno.Log;
|
||||
import org.nl.common.domain.query.PageQuery;
|
||||
@@ -22,7 +20,6 @@ import org.nl.common.utils.RedissonUtils;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
|
||||
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
|
||||
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||
import org.nl.wms.product_manage.service.workorder.dto.ReportQuery;
|
||||
@@ -51,7 +48,7 @@ import java.util.stream.Collectors;
|
||||
*/
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
|
||||
|
||||
@RequestMapping("/api/produceWorkorder")
|
||||
@Slf4j
|
||||
@SaIgnore
|
||||
@@ -91,7 +88,7 @@ public class PdmProduceWorkorderController{
|
||||
|
||||
@PostMapping("/create")
|
||||
@Log("新增工单管理")
|
||||
//("新增工单管理"):添加下发顺序
|
||||
//("新增工单管理")
|
||||
public ResponseEntity<Object> submit(@Validated @RequestBody JSONObject dto) {
|
||||
iPdmProduceWorkorderService.create(dto);
|
||||
return new ResponseEntity<>(HttpStatus.CREATED);
|
||||
@@ -126,18 +123,12 @@ public class PdmProduceWorkorderController{
|
||||
@DeleteMapping
|
||||
public ResponseEntity<Object> delete(@RequestBody String[] ids) {
|
||||
if(ids != null && ids.length > 0) {
|
||||
List<PdmProduceWorkorder> workOrderList = iPdmProduceWorkorderService
|
||||
.list(new LambdaUpdateWrapper<PdmProduceWorkorder>()
|
||||
.in(PdmProduceWorkorder::getWorkorder_id, Arrays.asList(ids)));
|
||||
List<PdmProduceWorkorder> workOrderList = iPdmProduceWorkorderService.list(new LambdaUpdateWrapper<PdmProduceWorkorder>().in(PdmProduceWorkorder::getWorkorder_id, Arrays.asList(ids)));
|
||||
int size = workOrderList.stream().filter(r -> Objects.equals(r.getCreate_type(), StatusEnum.APSINTO.getCode())).collect(Collectors.toList()).size();
|
||||
if(size > 0) {
|
||||
throw new BadRequestException("不允许删除aps工单");
|
||||
}
|
||||
long count = workOrderList.stream().filter(a -> !a.getWorkorder_status().equals(WorkerOrderEnum.CREATE.getCode())).count();
|
||||
if (count>0){
|
||||
throw new BadRequestException("删除失败:只能删除创建状态的工单");
|
||||
}
|
||||
iPdmProduceWorkorderService.removeByIds(Arrays.asList(ids));
|
||||
iPdmProduceWorkorderService.update(new UpdateWrapper<PdmProduceWorkorder>().set("is_delete", true).in("workorder_id", Arrays.asList(ids)));
|
||||
}
|
||||
return new ResponseEntity<>(HttpStatus.OK);
|
||||
}
|
||||
@@ -149,22 +140,6 @@ public class PdmProduceWorkorderController{
|
||||
return new ResponseEntity<>(TableDataInfo.build(deviceService.getNotWorkDeviceByWorkproceduceId(param)), HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/getWorkDeviceByWorkproceduceId")
|
||||
@Log("根据工序查询没有工单的设备")
|
||||
//("根据工序查询没有工单的设备")
|
||||
public ResponseEntity<Object> getWorkDeviceByWorkproceduceId(@RequestBody JSONObject param) {
|
||||
QueryWrapper<PdmBiDevice> query = new QueryWrapper<PdmBiDevice>()
|
||||
.eq("is_delete", '0');
|
||||
if (StringUtils.isNotEmpty(param.getString("workprocedure_id"))){
|
||||
query.eq("workprocedure_id",param.getString("workprocedure_id"));
|
||||
}
|
||||
if (StringUtils.isNotEmpty(param.getString("product_area"))){
|
||||
query.eq("product_area",param.getString("product_area"));
|
||||
}
|
||||
return new ResponseEntity<>(TableDataInfo.build(deviceService.list(query)), HttpStatus.CREATED);
|
||||
}
|
||||
|
||||
@PostMapping("/forceFinish")
|
||||
@Log("工单强制完成")
|
||||
//("工单强制完成")
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
where
|
||||
sch_base_point.point_type = '4' and pdm_bi_device.is_used = true
|
||||
AND pdm_bi_device.is_used = true and is_artificial = false
|
||||
and pdm_bi_device.workprocedure_id = #{workprocedure_id}
|
||||
and workprocedure_id = #{workprocedure_id}
|
||||
<if test="material_id != null and material_id != ''">
|
||||
and (pdm_bi_device.material_id = #{material_id} or pdm_bi_device.material_id is null or pdm_bi_device.material_id = '')
|
||||
</if>
|
||||
|
||||
@@ -2,19 +2,17 @@ package org.nl.wms.product_manage.service.workorder.dao.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
import org.nl.wms.analysis_manage.productCapacity.service.dto.ProductCapQuery;
|
||||
import org.nl.wms.analysis_manage.qlmanage.dto.QualityQuery;
|
||||
import org.nl.wms.analysis_manage.scrapRate.service.dto.ScrapRateQuery;
|
||||
import org.nl.wms.analysis_manage.workingGoods.service.dto.ByProcessQuery;
|
||||
import org.nl.wms.device_manage.ios.service.structIvt.dto.StructIvtEmQuery;
|
||||
import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder;
|
||||
import org.nl.wms.product_manage.service.workorder.dto.PdmProduceWorkorderDto;
|
||||
import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
@@ -46,16 +44,6 @@ public interface PdmProduceWorkorderMapper extends BaseMapper<PdmProduceWorkorde
|
||||
*/
|
||||
void insertBatch(@Param("entities") List<PdmProduceWorkorder> entities);
|
||||
|
||||
Integer getMaxNo(@Param("device_code")String device_code,@Param("workorder_code")String workorder_code);
|
||||
@Select("select min(aps_workorder_no) from pdm_produce_workorder " +
|
||||
"where device_code = #{device_code} and workorder_status = #{workorder_status} ")
|
||||
Integer getMinNo(@Param("device_code")String device_code,@Param("workorder_status")String workorder_status);
|
||||
|
||||
List<Map> getMaxNos(Set<String> devices);
|
||||
|
||||
@Update("update pdm_produce_workorder set aps_workorder_no = aps_workorder_no-1 where device_code = #{device_code} and workorder_status = '1'")
|
||||
void recursionNo(String device_code);
|
||||
|
||||
/**
|
||||
* 在制品分析
|
||||
*
|
||||
|
||||
@@ -23,8 +23,8 @@
|
||||
LEFT JOIN sys_user users ON users.user_id = ShiftOrder.current_produce_person_id
|
||||
LEFT JOIN pdm_bi_device device ON ShiftOrder.device_code = device.device_code
|
||||
WHERE
|
||||
ShiftOrder.device_code is not null and
|
||||
ShiftOrder.is_delete = '0'
|
||||
ShiftOrder.device_code is not null and ShiftOrder.current_produce_person_id is not null and
|
||||
ShiftOrder.is_delete = '0' AND ShiftOrder.aps_work_type != 'S'
|
||||
<if test="query.workorder_code != null and query.workorder_code != ''">
|
||||
and ShiftOrder.workorder_code like concat('%',#{query.workorder_code},'%')
|
||||
</if>
|
||||
@@ -275,7 +275,7 @@
|
||||
<if test="optuser != null and optuser != ''">
|
||||
and workorder.current_produce_person_id = #{optuser}
|
||||
</if>
|
||||
order by device_code desc,aps_workorder_no asc
|
||||
order by workorder_code desc
|
||||
</select>
|
||||
<select id="orderListByDevLimit"
|
||||
resultType="org.nl.wms.product_manage.service.workorder.dto.PdmProduceWorkorderDto">
|
||||
@@ -739,23 +739,5 @@
|
||||
</foreach>)
|
||||
and DATE_FORMAT(pdm_produce_workorder.planproducestart_date,'%Y-%m-%d') = CURDATE();
|
||||
</select>
|
||||
<select id="getMaxNo" resultType="java.lang.Integer">
|
||||
select IFNULL(max(aps_workorder_no),0) from pdm_produce_workorder
|
||||
where device_code = #{device_code}
|
||||
and workorder_status = '1'
|
||||
<if test="workorder_code != null and workorder_code != ''">
|
||||
and workorder_code <![CDATA[<>]]> #{workorder_code}
|
||||
</if>
|
||||
</select>
|
||||
<select id="getMaxNos" resultType="java.util.Map">
|
||||
select device_code,
|
||||
IFNULL(max(aps_workorder_no),0) as maxNo from pdm_produce_workorder
|
||||
where workorder_status = '1' and
|
||||
device_code IN
|
||||
<foreach collection="devices" item="item" index="index" separator="," open="(" close=")">
|
||||
#{item}
|
||||
</foreach>
|
||||
GROUP BY device_code
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
||||
@@ -78,7 +78,6 @@ import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
import java.text.ParseException;
|
||||
import java.util.*;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -174,14 +173,10 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (planQty.compareTo(BigDecimal.ZERO) <= 0) {
|
||||
throw new BadRequestException("计划数量应大于0");
|
||||
}
|
||||
//aps_workorder_no
|
||||
PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class);
|
||||
if (ext != null) {
|
||||
entity.setPackage_ext(ext.toJSONString());
|
||||
}
|
||||
int maxNo = this.baseMapper.getMaxNo(entity.getDevice_code(),entity.getWorkorder_code());
|
||||
entity.setAps_workorder_no(maxNo+1);
|
||||
|
||||
entity.setWorkorder_id(IdUtil.getStringId());
|
||||
entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
String current_produce_person_id = form.getString("current_produce_person_id");
|
||||
@@ -192,7 +187,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
entity.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
entity.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
entity.setCreate_time(DateUtil.now());
|
||||
entity.setAps_workorder_no(maxNo);
|
||||
entity.setCreate_type(StatusEnum.PCINTO.getCode());
|
||||
entity.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
||||
entity.setAps_update_time(DateUtil.now());
|
||||
@@ -206,7 +200,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void updateForm(JSONObject form) {
|
||||
Assert.notNull(form, "参数不能为空");
|
||||
PdmProduceWorkorder one = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", form.getString("workorder_id")).in("workorder_status", "1", "2", "4"));
|
||||
@@ -214,10 +207,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
throw new BadRequestException("工单状态非生产状态下不允许修改");
|
||||
}
|
||||
PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class);
|
||||
if (entity.getWorkorder_status().equals(WorkerOrderEnum.CREATE.getCode())){
|
||||
Integer maxNo = this.baseMapper.getMaxNo(entity.getDevice_code(),entity.getWorkorder_code());
|
||||
entity.setAps_workorder_no(maxNo+1);
|
||||
}
|
||||
entity.setDown_time(DateUtil.now());
|
||||
entity.setDown_id(SecurityUtils.getCurrentUserId());
|
||||
entity.setDown_name(SecurityUtils.getCurrentNickName());
|
||||
@@ -225,9 +214,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
entity.setUpdate_time(new Date());
|
||||
entity.setReal_qty(null);
|
||||
this.updateById(entity);
|
||||
if (!entity.getAps_workorder_no().equals(one.getAps_workorder_no())){
|
||||
sortNo(entity.getDevice_code());
|
||||
}
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -235,64 +222,46 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
return this.baseMapper.getworkOrderDtl(param.getString("workorder_id"));
|
||||
}
|
||||
|
||||
void sortNo(String device_code){
|
||||
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.eq("device_code", device_code)
|
||||
.eq("workorder_status", WorkerOrderEnum.CREATE.getCode())
|
||||
.ne("aps_workorder_no", 0)
|
||||
.select("workorder_id")
|
||||
.orderByAsc("aps_workorder_no"));
|
||||
if (!CollectionUtils.isEmpty(list)){
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||
.set("aps_workorder_no",i+1).eq("workorder_id",list.get(i).getWorkorder_id()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 工单下发
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void
|
||||
down(List<String> ids) {
|
||||
public void down(List<String> ids) {
|
||||
if (ids == null || ids.size() == 0) {
|
||||
return;
|
||||
}
|
||||
List<PdmProduceWorkorder> workorders = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids));
|
||||
//工单下发校验
|
||||
checkWorkOrder(workorders);
|
||||
// List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>().nested(i -> i.isNull("workorder_code").or().eq("workorder_code", "0").or().eq("workorder_code", "").or().eq("material_id", "0").or().eq("workprocedure_id", "0").or().eq("create_type", "3")).in("workorder_id", ids));
|
||||
// //aps排产完成的工单,生成工单编号再下发
|
||||
// if (list.size() > 0) {
|
||||
// list.forEach(r -> {
|
||||
// UpdateWrapper<PdmProduceWorkorder> updateWrapper = new UpdateWrapper<PdmProduceWorkorder>();
|
||||
// updateWrapper.eq("workorder_id", r.getWorkorder_id());
|
||||
// //updateWrapper.set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
// updateWrapper.set("device_code", r.getDevice_code());
|
||||
// updateWrapper.set("workprocedure_id", r.getWorkprocedure_id());
|
||||
// updateWrapper.set("aps_update_flag", "M");
|
||||
// updateWrapper.set("aps_update_inner_flag", "M");
|
||||
// updateWrapper.set("aps_update_time", DateUtil.now());
|
||||
// updateWrapper.set("update_time", DateUtil.now());
|
||||
// updateWrapper.set("update_id", SecurityUtils.getCurrentUserId());
|
||||
// updateWrapper.set("update_name", SecurityUtils.getCurrentNickName());
|
||||
// this.update(updateWrapper);
|
||||
// });
|
||||
// }
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>().set("workorder_status", WorkerOrderEnum.SEND.getCode()).set("down_id", SecurityUtils.getCurrentUserId()).set("down_name", SecurityUtils.getCurrentNickName()).set("update_time", new Date()).set("down_time", new Date()).in("workorder_id", ids));
|
||||
Set<String> deviceCodes = workorders.stream().map(PdmProduceWorkorder::getDevice_code).collect(Collectors.toSet());
|
||||
for (String deviceCode : deviceCodes) {
|
||||
this.sortNo(deviceCode);
|
||||
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>().nested(i -> i.isNull("workorder_code").or().eq("workorder_code", "0").or().eq("workorder_code", "").or().eq("material_id", "0").or().eq("workprocedure_id", "0").or().eq("create_type", "3")).in("workorder_id", ids));
|
||||
//aps排产完成的工单,生成工单编号再下发
|
||||
if (list.size() > 0) {
|
||||
list.forEach(r -> {
|
||||
UpdateWrapper<PdmProduceWorkorder> updateWrapper = new UpdateWrapper<PdmProduceWorkorder>();
|
||||
updateWrapper.eq("workorder_id", r.getWorkorder_id());
|
||||
//updateWrapper.set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"));
|
||||
updateWrapper.set("device_code", r.getDevice_code());
|
||||
updateWrapper.set("workprocedure_id", r.getWorkprocedure_id());
|
||||
updateWrapper.set("aps_update_flag", "M");
|
||||
updateWrapper.set("aps_update_inner_flag", "M");
|
||||
updateWrapper.set("aps_update_time", DateUtil.now());
|
||||
updateWrapper.set("update_time", DateUtil.now());
|
||||
updateWrapper.set("update_id", SecurityUtils.getCurrentUserId());
|
||||
updateWrapper.set("update_name", SecurityUtils.getCurrentNickName());
|
||||
this.update(updateWrapper);
|
||||
});
|
||||
}
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>().set("workorder_status", WorkerOrderEnum.SEND.getCode()).set("down_id", SecurityUtils.getCurrentUserId()).set("down_name", SecurityUtils.getCurrentNickName()).set("update_time", new Date()).set("down_time", new Date()).in("workorder_id", ids));
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0]));
|
||||
}
|
||||
|
||||
//工单下发前校验
|
||||
public void checkWorkOrder(List<PdmProduceWorkorder> workorders) {
|
||||
//1.校验批量下发工单中是否存在已完成的/未绑定设备的工单/未绑定人员的
|
||||
boolean isFinished = workorders.stream().anyMatch(workorder -> Integer.parseInt(workorder.getWorkorder_status()) > 5 || Integer.parseInt(workorder.getWorkorder_status()) == 2|| workorder.getAps_workorder_no() == 0 || StringUtils.isBlank(workorder.getDevice_code()));
|
||||
boolean isFinished = workorders.stream().anyMatch(workorder -> Integer.parseInt(workorder.getWorkorder_status()) > 5 || Integer.parseInt(workorder.getWorkorder_status()) == 2 || StringUtils.isBlank(workorder.getDevice_code()) || StringUtils.isBlank(workorder.getCurrent_produce_person_id()));
|
||||
if (isFinished) {
|
||||
throw new BadRequestException("当前工单未调整下发顺序或者已经下发,无法下发");
|
||||
throw new BadRequestException("存在未分派人员或已下发或已完成或的工单,无法下发");
|
||||
}
|
||||
//2.校验批量工单中是否有绑定相同设备
|
||||
//工作顺序号排序
|
||||
@@ -303,7 +272,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
// }
|
||||
//3.校验单个工单下发,校验下发工单列表中是否存在相同工序中更小的工单下发顺序号
|
||||
if (workorders.size() == 1) {
|
||||
compareWorkorderNo(workorders.get(0).getAps_workorder_no(), WorkerOrderEnum.CREATE.getCode(), workorders.get(0).getDevice_code());
|
||||
compareWorkorderNo(workorders.get(0).getAps_workorder_no(), workorders.get(0).getWorkprocedure_id(), workorders.get(0).getDevice_code());
|
||||
}
|
||||
//根据设备号和工序分组,进行下发顺序校验
|
||||
Map<String, List<PdmProduceWorkorder>> groupedWorkorders = workorders.stream().collect(Collectors.groupingBy(workorder -> workorder.getWorkprocedure_id() + "-" + workorder.getDevice_code()));
|
||||
@@ -314,7 +283,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
String deviceCode = workprocedureId.split("-")[1];
|
||||
PdmProduceWorkorder firstWorkorder = workorderList.get(0);
|
||||
//5.校验批量下发工单列表中是否存在相同工序中更小的工单下发顺序号
|
||||
compareWorkorderNo(firstWorkorder.getAps_workorder_no(), WorkerOrderEnum.CREATE.getCode(), deviceCode);
|
||||
compareWorkorderNo(firstWorkorder.getAps_workorder_no(), firstWorkorder.getWorkprocedure_id(), deviceCode);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -343,15 +312,15 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
/**
|
||||
* 校验下发工单列表中是否存在相同工序中更小的工单下发顺序号
|
||||
*/
|
||||
private void compareWorkorderNo(Integer max, String status, String deviceCode) {
|
||||
Integer minNo = this.baseMapper.getMinNo(deviceCode,status);
|
||||
if (minNo!=null){
|
||||
if (minNo == 0){
|
||||
throw new BadRequestException("设备"+deviceCode+"存在未调整的工单,请先调整在下发");
|
||||
}
|
||||
if (!Objects.equals(max, minNo)) {
|
||||
if (max > minNo) {
|
||||
throw new BadRequestException("存在下发顺序更小的工单,请优先操作该工单");
|
||||
private void compareWorkorderNo(Integer max, String workprocedureId, String deviceCode) {
|
||||
Integer min = 0;
|
||||
List<PdmProduceWorkorder> workorderList = this.list(new QueryWrapper<PdmProduceWorkorder>().eq("workprocedure_id", workprocedureId).eq("workorder_status", WorkerOrderEnum.CREATE.getCode()).eq("create_type", 3).eq("device_code", deviceCode));
|
||||
Optional<PdmProduceWorkorder> minWorkorder = workorderList.stream().min(Comparator.comparing(PdmProduceWorkorder::getAps_workorder_no));
|
||||
if (minWorkorder.isPresent()) {
|
||||
min = minWorkorder.get().getAps_workorder_no();
|
||||
if (!Objects.equals(max, min)) {
|
||||
if (max > min) {
|
||||
throw new BadRequestException("存在下发顺序更小的工单,请优先下发");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -361,26 +330,16 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
* 工单取消下发
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void unDown(List<String> ids) {
|
||||
if (ids == null || ids.size() == 0) {
|
||||
return;
|
||||
}
|
||||
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>().in("workorder_id", ids));
|
||||
boolean present = list.stream().filter(order -> !order.getWorkorder_status().equals(WorkerOrderEnum.SEND.getCode())).findAny().isPresent();
|
||||
if (present) {
|
||||
List<PdmProduceWorkorder> list = this.list(new QueryWrapper<PdmProduceWorkorder>().ne("workorder_status", WorkerOrderEnum.SEND.getCode()).in("workorder_id", ids));
|
||||
if (list.size() > 0) {
|
||||
throw new BadRequestException("只有下发状态的工单才能取消下发");
|
||||
}
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>()
|
||||
.set("workorder_status", WorkerOrderEnum.CREATE.getCode())
|
||||
.set("down_id", SecurityUtils.getCurrentUserId())
|
||||
.set("down_name", SecurityUtils.getCurrentNickName())
|
||||
.set("down_name", SecurityUtils.getCurrentNickName())
|
||||
.set("aps_workorder_no", 0)
|
||||
.in("workorder_id", ids));
|
||||
for (PdmProduceWorkorder pdmProduceWorkorder : list) {
|
||||
sortNo(pdmProduceWorkorder.getDevice_code());
|
||||
}
|
||||
this.update(new UpdateWrapper<PdmProduceWorkorder>().set("workorder_status", WorkerOrderEnum.CREATE.getCode()).set("down_id", SecurityUtils.getCurrentUserId()).set("down_name", SecurityUtils.getCurrentNickName()).set("down_time", new Date()).in("workorder_id", ids));
|
||||
this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0]));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -438,8 +397,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (!HttpStatus.OK.equals(result.get("status"))) {
|
||||
log.error((String) result.get("message"));
|
||||
}
|
||||
//强制完成后重新排序
|
||||
sortNo(pdmProduceWorkorder.getDevice_code());
|
||||
//this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id);
|
||||
}
|
||||
|
||||
|
||||
@@ -471,7 +429,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (reportList.size() > 0) {
|
||||
one = reportList.get(0);
|
||||
} else {
|
||||
throw new BadRequestException("当前工单没有生成状态的报工记录");
|
||||
throw new BadRequestException(param.getString("workorder_id") + "当前工单没有生成状态的报工记录");
|
||||
}
|
||||
//Assert.notNull(one, param.getString("workorder_id") + "当前工单没有生成状态的报工记录");
|
||||
workorder.setReport_qty(workorder.getReport_qty() == null ? BigDecimal.ZERO : workorder.getReport_qty());
|
||||
@@ -655,8 +613,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
}
|
||||
if (j == 4) {
|
||||
//设备 A1_TW_
|
||||
if (StringUtils.isNotEmpty(col)) {
|
||||
workorder.setDevice_code(col);
|
||||
String s = col.replaceAll("-", "_");
|
||||
if (StringUtils.isNotEmpty(s)) {
|
||||
workorder.setDevice_code("A1_TW_" + s);
|
||||
}
|
||||
}
|
||||
if (j == 7) {
|
||||
@@ -677,11 +636,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (j == 14) {
|
||||
workorder.setRemark(col);
|
||||
}
|
||||
if (j == 15) {
|
||||
if (!StringUtils.isEmpty(col)){
|
||||
workorder.setAps_workorder_no(Integer.valueOf(col));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isEmpty(errorMap)) {
|
||||
@@ -708,13 +662,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
errorMap.put("第" + (i + 1) + "行:", "工序名称:" + workorder.getWorkprocedure_id() + "不存在");
|
||||
} else {
|
||||
workorder.setWorkprocedure_id(workprocedure.getWorkprocedure_id());
|
||||
if (workorder.getWorkprocedure_id().equals("1535144427977314304")){
|
||||
workorder.setDevice_code("A1_TW_" + workorder.getDevice_code().replaceAll("-", "_"));
|
||||
}else if (workorder.getWorkprocedure_id().equals("1535143737330634752")){
|
||||
workorder.setDevice_code("A1_JG_" + workorder.getDevice_code().replaceAll("-", "_"));
|
||||
}else {
|
||||
errorMap.put("第" + (i + 1) + "行:", "工序名称:" + workorder.getWorkprocedure_id() + "对应设备不正确");
|
||||
}
|
||||
}
|
||||
List<MdMeMaterialbase> mdMeMaterialbases = materialspecs.get(workorder.getMaterial_id());
|
||||
if (!CollectionUtils.isEmpty(mdMeMaterialbases)) {
|
||||
@@ -736,12 +683,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (!CollectionUtils.isEmpty(errorMap)) {
|
||||
throw new BadRequestException(JSON.toJSONString(errorMap));
|
||||
} else {
|
||||
//顺序处理
|
||||
this.saveBatch(data);
|
||||
Set<String> devices = data.stream().map(PdmProduceWorkorder::getDevice_code).collect(Collectors.toSet());
|
||||
for (String device_code : devices) {
|
||||
sortNo(device_code);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -816,11 +758,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (j == 16) {
|
||||
workorder.setRemark(col);
|
||||
}
|
||||
if (j == 17) {
|
||||
if (!StringUtils.isEmpty(col)){
|
||||
workorder.setAps_workorder_no(Integer.valueOf(col));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (CollectionUtils.isEmpty(errorMap)) {
|
||||
@@ -899,10 +836,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
throw new BadRequestException(JSON.toJSONString(errorMap));
|
||||
} else {
|
||||
this.saveBatch(data);
|
||||
Set<String> devices = data.stream().map(PdmProduceWorkorder::getDevice_code).collect(Collectors.toSet());
|
||||
for (String device_code : devices) {
|
||||
sortNo(device_code);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -913,7 +846,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
workorder.setWorkorder_status(WorkerOrderEnum.CREATE.getCode());
|
||||
workorder.setIs_needmove(true);
|
||||
workorder.setIs_canupdate_update(true);
|
||||
workorder.setAps_workorder_no(0);
|
||||
workorder.setCreate_time(DateUtil.now());
|
||||
workorder.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
workorder.setCreate_name("导入订单");
|
||||
@@ -934,10 +866,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
if (ObjectUtil.isNotEmpty(result)) {
|
||||
throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!");
|
||||
}
|
||||
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>()
|
||||
.eq("workorder_id", param.getString("workorder_id")));
|
||||
compareWorkorderNo(workOrder.getAps_workorder_no(), WorkerOrderEnum.SEND.getCode(), workOrder.getDevice_code());
|
||||
|
||||
JSONArray array = new JSONArray();
|
||||
JSONObject order = packageForm(param);
|
||||
//开工时更新设备生产的物料规格
|
||||
@@ -946,7 +874,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
// .eq("device_code",order.getString("device_code")));
|
||||
array.add(order);
|
||||
//下发acs
|
||||
|
||||
PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper<PdmProduceWorkorder>().eq("workorder_id", param.getString("workorder_id")));
|
||||
workOrder.setWorkorder_status(WorkerOrderEnum.PRODUCTING.getCode());
|
||||
workOrder.setRealproducestart_date(DateUtil.now().replace("-", "/"));
|
||||
//触发APS修改指令
|
||||
@@ -1048,7 +976,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl<PdmProduceWorko
|
||||
form.put("device_code", workOrder.getDevice_code());
|
||||
form.put("is_needmove", workOrder.getIs_needmove() ? 1 : 0);
|
||||
form.put("package_ext", workOrder.getPackage_ext());
|
||||
form.put("extra_map", JSON.parseObject(workOrder.getPackage_ext()));
|
||||
if (param.containsKey("extra_map")) {
|
||||
form.put("extra_map", param.getJSONObject("extra_map"));
|
||||
}
|
||||
return form;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.nl.wms.scheduler_manage.service.cacheline;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import org.nl.wms.scheduler_manage.service.cacheline.dto.CachelinePositionDto;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
@@ -61,4 +62,11 @@ public interface CachelinePositionService {
|
||||
*/
|
||||
void deleteAll(String[] ids);
|
||||
|
||||
/**
|
||||
* 缓存线叫料出箱
|
||||
* @param materials:缓存线物料,料箱信息
|
||||
* @param handleClass:业务类
|
||||
*/
|
||||
void callOut(JSONArray materials,String handleClass);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,20 +2,29 @@ package org.nl.wms.scheduler_manage.service.cacheline.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.publish.BussEventMulticaster;
|
||||
import org.nl.common.publish.event.TaskEvent2;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.modules.wql.WQL;
|
||||
import org.nl.modules.wql.core.bean.WQLObject;
|
||||
import org.nl.modules.wql.util.WqlUtil;
|
||||
import org.nl.wms.scheduler_manage.service.cacheline.CachelinePositionService;
|
||||
import org.nl.wms.scheduler_manage.service.cacheline.dto.CachelinePositionDto;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
@@ -35,6 +44,9 @@ import cn.hutool.core.util.ObjectUtil;
|
||||
@Slf4j
|
||||
public class CachelinePositionServiceImpl implements CachelinePositionService {
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
|
||||
@Override
|
||||
public Map<String,Object> queryAll(Map whereJson, Pageable page){
|
||||
HashMap param = new HashMap();
|
||||
@@ -112,4 +124,36 @@ public class CachelinePositionServiceImpl implements CachelinePositionService {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void callOut(JSONArray materials,String handleClass) {
|
||||
List<String> list = new ArrayList<>();
|
||||
if (materials!=null && materials.size()>0){
|
||||
for (Object material : materials) {
|
||||
JSONObject cacheVehile = (JSONObject) material;
|
||||
String cacheVehile1 = cacheVehile.getString("cacheVehile");
|
||||
list.add(cacheVehile1);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 创建缓存线出箱任务起点是缓存线,终点是缓存线对接位
|
||||
*/
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_code(CodeUtil.getNewCode("task_code"));
|
||||
task.setPoint_code1("缓存线编号");
|
||||
task.setPoint_code3("缓存线编号");
|
||||
task.setTask_status(StatusEnum.TASK_CREATE.getCode());
|
||||
task.setIs_send(true);
|
||||
task.setBarcodeArr(list.stream().collect(Collectors.joining(",")));
|
||||
task.setCreate_time(new Date());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setHandle_class(handleClass);
|
||||
taskService.save(task);
|
||||
// 2.2 生成任务
|
||||
BussEventMulticaster.Publish(TaskEvent2.builder()
|
||||
.status(TaskStatusEnum.CREATED)
|
||||
.task_id(task.getTask_id())
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.nl.wms.scheduler_manage.service.extendtask.a3.FHWash;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -16,6 +17,8 @@ import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.a3.HrTransportTask;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
@@ -27,6 +30,9 @@ import org.springframework.stereotype.Service;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@@ -38,6 +44,8 @@ public class FhWashService {
|
||||
private ISchConveyorPositionService conveyorPositionService;
|
||||
@Autowired
|
||||
private HrTransportTask transportTask;
|
||||
@Autowired
|
||||
protected IMdPbStoragevehicleextService storagevehicleextService;
|
||||
|
||||
public String feeding(JSONArray params){
|
||||
if (params!=null && params.size()>0){
|
||||
@@ -64,17 +72,33 @@ public class FhWashService {
|
||||
return null;
|
||||
};
|
||||
|
||||
public String blanking(JSONObject params){
|
||||
public String blanking(JSONArray params,String storagevehicle_code){
|
||||
/**
|
||||
* 校验:完成清洗任务
|
||||
* 绑定载具物料关系
|
||||
*/
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_FINISH.getCode())
|
||||
.set("update_name",SecurityUtils.getCurrentNickName())
|
||||
.set("update_time", DateUtil.now())
|
||||
.eq("task_id",params.getString("task_id")));
|
||||
|
||||
if (params!=null && params.size()>0){
|
||||
List<SchBaseTask> tasks = params.toJavaList(SchBaseTask.class);
|
||||
Map<String, List<SchBaseTask>> groupBy = tasks.stream().collect(Collectors.groupingBy(item -> item.getMaterial_id() + item.getWorkprocedure_id()));
|
||||
if (groupBy.size()>1){
|
||||
throw new BadRequestException("清洗下料,只能选择同工序同物料的清洗中物料");
|
||||
}
|
||||
List<String> collect = tasks.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList());
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_FINISH.getCode())
|
||||
.set("update_name",SecurityUtils.getCurrentNickName())
|
||||
.set("update_time", DateUtil.now())
|
||||
.in("task_id",collect));
|
||||
int qty = tasks.stream().mapToInt(a -> a.getMaterial_qty().intValue()).sum();
|
||||
//跟新载具物料关系
|
||||
MdPbStoragevehicleext vehicleMaterial = new MdPbStoragevehicleext();
|
||||
vehicleMaterial.setStoragevehicle_code(storagevehicle_code);
|
||||
vehicleMaterial.setQty(qty);
|
||||
vehicleMaterial.setMaterial_id(tasks.get(0).getMaterial_id());
|
||||
vehicleMaterial.setWorkprocedure_id(tasks.get(0).getWorkprocedure_id());
|
||||
vehicleMaterial.setUpdate_time(DateUtil.now());
|
||||
storagevehicleextService.saveOrUpdate(vehicleMaterial);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -0,0 +1,138 @@
|
||||
package org.nl.wms.scheduler_manage.service.extendtask.a3.HBWash;
|
||||
/*
|
||||
* @author ZZQ
|
||||
* @Date 2023/7/12 21:13
|
||||
*/
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.enums.StatusEnum;
|
||||
import org.nl.common.publish.BussEventMulticaster;
|
||||
import org.nl.common.publish.event.TaskEvent2;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.common.utils.SecurityUtils;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.scheduler_manage.service.cacheline.CachelinePositionService;
|
||||
import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehicleService;
|
||||
import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehilematerialService;
|
||||
import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehicle;
|
||||
import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehilematerial;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.a3.HrTransportTask;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.staging_manage.service.conveyor.ISchConveyorPositionService;
|
||||
import org.nl.wms.staging_manage.service.conveyor.dao.SchConveyorPosition;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ZdWashService {
|
||||
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
protected IMdPbStoragevehicleextService storagevehicleextService;
|
||||
@Autowired
|
||||
private CachelinePositionService cachelinePositionService;
|
||||
@Autowired
|
||||
private ISchCachelineVehilematerialService cachelineVehicleService;
|
||||
|
||||
|
||||
|
||||
public String feeding(JSONArray params){
|
||||
if (params!=null && params.size()>0){
|
||||
cachelinePositionService.callOut(params,this.getClass().getName());
|
||||
}
|
||||
//创建任务
|
||||
return null;
|
||||
};
|
||||
|
||||
public String blanking(JSONObject params){
|
||||
JSONArray data = params.getJSONArray("data");
|
||||
/**
|
||||
* 校验:完成清洗任务
|
||||
* 绑定载具物料关系
|
||||
*/
|
||||
if (data!=null && data.size()>0){
|
||||
List<SchBaseTask> tasks = data.toJavaList(SchBaseTask.class);
|
||||
Map<String, List<SchBaseTask>> groupBy = tasks.stream().collect(Collectors.groupingBy(item -> item.getMaterial_id() + item.getWorkprocedure_id()));
|
||||
if (groupBy.size()>1){
|
||||
throw new BadRequestException("清洗下料,只能选择同工序同物料的清洗中物料");
|
||||
}
|
||||
List<String> collect = tasks.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList());
|
||||
taskService.update(new UpdateWrapper<SchBaseTask>()
|
||||
.set("task_status",StatusEnum.TASK_FINISH.getCode())
|
||||
.set("update_name",SecurityUtils.getCurrentNickName())
|
||||
.set("update_time", DateUtil.now())
|
||||
.in("task_id",collect));
|
||||
int qty = tasks.stream().mapToInt(a -> a.getMaterial_qty().intValue()).sum();
|
||||
//跟新载具物料关系
|
||||
MdPbStoragevehicleext vehicleMaterial = new MdPbStoragevehicleext();
|
||||
vehicleMaterial.setStoragevehicle_code(params.getString("vehicle_code"));
|
||||
vehicleMaterial.setQty(qty);
|
||||
vehicleMaterial.setMaterial_id(tasks.get(0).getMaterial_id());
|
||||
vehicleMaterial.setWorkprocedure_id(tasks.get(0).getWorkprocedure_id());
|
||||
vehicleMaterial.setUpdate_time(DateUtil.now());
|
||||
storagevehicleextService.saveOrUpdate(vehicleMaterial);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
public void taskOperate(JSONObject form) {
|
||||
String task_id = form.getString("task_id");
|
||||
String status = form.getString("status");
|
||||
SchBaseTask callOut = taskService.getById(task_id);
|
||||
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||
//生成清洗任务;
|
||||
String barcodeArr = callOut.getBarcodeArr();
|
||||
String[] split = barcodeArr.split(",");
|
||||
List<SchCachelineVehilematerial> cachelineVehicles = cachelineVehicleService.list(new QueryWrapper<SchCachelineVehilematerial>()
|
||||
.in("vehicle_code", split));
|
||||
if (!CollectionUtils.isEmpty(cachelineVehicles)){
|
||||
Map<String, SchCachelineVehilematerial> collect = cachelineVehicles.stream().collect(HashMap::new, (k, v) -> k.put(v.getVehicle_code(), v), HashMap::putAll);
|
||||
List<SchBaseTask> tasks = new ArrayList<>();
|
||||
for (String storagevehicle_code : split) {
|
||||
//查询物料信息
|
||||
SchCachelineVehilematerial vehilematerial = collect.get(storagevehicle_code);
|
||||
SchBaseTask task = new SchBaseTask();
|
||||
task.setTask_id(IdUtil.getStringId());
|
||||
task.setTask_name(AcsTaskEnum.TASK_WASH_FEEDING_ZD.getDesc());
|
||||
task.setTask_type(AcsTaskEnum.TASK_WASH_FEEDING_ZD.getCode());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setMaterial_id(vehilematerial.getMaterial_id());
|
||||
task.setMaterial_qty(vehilematerial.getQuantity());
|
||||
task.setWorkprocedure_id(vehilematerial.getWorkprocedure_id());
|
||||
task.setIs_delete(Boolean.FALSE);
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
task.setCreate_time(new Date());
|
||||
task.setTask_status(StatusEnum.TASK_RUNNING.getCode());
|
||||
tasks.add(task);
|
||||
}
|
||||
taskService.saveBatch(tasks);
|
||||
}
|
||||
|
||||
} else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
|
||||
|
||||
} else if(status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
|
||||
taskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.set(SchBaseTask::getTask_status,TaskStatusEnum.CANCEL.getCode())
|
||||
.eq(SchBaseTask::getTask_id,task_id ));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -51,6 +51,8 @@ public class JgWashService {
|
||||
task.setTask_type(AcsTaskEnum.TASK_WASH_FEEDING_JG.getCode());
|
||||
task.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
task.setMaterial_id(position.getMaterila_id());
|
||||
task.setMaterial_qty(position.getQty());
|
||||
task.setWorkprocedure_id(position.getWrokprocedure_id());
|
||||
task.setIs_delete(Boolean.FALSE);
|
||||
task.setCreate_id(SecurityUtils.getCurrentUserId());
|
||||
task.setCreate_name(SecurityUtils.getCurrentNickName());
|
||||
|
||||
@@ -162,7 +162,7 @@ public class SchBaseTask implements Serializable {
|
||||
/**
|
||||
* 任务完成类型
|
||||
*/
|
||||
private String finished_type;
|
||||
private String finished_type = "1";
|
||||
|
||||
/**
|
||||
* agv任务类型
|
||||
|
||||
@@ -21,6 +21,7 @@ import org.nl.wms.storage_manage.semimanagehr.service.check.IStIvtCheckmstHrBcpS
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvEmpBcpService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpInService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.impl.HrBcpProjectOutService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.moveInv.IStIvtMoveinvHrBcpService;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
@@ -107,6 +108,11 @@ public enum TASKEnum implements FunctionStrategy<String, JSONObject> {
|
||||
bean.taskOperate(form);
|
||||
}),
|
||||
|
||||
HR_BCP_TRANSPORT_OUT_TASK(type -> AcsTaskEnum.TASK_STRUCT_HR_PRODUCT_OUT.getCode().equals(type), form -> {
|
||||
HrBcpProjectOutService bean = SpringContextHolder.getBean(HrBcpProjectOutService.class);
|
||||
bean.taskOperate(form);
|
||||
}),
|
||||
|
||||
;
|
||||
|
||||
private final Predicate<String> predicate;
|
||||
|
||||
@@ -31,7 +31,7 @@ import java.util.Map;
|
||||
* @since 2023-05-10
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("cc")
|
||||
@RequestMapping("/api/bcp/hr")
|
||||
public class StIvtStructivtHrBcpController {
|
||||
|
||||
@Autowired
|
||||
|
||||
@@ -0,0 +1,216 @@
|
||||
package org.nl.wms.storage_manage.semimanagehr.service.iostorInv.impl;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
|
||||
import io.jsonwebtoken.lang.Assert;
|
||||
import org.nl.common.enums.AcsTaskEnum;
|
||||
import org.nl.common.publish.BussEventMulticaster;
|
||||
import org.nl.common.publish.event.TaskEvent2;
|
||||
import org.nl.common.utils.IdUtil;
|
||||
import org.nl.modules.common.exception.BadRequestException;
|
||||
import org.nl.modules.system.util.CodeUtil;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService;
|
||||
import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
|
||||
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
|
||||
import org.nl.wms.scheduler_manage.service.extendtask.manage.TaskStatusEnum;
|
||||
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
|
||||
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
|
||||
import org.nl.wms.storage_manage.IOSEnum;
|
||||
import org.nl.wms.storage_manage.pda.PDAEnum;
|
||||
import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtHrBcpService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.IStIvtStructivtflowHrService;
|
||||
import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.StIvtStructivtHrBcp;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
||||
/**
|
||||
* 海柔生产出库
|
||||
*/
|
||||
@Service
|
||||
public class HrBcpProjectOutService {
|
||||
|
||||
@Autowired
|
||||
private IStIvtStructivtHrBcpService structivtBcpService; // 海柔半成品服务
|
||||
@Autowired
|
||||
private IStIvtStructattrService structattrService; // 仓位服务
|
||||
@Autowired
|
||||
private ISchBaseTaskService iSchBaseTaskService; // 任务服务
|
||||
@Autowired
|
||||
private IStIvtStructivtflowHrService iStIvtStructivtflowService; // 海柔库存变动服务
|
||||
@Autowired
|
||||
protected IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
|
||||
@Autowired
|
||||
private IStIvtIostorinvOrderService iStIvtIostorinvOrderService; // 出入库顺序服务
|
||||
|
||||
|
||||
public void create(JSONObject form) {
|
||||
// "workshop_id": "A3",
|
||||
// "workprocedure_id": "1694243108683911168",
|
||||
// "is_active": true,
|
||||
// "qty_unit_id": "16",
|
||||
// "canuse_qty": 11.000,
|
||||
// "stor_id": "15286279952695336963",
|
||||
// "is_pick": true,
|
||||
// "unit_name": "个\\只",
|
||||
// "sect_code": "HKQ001",
|
||||
// "material_spec": "45CCL1 5/8-DWV",
|
||||
// "instorage_time": "2024-02-20 10:08:01",
|
||||
// "quality_scode": "01",
|
||||
// "stor_name": "紫铜三线半成品仓库",
|
||||
// "storagevehicle_code": "A000000833",
|
||||
// "struct_id": "179999804806716689",
|
||||
// "struct_name": "\t05排19列05层",
|
||||
// "material_id": "1684111111695790000",
|
||||
// "pcsn": "2024-02-20",
|
||||
// "sect_name": "三线半成品库区",
|
||||
// "unit_weight": 4.000,
|
||||
// "lock_type": "0",
|
||||
// "struct_code": "B05-19-05",
|
||||
// "material_name": "A345度等径承插口弯头45CCL1 5/8-DWVUSNA0131027",
|
||||
// "material_code": "24011401S"
|
||||
Assert.notNull(form, "参数不能为空");
|
||||
/**
|
||||
* 1.校验任务是否存在
|
||||
* 2.创建任务
|
||||
* 3.发布任务事件:是否下发
|
||||
*/
|
||||
int count = iSchBaseTaskService.count(new QueryWrapper<SchBaseTask>()
|
||||
.eq("task_type", AcsTaskEnum.TASK_STRUCT_HR_PRODUCT_OUT.getCode())
|
||||
.le("task_status", TaskStatusEnum.FINISHED.getCode()));
|
||||
if (count>4){//海柔会自己判断不会允许它放货
|
||||
throw new BadRequestException("当前出库任务过多,稍后再试");
|
||||
}
|
||||
SchBaseTask schBaseTask = new SchBaseTask();
|
||||
schBaseTask.setTask_id(IdUtil.getStringId());
|
||||
schBaseTask.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
schBaseTask.setTask_type(AcsTaskEnum.TASK_STRUCT_HR_PRODUCT_OUT.getCode());
|
||||
schBaseTask.setTask_name(AcsTaskEnum.TASK_STRUCT_HR_PRODUCT_OUT.getDesc());
|
||||
schBaseTask.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_HR_TASK.getCode());
|
||||
schBaseTask.setTask_status(TaskStatusEnum.CREATED.getCode());
|
||||
schBaseTask.setPoint_code1(form.getString("struct_code"));
|
||||
schBaseTask.setPoint_code3(PDAEnum.REGION_CODE.code("海柔半成品出库区域"));
|
||||
schBaseTask.setVehicle_code(form.getString("storagevehicle_code"));
|
||||
schBaseTask.setProduct_area(form.getString("workshop_id"));
|
||||
schBaseTask.setMaterial_id(form.getString("material_id"));
|
||||
schBaseTask.setMaterial_qty(form.getBigDecimal("canuse_qty"));
|
||||
schBaseTask.setHandle_class(this.getClass().getName());
|
||||
schBaseTask.setWorkprocedure_id(form.getString("workprocedure_id"));
|
||||
schBaseTask.setAgv_system_type(AcsTaskEnum.AGV_SYSTEM_HR.getCode());
|
||||
schBaseTask.setTask_step(1);
|
||||
schBaseTask.setTable_fk(form.getString("target"));//终点
|
||||
iSchBaseTaskService.save(schBaseTask);
|
||||
// 2.2 生成任务
|
||||
BussEventMulticaster.Publish(TaskEvent2.builder()
|
||||
.status(TaskStatusEnum.CREATED)
|
||||
.task_id(schBaseTask.getTask_id())
|
||||
.build());
|
||||
}
|
||||
public void taskOperate(JSONObject form) {
|
||||
String task_id = form.getString("task_id");
|
||||
String status = form.getString("status");
|
||||
SchBaseTask task = iSchBaseTaskService.getById(task_id);
|
||||
if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) {
|
||||
/**
|
||||
* 更新任务
|
||||
* 更新仓位跟出入库记录表
|
||||
* 生成关联任务:下发acs
|
||||
*/
|
||||
this.confirm(task);
|
||||
iSchBaseTaskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.set(SchBaseTask::getTask_status,TaskStatusEnum.FINISHED.getCode())
|
||||
.eq(SchBaseTask::getTask_id,task_id ));
|
||||
|
||||
SchBaseTask schBaseTask = new SchBaseTask();
|
||||
schBaseTask.setTask_id(IdUtil.getStringId());
|
||||
schBaseTask.setTask_code(CodeUtil.getNewCode("TASK_CODE"));
|
||||
schBaseTask.setTask_type(AcsTaskEnum.TASK_STRUCT_HR_TRANSPORT_OUT.getCode());
|
||||
schBaseTask.setTask_name(AcsTaskEnum.TASK_STRUCT_HR_TRANSPORT_OUT.getDesc());
|
||||
schBaseTask.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_HR_TASK.getCode());
|
||||
schBaseTask.setTask_status(TaskStatusEnum.CREATED.getCode());
|
||||
schBaseTask.setPoint_code1(task.getPoint_code3());
|
||||
schBaseTask.setPoint_code3(task.getTable_fk());
|
||||
schBaseTask.setVehicle_code(task.getVehicle_code());
|
||||
schBaseTask.setProduct_area(task.getProduct_area());
|
||||
schBaseTask.setMaterial_id(task.getMaterial_id());
|
||||
schBaseTask.setMaterial_qty(task.getMaterial_qty());
|
||||
schBaseTask.setWorkprocedure_id(task.getWorkprocedure_id());
|
||||
schBaseTask.setAgv_system_type(AcsTaskEnum.AGV_SYSTEM_NB.getCode());
|
||||
schBaseTask.setTask_step(2);
|
||||
schBaseTask.setTable_fk_id(task.getTask_id());
|
||||
iSchBaseTaskService.save(schBaseTask);
|
||||
|
||||
BussEventMulticaster.Publish(TaskEvent2.builder()
|
||||
.status(TaskStatusEnum.CREATED)
|
||||
.task_id(schBaseTask.getTask_id())
|
||||
.build());
|
||||
} else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) {
|
||||
|
||||
} else if(status.equals(AcsTaskEnum.STATUS_CANNEL.getCode())) {
|
||||
iSchBaseTaskService.update(
|
||||
new UpdateWrapper<SchBaseTask>().lambda()
|
||||
.set(SchBaseTask::getTask_status,TaskStatusEnum.CANCEL.getCode())
|
||||
.eq(SchBaseTask::getTask_id,task_id ));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public String confirm(SchBaseTask task) {
|
||||
StIvtStructivtHrBcp ivtDao = structivtBcpService.getOne(new QueryWrapper<StIvtStructivtHrBcp>()
|
||||
.eq("struct_code",task.getPoint_code1()));
|
||||
//删除库存
|
||||
if (ivtDao!=null){
|
||||
structivtBcpService.remove(new QueryWrapper<StIvtStructivtHrBcp>()
|
||||
.eq("struct_id", ivtDao.getStruct_id()));
|
||||
// 插入库存变动记录
|
||||
JSONObject param = JSONObject.parseObject(JSON.toJSONString(ivtDao));
|
||||
param.put("change_type", ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY);
|
||||
param.put("change_qty", ivtDao.getCanuse_qty());
|
||||
param.put("result_qty", 0);
|
||||
param.put("bill_code",task.getTask_code());
|
||||
param.put("inv_id",task.getTask_id());
|
||||
iStIvtStructivtflowService.insetIvtChange(param);
|
||||
//更新仓位
|
||||
structattrService.update(new UpdateWrapper<StIvtStructattr>().lambda()
|
||||
.eq(StIvtStructattr::getStruct_code, task.getPoint_code1())
|
||||
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
|
||||
.set(StIvtStructattr::getTask_code, "")
|
||||
.set(StIvtStructattr::getInv_code,"")
|
||||
.set(StIvtStructattr::getStoragevehicle_code, ""));
|
||||
// 更新载具扩展属性 - 释放载具对应物料关系 清空数量
|
||||
iMdPbStoragevehicleextService.update(
|
||||
new MdPbStoragevehicleext()
|
||||
.setMaterial_id("")
|
||||
.setQty(0),
|
||||
new QueryWrapper<MdPbStoragevehicleext>().lambda()
|
||||
.eq(MdPbStoragevehicleext::getStoragevehicle_code,task.getVehicle_code())
|
||||
);
|
||||
// 插入出入库顺序表
|
||||
StIvtIostorinvOrder dao = new StIvtIostorinvOrder();
|
||||
dao.setOrder_id(IdUtil.getStringId());
|
||||
dao.setWorkshop_id(PDAEnum.WORKSHOP_ID.code("智能三线车间"));
|
||||
dao.setStor_id(PDAEnum.STOR_ID.code("紫铜三线半成品仓库"));
|
||||
dao.setOut_device(task.getPoint_code3());
|
||||
dao.setBar_code(task.getVehicle_code());
|
||||
dao.setMaterial_id(task.getMaterial_id());
|
||||
dao.setSale_id("");
|
||||
dao.setWeight(task.getMaterial_qty());
|
||||
dao.setQty(task.getMaterial_qty());
|
||||
dao.setType(IOSEnum.IO_TYPE.code("出库"));
|
||||
dao.setIs_delete(false);
|
||||
dao.setCreate_time(DateUtil.now());
|
||||
dao.setBiz_date(DateUtil.today());
|
||||
dao.setWorkprocedure_id(task.getWorkprocedure_id());
|
||||
iStIvtIostorinvOrderService.save(dao);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -55,9 +55,9 @@ public class HandLoginServiceImpl implements HandLoginService {
|
||||
throw new BadRequestException("密码不能为空!");
|
||||
}
|
||||
SysUser userInfo = userService.getOne(new QueryWrapper<SysUser>().eq("username", userName));// 拿不到已经抛出异常
|
||||
// if(!SaSecureUtil.md5BySalt(userInfo.getPassword(), "salt").equals(SaSecureUtil.md5BySalt(password, "salt"))){
|
||||
// throw new BadRequestException("密码错误");
|
||||
// }
|
||||
if(!SaSecureUtil.md5BySalt(userInfo.getPassword(), "salt").equals(SaSecureUtil.md5BySalt(password, "salt"))){
|
||||
throw new BadRequestException("密码错误");
|
||||
}
|
||||
|
||||
// 获取权限列表 - 登录查找权限
|
||||
List<String> permissionList = roleService.getPermissionList(JSONObject.parseObject(JSON.toJSONString(userInfo)));
|
||||
@@ -82,8 +82,9 @@ public class HandLoginServiceImpl implements HandLoginService {
|
||||
put("token", StpUtil.getTokenValue());
|
||||
put("user", jsonObject);
|
||||
}};
|
||||
|
||||
redisUtils.set("pe-satoken", StpUtil.getTokenValue(), StpUtil.getTokenTimeout());
|
||||
return authInfo;
|
||||
return resultJson;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ spring:
|
||||
db-type: com.alibaba.druid.pool.DruidDataSource
|
||||
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
|
||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.251}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_xc}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
# url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:zjhl_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
username: ${DB_USER:root}
|
||||
password: ${DB_PWD:Root.123456}
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
server:
|
||||
port: 8011
|
||||
tomcat:
|
||||
max-threads: 300
|
||||
min-spare-threads: 30
|
||||
#配置数据源
|
||||
spring:
|
||||
datasource:
|
||||
@@ -15,7 +12,7 @@ spring:
|
||||
url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false
|
||||
username: ${DB_USER:root}
|
||||
# password: ${DB_PWD:123456}
|
||||
password: ${DB_PWD:123456}
|
||||
password: ${DB_PWD:942464Yy}
|
||||
|
||||
# 初始连接数
|
||||
initial-size: 5
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
server:
|
||||
port: 8011
|
||||
tomcat:
|
||||
max-threads: 300
|
||||
min-spare-threads: 30
|
||||
#配置数据源
|
||||
spring:
|
||||
datasource:
|
||||
|
||||
@@ -2,7 +2,7 @@ spring:
|
||||
freemarker:
|
||||
check-template-location: false
|
||||
profiles:
|
||||
active: prod
|
||||
active: dev3
|
||||
jackson:
|
||||
time-zone: GMT+8
|
||||
data:
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
|
||||
<springProfile name="dev3">
|
||||
<root level="info">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</root>
|
||||
<logger name="jdbc" level="ERROR" additivity="true">
|
||||
@@ -110,6 +111,7 @@
|
||||
<springProfile name="prod">
|
||||
<root level="info">
|
||||
<appender-ref ref="asyncLuceneAppender"/>
|
||||
<appender-ref ref="CONSOLE"/>
|
||||
</root>
|
||||
<logger name="jdbc" level="ERROR" additivity="true">
|
||||
<appender-ref ref="asyncFileAppender"/>
|
||||
|
||||
7
mes/hd/nladmin-system/src/main/resources/sql/工单看板.sql
Normal file
7
mes/hd/nladmin-system/src/main/resources/sql/工单看板.sql
Normal file
File diff suppressed because one or more lines are too long
@@ -48,7 +48,8 @@ export const filterAsyncRouter = (routers, lastRouter = false, type = false) =>
|
||||
} else if (router.component === 'ParentView') {
|
||||
router.component = ParentView
|
||||
} else {
|
||||
router.component = loadView( router.component)
|
||||
const component = router.component
|
||||
router.component = loadView(component)
|
||||
}
|
||||
}
|
||||
if (router.children != null && router.children && router.children.length) {
|
||||
|
||||
@@ -85,22 +85,22 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<rrOperation />
|
||||
<rrOperation/>
|
||||
</el-row>
|
||||
</el-form>
|
||||
</div>
|
||||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||||
<crudOperation :permission="permission">
|
||||
<!-- <el-button-->
|
||||
<!-- slot="right"-->
|
||||
<!-- class="filter-item"-->
|
||||
<!-- type="success"-->
|
||||
<!-- size="mini"-->
|
||||
<!-- icon="el-icon-check"-->
|
||||
<!-- @click="save"-->
|
||||
<!-- >-->
|
||||
<!-- 保存-->
|
||||
<!-- </el-button>-->
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
type="success"
|
||||
size="mini"
|
||||
icon="el-icon-check"
|
||||
@click="save"
|
||||
>
|
||||
保存
|
||||
</el-button>
|
||||
<el-button
|
||||
slot="right"
|
||||
class="filter-item"
|
||||
@@ -137,19 +137,19 @@
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="仓位编码" prop="struct_code">
|
||||
<el-input v-model="form.struct_code" style="width: 200px;" />
|
||||
<el-input v-model="form.struct_code" style="width: 200px;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="仓位名称" prop="struct_name">
|
||||
<el-input v-model="form.struct_name" style="width: 200px;" />
|
||||
<el-input v-model="form.struct_name" style="width: 200px;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row :gutter="20">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="仓位简称">
|
||||
<el-input v-model="form.simple_name" style="width: 200px;" />
|
||||
<el-input v-model="form.simple_name" style="width: 200px;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@@ -167,7 +167,7 @@
|
||||
<el-col :span="12">
|
||||
<el-form-item label="载具号">
|
||||
<label slot="label">载 具 号:</label>
|
||||
<el-input v-model="form.storagevehicle_code" style="width: 200px;" />
|
||||
<el-input v-model="form.storagevehicle_code" style="width: 200px;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@@ -193,12 +193,12 @@
|
||||
<el-col :span="12">
|
||||
<el-form-item label="容量" prop="capacity">
|
||||
<label slot="label">容 量:</label>
|
||||
<el-input v-model="form.capacity" style="width: 200px;" />
|
||||
<el-input v-model="form.capacity" style="width: 200px;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="承受重量" prop="weight">
|
||||
<el-input v-model="form.weight" style="width: 200px;" />
|
||||
<el-input v-model="form.weight" style="width: 200px;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -206,13 +206,13 @@
|
||||
<el-col :span="12">
|
||||
<el-form-item label="宽度" prop="width">
|
||||
<label slot="label">宽 度:</label>
|
||||
<el-input v-model="form.width" style="width: 200px;" />
|
||||
<el-input v-model="form.width" style="width: 200px;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-form-item label="深度" prop="zdepth">
|
||||
<label slot="label">深 度:</label>
|
||||
<el-input v-model="form.zdepth" style="width: 200px;" />
|
||||
<el-input v-model="form.zdepth" style="width: 200px;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -220,7 +220,7 @@
|
||||
<el-col :span="12">
|
||||
<el-form-item label="高度" prop="height">
|
||||
<label slot="label">高 度:</label>
|
||||
<el-input v-model="form.height" style="width: 200px;" />
|
||||
<el-input v-model="form.height" style="width: 200px;"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
@@ -252,7 +252,7 @@
|
||||
<el-col :span="12">
|
||||
<el-form-item label="备注">
|
||||
<label slot="label">备 注:</label>
|
||||
<el-input v-model="form.remark" style="width: 550px;" rows="2" type="textarea" />
|
||||
<el-input v-model="form.remark" style="width: 550px;" rows="2" type="textarea"/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
@@ -273,30 +273,30 @@
|
||||
@open="printFormm()"
|
||||
@close="close()"
|
||||
>
|
||||
<el-card class="box-card" shadow="never">
|
||||
<el-form ref="form" :inline="true" :model="form" size="mini" label-width="160px" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;">
|
||||
<el-form-item label="订单号" prop="pwd">
|
||||
<el-input v-model="printForm.sale_id" disabled type="text" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料编号" prop="pwd">
|
||||
<el-input v-model="printForm.material_code" disabled type="text" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="当前箱标签" prop="pwd">
|
||||
<el-input v-model="printForm.bar_code" disabled type="text" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="当前打印箱号" prop="pwd">
|
||||
<el-input v-model="printForm.print_no" type="text" style="width: 100px" />
|
||||
<el-button type="primary" @click="resetno">重置箱号</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="打印标签数量" prop="pwd">
|
||||
<el-input-number v-model="printForm.print_num" type="text" style="width: 100px" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submit">打 印</el-button>
|
||||
</span>
|
||||
<el-card class="box-card" shadow="never">
|
||||
<el-form ref="form" :inline="true" :model="form" size="mini" label-width="160px" style="border: 1px solid #cfe0df;margin-top: 10px;padding-top: 10px;">
|
||||
<el-form-item label="订单号" prop="pwd">
|
||||
<el-input v-model="printForm.sale_code" disabled type="text" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="物料编号" prop="pwd">
|
||||
<el-input v-model="printForm.material_code" disabled type="text" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="当前箱标签" prop="pwd">
|
||||
<el-input v-model="printForm.bar_code" disabled type="text" style="width: 200px" />
|
||||
</el-form-item>
|
||||
<el-form-item label="当前打印箱号" prop="pwd">
|
||||
<el-input v-model="printForm.print_no" type="text" style="width: 100px" />
|
||||
<el-button type="primary" @click="resetno">重置箱号</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="打印标签数量" prop="pwd">
|
||||
<el-input-number v-model="printForm.print_number" type="text" style="width: 100px" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-card>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button type="primary" @click="submit">打 印</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
<!--表格渲染-->
|
||||
<el-table
|
||||
@@ -310,29 +310,29 @@
|
||||
@select="handleSelectionChange"
|
||||
@select-all="onSelectAll"
|
||||
>
|
||||
<el-table-column type="selection" width="55" />
|
||||
<el-table-column prop="workorder_code" label="工单编号" width="140px" />
|
||||
<el-table-column prop="sale_id" label="订单号" width="140px" />
|
||||
<el-table-column type="selection" width="55"/>
|
||||
<el-table-column v-if="false" prop="workorder_id" label="生产班次工单标识"/>
|
||||
<el-table-column prop="workorder_code" label="工单编号" width="140px"/>
|
||||
<el-table-column prop="shift_type_scode" label="班次类型">
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.PDM_BI_SHIFTTYPE[scope.row.shift_type_scode] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column prop="workprocedure_code" label="工序编码" />-->
|
||||
<el-table-column prop="product_area" label="生产车间" />
|
||||
<el-table-column prop="plan_qty" label="计划数量" />
|
||||
<el-table-column prop="real_qty" label="实际数量" />
|
||||
<el-table-column prop="person_name" label="生产人员" />
|
||||
<el-table-column prop="person_real_qty" label="人员实际数量" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="dq_real_qty" label="电气实际数量" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="material_name" label="物料名称" width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="workprocedure_name" label="工序名称" width="120" show-overflow-tooltip />
|
||||
<el-table-column prop="material_weight" label="物料单重" width="100" :formatter="crud.formatQlNum4" />
|
||||
<el-table-column prop="planproducestart_date" label="计划开始时间" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="planproduceend_date" label="计划结束时间" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="realproducestart_date" label="实际开始时间" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="realproduceend_date" label="实际结束时间" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="device_code" label="当前设备编码" width="100" show-overflow-tooltip />
|
||||
<el-table-column prop="product_area" label="生产车间"/>
|
||||
<el-table-column prop="plan_qty" label="计划数量"/>
|
||||
<el-table-column prop="real_qty" label="实际数量"/>
|
||||
<el-table-column prop="person_name" label="生产人员"/>
|
||||
<el-table-column prop="person_real_qty" label="人员实际数量" width="100" show-overflow-tooltip/>
|
||||
<el-table-column prop="dq_real_qty" label="电气实际数量" width="100" show-overflow-tooltip/>
|
||||
<el-table-column prop="material_name" label="物料名称" width="120" show-overflow-tooltip/>
|
||||
<el-table-column prop="workprocedure_name" label="工序名称" width="120" show-overflow-tooltip/>
|
||||
<el-table-column prop="material_weight" label="物料单重" width="100" :formatter="crud.formatQlNum4"/>
|
||||
<el-table-column prop="planproducestart_date" label="计划开始时间" width="100" show-overflow-tooltip/>
|
||||
<el-table-column prop="planproduceend_date" label="计划结束时间" width="100" show-overflow-tooltip/>
|
||||
<el-table-column prop="realproducestart_date" label="实际开始时间" width="100" show-overflow-tooltip/>
|
||||
<el-table-column prop="realproduceend_date" label="实际结束时间" width="100" show-overflow-tooltip/>
|
||||
<el-table-column prop="device_code" label="当前设备编码" width="100" show-overflow-tooltip/>
|
||||
<el-table-column prop="is_canupdate_update" label="操作工是否允许修改报工数量" width="200" show-overflow-tooltip>
|
||||
<template slot-scope="scope">
|
||||
{{ dict.label.IS_OR_NOT[scope.row.is_canupdate_update] }}
|
||||
@@ -358,29 +358,29 @@
|
||||
{{ dict.label.IS_OR_NOT[scope.row.is_error] }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="error_info" label="异常信息" show-overflow-tooltip />
|
||||
<el-table-column prop="remark" label="备注" />
|
||||
<el-table-column prop="create_name" label="创建人" show-overflow-tooltip />
|
||||
<el-table-column prop="create_time" label="创建时间" show-overflow-tooltip />
|
||||
<el-table-column prop="update_name" label="修改人" show-overflow-tooltip />
|
||||
<el-table-column prop="update_time" label="修改时间" show-overflow-tooltip />
|
||||
<el-table-column prop="error_info" label="异常信息" show-overflow-tooltip/>
|
||||
<el-table-column prop="remark" label="备注"/>
|
||||
<el-table-column prop="create_name" label="创建人" show-overflow-tooltip/>
|
||||
<el-table-column prop="create_time" label="创建时间" show-overflow-tooltip/>
|
||||
<el-table-column prop="update_name" label="修改人" show-overflow-tooltip/>
|
||||
<el-table-column prop="update_time" label="修改时间" show-overflow-tooltip/>
|
||||
</el-table>
|
||||
<!--分页组件-->
|
||||
<pagination />
|
||||
<pagination/>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import crudStructattr from '@/api/wms/basedata/st/structattr'
|
||||
import CRUD, { crud, form, header, presenter } from '@crud/crud'
|
||||
import CRUD, {crud, form, header, presenter} from '@crud/crud'
|
||||
import rrOperation from '@crud/RR.operation'
|
||||
import crudOperation from '@crud/CRUD.operation'
|
||||
import udOperation from '@crud/UD.operation'
|
||||
import pagination from '@crud/Pagination'
|
||||
import crudSectattr from '@/api/wms/basedata/st/sectattr'
|
||||
import crudProduceshiftorder from '@/views/wms/product_manage/workorder/produceshiftorder'
|
||||
import { getLodop } from '@/assets/js/lodop/LodopFuncs'
|
||||
import {getLodop} from '@/assets/js/lodop/LodopFuncs'
|
||||
import orderExt from '@/views/wms/old_manage/old_package/orderExt'
|
||||
|
||||
const defaultForm = {
|
||||
@@ -431,7 +431,7 @@ const defaultForm = {
|
||||
export default {
|
||||
name: 'Structattr',
|
||||
dicts: ['ST_HEIGHT_TYPE', 'd_lock_type', 'SCH_TASK_TYPE_DTL', 'IS_OR_NOT', 'MPS_BD_ORDERSTATUS', 'WORKORDER_CREATE_TYPE', 'PDM_BI_SHIFTTYPE'],
|
||||
components: { pagination, crudOperation, rrOperation, udOperation },
|
||||
components: {pagination, crudOperation, rrOperation, udOperation},
|
||||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||||
cruds() {
|
||||
return CRUD({
|
||||
@@ -447,7 +447,7 @@ export default {
|
||||
},
|
||||
url: 'api/produceWorkorder',
|
||||
idField: 'struct_id',
|
||||
crudMethod: { ...crudStructattr }
|
||||
crudMethod: {...crudStructattr}
|
||||
})
|
||||
},
|
||||
data() {
|
||||
@@ -493,16 +493,8 @@ export default {
|
||||
val[1] = form.sect_id
|
||||
form.cascader = val
|
||||
},
|
||||
submit() {
|
||||
this.printNumber()
|
||||
},
|
||||
resetno() {
|
||||
const param = { 'sale_id': this.currentRow.sale_id, 'material_code': this.currentRow.material_code }
|
||||
orderExt.reset(param).then(res => {
|
||||
this.crud.notify('重置成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
this.dialogVisible = false
|
||||
})
|
||||
},
|
||||
submit() {},
|
||||
resetno() {},
|
||||
handleSelectionChange(val, row) {
|
||||
if (val.length > 1) {
|
||||
this.$refs.table.clearSelection()
|
||||
@@ -544,6 +536,17 @@ export default {
|
||||
return this.dict.label.SCH_TASK_TYPE_DTL[row.taskdtl_type]
|
||||
},
|
||||
startWork() {
|
||||
if (!this.crud.query.one_box_package_qty || !this.crud.query.one_package_qty || !this.crud.query.box_type ||
|
||||
!this.crud.query.target_roadway || !this.crud.query.is_flip ||
|
||||
!this.crud.query.tray_full_num) {
|
||||
this.crud.notify('缺少开工必要参数,保证输入框内不能为空!', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return
|
||||
}
|
||||
this.currentRow.extra_map = this.crud.query
|
||||
this.currentRow.extra_map.package_qty = Math.ceil(this.currentRow.plan_qty / this.currentRow.extra_map.one_package_qty)
|
||||
this.currentRow.extra_map.box_num = Math.ceil(this.currentRow.extra_map.package_qty / this.currentRow.extra_map.one_box_package_qty)
|
||||
orderExt.add(this.currentRow).then(res => {
|
||||
})
|
||||
crudProduceshiftorder.openStart(this.currentRow).then(res => {
|
||||
})
|
||||
this.crud.notify('下发成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
@@ -581,46 +584,37 @@ export default {
|
||||
this.crud.notify('保存成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||||
})
|
||||
},
|
||||
printFormm() {
|
||||
const parse = JSON.parse(this.currentRow.package_ext)
|
||||
const flip = parse.is_flip
|
||||
const target_roadway = parse.target_roadway
|
||||
const workorderCode = this.currentRow.workorder_code
|
||||
const param = { 'workorder_code': workorderCode, 'is_flip': flip, 'target_roadway': target_roadway, 'sale_id': this.currentRow.sale_id, 'material_code': this.currentRow.material_code }
|
||||
printFormm(){
|
||||
const param ={"sale_id":this.currentRow.sale_id,"material_code":this.currentRow.material_code}
|
||||
orderExt.getQuery(param).then(res => {
|
||||
this.printForm = res
|
||||
})
|
||||
},
|
||||
close() {
|
||||
this.printForm = {},
|
||||
this.dialogVisible = false
|
||||
close(){
|
||||
this.printForm = {},
|
||||
this.dialogVisible =false
|
||||
},
|
||||
print() {
|
||||
this.dialogVisible = true
|
||||
print(){
|
||||
this.dialogVisible =true
|
||||
},
|
||||
printNumber() {
|
||||
const parse = JSON.parse(this.currentRow.package_ext)
|
||||
this.currentRow.print_num = this.printForm.print_num
|
||||
this.currentRow.is_flip = parse.is_flip
|
||||
this.currentRow.target_roadway = parse.target_roadway
|
||||
printNumber(){
|
||||
orderExt.getExtList(this.currentRow).then(res => {
|
||||
if (res.length == 0 || !res) {
|
||||
this.crud.notify('该工单需要打印的箱数为0', CRUD.NOTIFICATION_TYPE.INFO)
|
||||
return
|
||||
}
|
||||
debugger
|
||||
res.forEach((item) => {
|
||||
console.log(item)
|
||||
const LODOP = getLodop()
|
||||
LODOP.SET_SHOW_MODE('HIDE_DISBUTTIN_SETUP', 1)// 隐藏那些无效按钮
|
||||
// 打印纸张大小设置https://www.it610.com/article/2094844.html
|
||||
LODOP.SET_PRINT_PAGESIZE(1, '80mm', '50mm', '')
|
||||
// LODOP.ADD_PRINT_RECT('0mm', '0mm', '48mm', '28mm', 0, 1)
|
||||
LODOP.ADD_PRINT_BARCODE('10mm', '12mm', '60mm', '25mm', '128Auto', item)
|
||||
LODOP.ADD_PRINT_BARCODE('10mm', '12mm', '60mm', '25mm', '128Auto', item.bar_code)
|
||||
LODOP.SET_PRINT_STYLEA(0, 'ShowBarText', 0)
|
||||
LODOP.ADD_PRINT_TEXT('35mm', '22mm', '40mm', '20mm', item.bar_code.substring(0, 9))
|
||||
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 20)
|
||||
LODOP.ADD_PRINT_TEXT('42mm', '25mm', '40mm', '20mm', item.bar_code.substring(9, 16))
|
||||
console.log(item.barcode)
|
||||
LODOP.SET_PRINT_STYLEA(0, 'FontSize', 20)
|
||||
LODOP.PRINT()// 打印
|
||||
// LODOP.PREVIEW()
|
||||
|
||||
@@ -22,12 +22,6 @@ export function getQuery(data) {
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
} export function reset(data) {
|
||||
return request({
|
||||
url: 'api/mpsSaleOrderIcExt/reset',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export default { add, getExtList, getQuery, reset }
|
||||
export default { add, getExtList, getQuery }
|
||||
|
||||
@@ -365,7 +365,7 @@
|
||||
clearable
|
||||
size="mini"
|
||||
style="width: 200px;"
|
||||
@change="getWorkDeviceByWorkproceduceId(form.workprocedure_id)"
|
||||
@change="getNotWorkDeviceByWorkproceduceId(form.workprocedure_id)"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in workprocedureListArea"
|
||||
@@ -391,15 +391,7 @@
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="crud.status.edit" label="工单下发顺序">
|
||||
<template slot-scope="scope">
|
||||
<el-input-number
|
||||
v-model="form.aps_workorder_no"
|
||||
style="width: 200px;"
|
||||
>
|
||||
</el-input-number>
|
||||
</template>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="销售单号">
|
||||
<template slot-scope="scope">
|
||||
<el-input
|
||||
@@ -1134,8 +1126,8 @@ export default {
|
||||
tableChanged3() {
|
||||
this.crud.toQuery()
|
||||
},
|
||||
getWorkDeviceByWorkproceduceId(workprocedure_id) { // 根据工序标识获取设备列表
|
||||
crudProduceshiftorder.getWorkDeviceByWorkproceduceId({
|
||||
getNotWorkDeviceByWorkproceduceId(workprocedure_id) { // 根据工序标识获取设备列表
|
||||
crudProduceshiftorder.getNotWorkDeviceByWorkproceduceId({
|
||||
workprocedure_id: workprocedure_id,
|
||||
product_area: this.form.product_area
|
||||
}).then(res => {
|
||||
|
||||
@@ -144,13 +144,6 @@ export function getNotWorkDeviceByWorkproceduceId(data) {
|
||||
data
|
||||
})
|
||||
}
|
||||
export function getWorkDeviceByWorkproceduceId(data) {
|
||||
return request({
|
||||
url: 'api/produceWorkorder/getWorkDeviceByWorkproceduceId',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
export function replaceDevice(data) {
|
||||
return request({
|
||||
@@ -252,7 +245,6 @@ export default {
|
||||
reportQuery3,
|
||||
excelImport,
|
||||
getNotWorkDeviceByWorkproceduceId,
|
||||
getWorkDeviceByWorkproceduceId,
|
||||
replaceDevice,
|
||||
submitAdjustWorkOrder,
|
||||
queryAdjustWorkOrder,
|
||||
|
||||
Reference in New Issue
Block a user