apt:输送线任务改成异步调用/刻字空框送回不做点位校验;

This commit is contained in:
zhangzhiqiang
2023-08-18 16:06:45 +08:00
parent 9f7789abc9
commit 54b6cccf67
7 changed files with 133 additions and 76 deletions

View File

@@ -73,4 +73,11 @@ public interface WmsToAcsService {
* @return
*/
JSONObject request(JSONObject arr,String url);
/**
* 异步入库
* @param arr
* @param url
*/
void asyncRequest(JSONObject arr,String url);
}

View File

@@ -1,17 +1,26 @@
package org.nl.wms.ext_manage.acs.service.impl;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpResponse;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.AcsUtil;
import org.nl.common.utils.AsyncHttpRequest;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.concurrent.Future;
@Service
@@ -145,5 +154,16 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
public JSONObject request(JSONObject arr, String url) {
return AcsUtil.notifyAcs(url, arr);
}
@Override
public void asyncRequest(JSONObject arr, String api) {
String isConnect = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("IS_CONNECT_ACS").getValue();
if (StrUtil.equals(StatusEnum.STATUS_FLASE.getCode(), isConnect)) {
return;
}
String acsUrl = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("acs_url").getValue();
Future<HttpResponse> execute = AsyncHttpRequest.post(acsUrl + api, arr.toString()).execute(null);
log.info("异步下发ACS参数----------------------------------------+"+acsUrl+",---"+arr.toString());
}
}

View File

@@ -6,9 +6,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.apache.commons.lang3.StringUtils;
import org.nl.common.anno.Log;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.MapOf;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.mps_manage.other.service.orderExt.IMpsSaleOrderIcExtService;
import org.nl.wms.mps_manage.other.service.orderExt.dao.MpsSaleOrderIcExt;
import org.nl.wms.mps_manage.saleorder.service.IMpsSaleOrderService;
import org.nl.wms.mps_manage.saleorder.service.dao.MpsSaleOrder;
import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
@@ -21,6 +24,7 @@ import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
* <p>
@@ -37,7 +41,7 @@ public class MpsSaleOrderIcExtController {
@Autowired
private IMpsSaleOrderIcExtService extService;
@Autowired
private IPdmProduceWorkorderService workorderService;
private IMpsSaleOrderService saleOrderService;
@PostMapping
@Log("新增订单扩展表")
@@ -51,9 +55,13 @@ public class MpsSaleOrderIcExtController {
@Log("新增订单扩展表")
//("新增订单扩展表")
public ResponseEntity<Object> query(@RequestBody JSONObject whereJson) {
MpsSaleOrderIcExt one = extService.getOne(new QueryWrapper<MpsSaleOrderIcExt>()
Map<String, Object> map = extService.getMap(new QueryWrapper<MpsSaleOrderIcExt>()
.eq("sale_id", whereJson.getString("sale_id")).eq("material_code", whereJson.getString("material_code")));
return new ResponseEntity<>(one,HttpStatus.OK);
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<>(map,HttpStatus.OK);
}
@PostMapping("/getExtList")

View File

@@ -18,6 +18,7 @@ import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.enums.AcsTaskEnum;
import org.nl.common.enums.StatusEnum;
import org.nl.common.utils.MapOf;
import org.nl.common.utils.RedissonUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.wms.ext_manage.acs.service.WmsToAcsService;
@@ -38,10 +39,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@RestController
@@ -191,14 +190,48 @@ public class TmpKZController {
@Log("手动送空框")
@SaIgnore
public ResponseEntity<Object> sendVechile(@RequestBody JSONObject param){
return new ResponseEntity<>(HttpStatus.OK);
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
@PostMapping("/kz/resend")
@Log("刻字任务重新下发")
@SaIgnore
public ResponseEntity<Object> resend(@RequestBody JSONObject param){
return new ResponseEntity<>(HttpStatus.OK);
SchBaseTask baseTask = taskService.getById(param.getString("task_id"));
if (baseTask.getTask_status().equals(StatusEnum.TASK_FINISH.getCode())){
throw new BadRequestException("任务已经完成");
};
if (baseTask.getTask_type().equals(AcsTaskEnum.TASK_Engrave_CALL.getCode())){
//下发
Map<String,String> qtyArr = JSONObject.parseObject(baseTask.getQtyArr(), Map.class);
JSONObject jo = new JSONObject();
jo.put("start_point_code", baseTask.getPoint_code1());
jo.put("task_code", baseTask.getTask_code());
jo.put("all_weight", baseTask.getMaterial_qty().intValue());
String[] to_sort_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
String[] to_devices_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
String[] to_weight_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
List<String> sort = qtyArr.keySet().stream().sorted(Comparator.comparingInt(key -> Integer.valueOf(key.substring(key.lastIndexOf("_") + 1)))).collect(Collectors.toList());
for (int i1 = 0; i1 < sort.size(); i1++) {
String key = sort.get(i1);
to_sort_array[i1] = String.valueOf(i1+1);
to_devices_array[i1] = String.valueOf(key);
to_weight_array[i1] = String.valueOf(new BigDecimal(qtyArr.get(key)));
}
jo.put("to_sort_array", Arrays.stream(to_sort_array).collect(Collectors.joining(",")));
jo.put("to_devices_array",Arrays.stream(to_devices_array).collect(Collectors.joining(",")));
jo.put("to_weight_array", Arrays.stream(to_weight_array).collect(Collectors.joining(",")));
JSONObject result = wmsToAcsService.request(jo, "api/wms/engravingIn");
if (!result.getString("status").equals("200")){
log.error("刻字上料输送线任务下发异常:{}",result.getString("message"));
baseTask.setRemark(result.getString("message"));
taskService.updateById(baseTask);
throw new BadRequestException(result.getString("message"));
}
}else {
taskService.operation(MapOf.of("method_name","immediateNotifyAcs","task_id",param.getString("task_id")));
}
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
}

View File

@@ -98,12 +98,7 @@ public class EngraveSendEmpTask extends AbstractAcsTask {
String start_point_code = param.getString("device_code");
//?刻字满料请求:可以存在多个任务?
List<SchBaseTask> list = taskService.list(new QueryWrapper<SchBaseTask>()
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
.and(wa->wa
.eq("point_code1", param.getString("device_code"))
.or()
.eq("point_code3", param.getString("device_code")))
);
.lt("task_status", StatusEnum.TASK_FINISH.getCode()).eq("task_type",AcsTaskEnum.TASK_Engrave_EMPTY.getCode()));
if (!CollectionUtils.isEmpty(list)){
throw new BadRequestException(String.format("设备%s存在未完成任务"+list.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
}

View File

@@ -42,8 +42,6 @@ public class EngraveTranSportTask extends AbstractAcsTask {
@Autowired
private ISchBaseTaskService taskService;
@Autowired
private IPdmProduceWorkorderService workorderService;
@Autowired
private IMdMeMaterialbaseService materialbaseService;
@Autowired
private WmsToAcsService wms;
@@ -94,22 +92,17 @@ public class EngraveTranSportTask extends AbstractAcsTask {
String[] to_sort_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
String[] to_devices_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
String[] to_weight_array = {"0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0", "0"};
int i=0;
List<String> sort = qtyArr.keySet().stream().sorted(Comparator.comparingInt(key -> Integer.valueOf(key.substring(key.lastIndexOf("_") + 1)))).collect(Collectors.toList());
for (int i1 = 0; i1 < sort.size(); i1++) {
String key = sort.get(i1);
to_sort_array[i] = String.valueOf(i1+1);
to_devices_array[i] = String.valueOf(key);
to_weight_array[i] = String.valueOf(new BigDecimal(qtyArr.get(key)));
to_sort_array[i1] = String.valueOf(i1+1);
to_devices_array[i1] = String.valueOf(key);
to_weight_array[i1] = String.valueOf(new BigDecimal(qtyArr.get(key)));
}
jo.put("to_sort_array", Arrays.stream(to_sort_array).collect(Collectors.joining(",")));
jo.put("to_devices_array",Arrays.stream(to_devices_array).collect(Collectors.joining(",")));
jo.put("to_weight_array", Arrays.stream(to_weight_array).collect(Collectors.joining(",")));
JSONObject result = wms.request(jo, "api/wms/engravingIn");
if (!result.getString("status").equals("200")){
log.error("刻字上料输送线任务下发异常:{}",result.getString("message"));
throw new BadRequestException(result.getString("message"));
}
wms.asyncRequest(jo, "api/wms/engravingIn");
taskService.save(baseTask);
return baseTask.getTask_id();
}catch (Exception ex){

View File

@@ -268,29 +268,34 @@
append-to-body
:visible.sync="dialogVisible"
destroy-on-close
width="400px"
width="600px"
:show-close="true"
@open="printFormm()"
@close="close()"
>
<el-form>
<el-form-item label="订单号" prop="pwd">
<el-input v-model="printForm.sale_code" type="text" style="width: 200px" />
</el-form-item>
<el-form-item label="物料编号" prop="pwd">
<el-input v-model="printForm.material_code" type="text" style="width: 200px" />
</el-form-item>
<el-form-item label="当前箱标签" prop="pwd">
<el-input v-model="printForm.bar_code" 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="submit">重置箱号</el-button>
</el-form-item>
</el-form>
<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>
<el-button type="primary" @click="submit">打 印</el-button>
</span>
</el-dialog>
<!--表格渲染-->
@@ -489,6 +494,7 @@ export default {
form.cascader = val
},
submit() {},
resetno() {},
handleSelectionChange(val, row) {
if (val.length > 1) {
this.$refs.table.clearSelection()
@@ -579,12 +585,9 @@ export default {
})
},
printFormm(){
const param ={"sale_id":this.form.sale_id,"material_code":this.form.material_code}
const param ={"sale_id":this.currentRow.sale_id,"material_code":this.currentRow.material_code}
orderExt.getQuery(param).then(res => {
if (res.length == 0 || !res) {
this.crud.notify('该工单需要打印的箱数为0', CRUD.NOTIFICATION_TYPE.INFO)
return
}
this.printForm = res
})
},
close(){
@@ -593,34 +596,32 @@ export default {
},
print(){
this.dialogVisible =true
// if (!this.currentRow.workorder_code) {
// this.crud.notify('请选择一条工单记录进行打印', CRUD.NOTIFICATION_TYPE.INFO)
// return
// }
// orderExt.getExtList(this.currentRow).then(res => {
// if (res.length == 0 || !res) {
// this.crud.notify('该工单需要打印的箱数为0', CRUD.NOTIFICATION_TYPE.INFO)
// return
// }
// res.forEach((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.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()
// })
// })
// this.crud.notify('打印成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
// this.crud.toQuery()
},
printNumber(){
orderExt.getExtList(this.currentRow).then(res => {
if (res.length == 0 || !res) {
this.crud.notify('该工单需要打印的箱数为0', CRUD.NOTIFICATION_TYPE.INFO)
return
}
res.forEach((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.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()
})
})
this.crud.notify('打印成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
},
// 改变状态
format_is_used(is_used) {