rev:出库修改

This commit is contained in:
zhangzhiqiang
2023-07-27 11:22:23 +08:00
parent e60c8a8c0f
commit 4edcab8b9e
24 changed files with 359 additions and 182 deletions

View File

@@ -42,9 +42,9 @@ public enum AcsTaskEnum {
TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"),
TASK_STRUCT_CP_CHECK("13","-盘点"),
TASK_WASH_LACK("20","清洗机-缺料请求"),
TASK_WASH_EMP("21","清洗机-空叫空"),
TASK_WASH_EMP("21","清洗机-空框请求"),
TASK_WASH_FULL_AUTO("22","清洗机-满料请求自动"),//去半成品入库:参数不全也去异常处理位
TASK_WASH_FULL_QZ("23","清洗机-满料请求强制"),//去异常位:
TASK_WASH_FULL_QZ("23","清洗机-强制搬出"),//去异常位:
TASK_Engrave_CALL("24","刻字机上料"),
TASK_Engrave_EMPTY("25","刻字输送线-空框送回"),
TASK_POINT_TO_POINT("99","点对点搬运"),

View File

@@ -23,6 +23,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
JSONArray form = new JSONArray();
for (Object o : arr) {
JSONObject task = (JSONObject) o;
if (task.get("is_send")==null){
task.put("is_send",true);
}
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
, "task_type", task.getString("acs_task_type")//垃圾
, "task_code", task.getString("task_code")
@@ -51,6 +54,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
JSONArray form = new JSONArray();
for (Object o : arr) {
JSONObject task = (JSONObject) o;
if (task.get("is_send")==null){
task.put("is_send",true);
}
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
, "task_code", task.getString("task_code")
, "start_point_code", task.getString("point_code1")//起点
@@ -74,6 +80,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{
JSONArray form = new JSONArray();
for (Object o : arr) {
JSONObject task = (JSONObject) o;
if (task.get("is_send")==null){
task.put("is_send",true);
}
JSONObject param = new JSONObject(MapOf.of("task_id", task.getString("task_id")
, "task_code", task.getString("task_code")
, "task_group_id", task.getString("task_group_id")

View File

@@ -96,4 +96,11 @@ public class StructattrController {
public ResponseEntity<Object> getSectCascader(@RequestBody JSONObject json) {
return new ResponseEntity<>(ivtStructattrService.getSectCascader(json),HttpStatus.OK);
}
@PostMapping("/setMaterial")
@Log("修改仓位库存")
//("查询联级仓位")
public ResponseEntity<Object> setMaterial(@RequestBody JSONObject json) {
return new ResponseEntity<>(ivtStructattrService.getSectCascader(json),HttpStatus.OK);
}
}

View File

@@ -160,6 +160,7 @@ public class StIvtStructattrServiceImpl extends ServiceImpl<StIvtStructattrMappe
this.update(new UpdateWrapper<StIvtStructattr>().lambda()
.eq(StIvtStructattr::getStruct_code, struct_code)
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code(type))
.set(StIvtStructattr::getInv_code,inv_code));
.set(StIvtStructattr::getInv_code,inv_code)
.set(StIvtStructattr::getTask_code,inv_code));
}
}

View File

@@ -5,15 +5,18 @@ import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.wql.core.bean.WQLObject;
import org.nl.wms.masterdata_manage.master.service.classstandard.IMdPbClassstandardService;
import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService;
import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.mps_manage.deliveryorder.service.dao.PcsDeliveryOrder;
import org.nl.wms.mps_manage.deliveryorder.service.dao.mapper.PcsDeliveryOrderMapper;
import org.nl.wms.mps_manage.deliveryorder.service.IPcsDeliveryOrderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.wms.storage_manage.semimanage.MLEnum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -50,6 +53,10 @@ public class PcsDeliveryOrderServiceImpl extends ServiceImpl<PcsDeliveryOrderMap
order.setCreate_id(currentUserId);
order.setCreate_name(nickName);
order.setCreate_time(DateUtil.now());
order.setStatus(MLEnum.BILL_STATUS.code("生成"));
MdMeMaterialbase one = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>()
.eq("material_code", form.getString("material_code")));
order.setMaterial_id(one.getMaterial_id());
this.save(order);
}

View File

@@ -24,7 +24,7 @@ public class MpsSaleOrder implements Serializable{
/**
* 销售单标识
*/
@TableId(type = IdType.ASSIGN_ID)
@TableId
@ApiModelProperty(value = "/**销售单标识*/")
private String sale_id;
/**
@@ -194,6 +194,11 @@ public class MpsSaleOrder implements Serializable{
*/
@ApiModelProperty(value = "/**aps最早开始时间下料时间)*/")
private String early_start_time;
/**
* aps订单号
*/
@ApiModelProperty(value = "/**aps订单号 */")
private String aps_sale_code;
/**
* aps订单状态
*/

View File

@@ -39,34 +39,34 @@
</select>
<select id="queryAll" resultType="java.util.Map">
SELECT
der.*,
DATE_FORMAT(der.plandeliver_date, '%Y-%m-%d' ) AS plandeliverDate,
DATE_FORMAT(der.create_time, '%Y-%m-%d %H:%i:%s' ) AS createTime,
DATE_FORMAT(der.aps_update_time, '%Y-%m-%d %H:%i:%s' ) AS apsUpdateTime,
mater.material_name
FROM
mps_sale_order der
LEFT JOIN md_me_materialbase mater ON der.material_code = mater.material_code
<where>
der.is_delete = '0'
<if test="query.sale_code != null">
and der.sale_code = #{query.sale_code}
</if>
<if test="query.status != null">
and der.status = #{query.status}
</if>
<if test="query.sale_type != null">
and der.sale_type = #{query.sale_type}
</if>
<if test="query.cust_code != null">
and der.cust_code = #{query.cust_code}
</if>
</where>
</select>
SELECT
der.*,
DATE_FORMAT(der.plandeliver_date, '%Y-%m-%d' ) AS plandeliverDate,
DATE_FORMAT(der.create_time, '%Y-%m-%d %H:%i:%s' ) AS createTime,
DATE_FORMAT(der.aps_update_time, '%Y-%m-%d %H:%i:%s' ) AS apsUpdateTime,
mater.material_name
FROM
mps_sale_order der
LEFT JOIN md_me_materialbase mater ON der.material_code = mater.material_code
<where>
der.is_delete = '0'
<if test="query.sale_code != null">
and der.sale_code = #{query.sale_code}
</if>
<if test="query.status != null">
and der.status = #{query.status}
</if>
<if test="query.sale_type != null">
and der.sale_type = #{query.sale_type}
</if>
<if test="query.cust_code != null">
and der.cust_code = #{query.cust_code}
</if>
<if test="query.material_code != null">
and der.material_code = #{query.material_code}
</if>
</where>
</select>
<select id="getPdaMaterial" resultType="java.util.Map">
SELECT

View File

@@ -22,6 +22,8 @@ public class OrderQuery extends BaseQuery<MpsSaleOrder> {
private String cust_code;
private String material_code;
private Boolean is_delete = false;

View File

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
@@ -127,28 +128,29 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsS
@Override
@Transactional(rollbackFor = Exception.class)
public void excelImport(MultipartFile file, HttpServletRequest request) {
InputStream inputStream = null;
if(file.isEmpty()) {
Map<String, Integer> orderSeqNoMap = new HashMap<>();
List<MpsSaleOrder> data = new ArrayList<>();
Map<String, String> errorMap = new HashMap<>();
if (file.isEmpty()) {
throw new BadRequestException("文件为空,请添加数据后重新导入");
}
try {
inputStream = file.getInputStream();
try (InputStream inputStream = file.getInputStream()) {
ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0);
List<List<Object>> read = excelReader.read();
// 循环获取的数据
List<MpsSaleOrder> data = new ArrayList<>();
Map<String,String> errorMap = new HashMap();
row:
for(int i = 1; i < read.size(); i++) {
for (int i = 1; i < read.size(); i++) {
List<Object> list = read.get(i);
if(ObjectUtil.isEmpty(list)) {
continue;
}
MpsSaleOrder mpsSaleOrder = new MpsSaleOrder();
mpsSaleOrder.setSale_id(IdUtil.getStringId());
mpsSaleOrder.setSale_type("01");
mpsSaleOrder.setStatus("10");
mpsSaleOrder.setCreate_time(DateUtil.now());
mpsSaleOrder.setConfirm_time(DateUtil.now());
mpsSaleOrder.setIs_delete(0);
mpsSaleOrder.setCreate_id(SecurityUtils.getCurrentUserId());
mpsSaleOrder.setCreate_name(SecurityUtils.getCurrentUsername());
mpsSaleOrder.setAps_status("X");
@@ -156,89 +158,121 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsS
for(int j = 0; j < list.size(); j++) {
String col = null == list.get(j) ? "" : String.valueOf(list.get(j));
//存在订单编号,忽略不导入
OrderQuery orderQuery = new OrderQuery();
List<Map> saleCode = baseMapper.queryAll(orderQuery);
if(saleCode.stream().anyMatch(m -> col.equals(m.get("sale_code")))) {
continue;
// List<Map> saleCode = baseMapper.queryAll(new OrderQuery());
// if(saleCode.stream().anyMatch(m -> col.equals(m.get("sale_code")) && "10".equals(m.get("status")))) {
// continue;
// }
if(j == 0) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("销售单号不能为空");
}
mpsSaleOrder.setSale_code(col);
}
解析cell:
{
if(j == 0) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("销售单号不能为空");
}
mpsSaleOrder.setSale_code(col);
if(j == 1) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("合同号不能为空");
}
if(j == 1) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("合同号不能为空");
}
mpsSaleOrder.setContract_code(col);
//mpsSaleOrder.setAps_sale_code(mpsSaleOrder.getSale_code() + "-" + col);
mpsSaleOrder.setContract_code(col);
}
if(j == 2) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("物料编号不能为空");
}
if(j == 2) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("规格名称不能为空");
}
mpsSaleOrder.setMaterial_spec(col);
List<MdMeMaterialbase> meMaterialBases = materialbaseService.list(new QueryWrapper<MdMeMaterialbase>().like("material_spec", col));
if(CollectionUtils.isEmpty(meMaterialBases)) {
errorMap.put("" + i + "" + col, "物料规格对应物料信息不存在");
}
else{
Optional<MdMeMaterialbase> first = meMaterialBases.stream().findFirst();
first.ifPresent(mdMeMaterialbase ->
{
//物料id
mpsSaleOrder.setMaterial_id(mdMeMaterialbase.getMaterial_id());
//物料编码
mpsSaleOrder.setMaterial_code(mdMeMaterialbase.getMaterial_code());
//计量单位
mpsSaleOrder.setQty_unit_id(mdMeMaterialbase.getBase_unit_id());
});
}
MdMeMaterialbase meMaterialBases = materialbaseService.getOne(new QueryWrapper<MdMeMaterialbase>().eq("material_code", col));
if(meMaterialBases == null) {
errorMap.put("" + i + "" + col, "物料编号对应物料信息不存在");
}
if(j == 3) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("工段信息不能为空");
}
//智能一线,智能三线
mpsSaleOrder.setProduct_area(col.contains("") || col.contains("3") ? "A3" : "A1");
else{
mpsSaleOrder.setMaterial_id(meMaterialBases.getMaterial_id());
// 物料编码
mpsSaleOrder.setMaterial_code(meMaterialBases.getMaterial_code());
// 计量单位
mpsSaleOrder.setQty_unit_id(meMaterialBases.getBase_unit_id());
mpsSaleOrder.setMaterial_spec(meMaterialBases.getMaterial_spec());
}
if(j == 4) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("销售数量不能为空");
}
mpsSaleOrder.setSale_qty(BigDecimal.valueOf(Double.parseDouble(col)));
}
if(j == 3) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("物料规格不能为空");
}
if(j == 5) {
//计量单位
if(StringUtils.isNotBlank(col)) {
mpsSaleOrder.setQty_unit_name(col);
}
//规格校验?
}
if(j == 4) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("工段信息不能为空");
}
if(j == 6) {
//最早开始时间(下料时间)
if(StringUtils.isNotBlank(col)) {
mpsSaleOrder.setEarly_start_time(DateUtil.format(DateUtil.parse(col), "yyyy-MM-dd"));
}
//智能一线,智能三线
mpsSaleOrder.setProduct_area(col.contains("") || col.contains("3") ? "A3" : "A1");
}
if(j == 5) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("销售数量不能为空");
}
if(j == 7) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("订单交期不能为空");
}
mpsSaleOrder.setPlandeliver_date(String.valueOf(DateUtil.parse(col)));
BigDecimal saleQty = new BigDecimal(NumberUtils.isNumber(col) ? NumberUtils.toDouble(col) : 0);
mpsSaleOrder.setSale_qty(saleQty);
}
if(j == 6) {
//计量单位
if(StringUtils.isNotBlank(col)) {
mpsSaleOrder.setQty_unit_name(col);
}
if(j == 8) {
//备注
if(StringUtils.isNotBlank(col)) {
mpsSaleOrder.setRemark(col);
}
}
// if(j == 7) {
// //最早开始时间(下料时间)
// if(StringUtils.isNotBlank(col)) {
// mpsSaleOrder.setEarly_start_time(DateUtil.format(DateUtil.parse(col), "yyyy-MM-dd"));
// }
// }
if(j == 8) {
if(StringUtils.isBlank(col)) {
throw new BadRequestException("订单交期不能为空");
}
if(col.contains("."))
{
int currentYear = DateUtil.thisYear(); // 假设默认使用2023年份
String[] dateParts = col.split("\\.");
String month = dateParts[1];
String day = dateParts[2];
// 将提取的部分拼接成标准的日期格式"yyyy-MM-dd"
String formattedDate = currentYear + "-" + month + "-" + day;
// 使用DateUtil.parse解析日期字符串
mpsSaleOrder.setPlandeliver_date(formattedDate);
}
else{
mpsSaleOrder.setPlandeliver_date(String.valueOf(DateUtil.parse(col, "yyyy-MM-dd")));
}
}
}
// 设置明细号
String orderCode = mpsSaleOrder.getSale_code();
if(orderCode != null) {
int seqNo = orderSeqNoMap.getOrDefault(orderCode, 0) + 1;
orderSeqNoMap.put(orderCode, seqNo);
mpsSaleOrder.setSeq_no(seqNo * 100);
}
OrderQuery orderQuery =new OrderQuery();
orderQuery.setSale_code( mpsSaleOrder.getSale_code());
orderQuery.setStatus("10");
List<Map> salesOrders = baseMapper.queryAll(orderQuery);
//相同订单号
if(salesOrders.size()>0) {
List<Map> salesOrderList = salesOrders.stream().filter(m -> mpsSaleOrder.getSale_code().equals(m.get("sale_code")) && mpsSaleOrder.getMaterial_code().equals(m.get("material_code"))).collect(Collectors.toList());
if(salesOrderList.size()>0)
{
continue;
}
else
{
Map maxSeqNoOrder= salesOrders.stream()
.max(Comparator.comparingInt(m -> (int) m.get("seq_no")))
.orElse(null);
int maxSeqNoValue = (int) maxSeqNoOrder.get("seq_no");
mpsSaleOrder.setSeq_no(maxSeqNoValue+100);
}
}
mpsSaleOrder.setAps_sale_code(mpsSaleOrder.getSale_code()+"-"+mpsSaleOrder.getSeq_no());
if(CollectionUtils.isEmpty(errorMap)) {
if(null != mpsSaleOrder.getSale_code()) {
if(mpsSaleOrder.getSale_code() != null) {
data.add(mpsSaleOrder);
}
}
@@ -246,22 +280,15 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl<MpsSaleOrderMapper,MpsS
throw new BadRequestException(JSON.toJSONString(errorMap));
}
}
this.saveBatch(data);
}
catch(Exception e) {
} catch (Exception e) {
e.printStackTrace();
throw new BadRequestException(e.getMessage());
}
finally {
if(inputStream != null) {
try {
inputStream.close();
}
catch(Exception ignored) {}
}
}
}
@Override
public void update(JSONObject form) {
MpsSaleOrder mpsSaleOrder = form.toJavaObject(MpsSaleOrder.class);

View File

@@ -27,6 +27,7 @@ import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase;
import org.nl.wms.product_manage.service.device.IPdmBiDeviceService;
import org.nl.wms.product_manage.service.device.dao.PdmBiDevice;
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashMachineryTask;
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashSendMaterialQZTask;
import org.nl.wms.scheduler_manage.service.extendtask.wash.WashSendMaterialTask;
import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService;
import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask;
@@ -65,6 +66,8 @@ public class PdaWashController {
private WmsToAcsService wmsToAcsService;
@Autowired
private WashSendMaterialTask washSendMaterialTask;
@Autowired
private WashSendMaterialQZTask washSendMaterialQZTask;
@PostMapping("/specList")
@SaIgnore
@@ -262,6 +265,13 @@ public class PdaWashController {
washSendMaterialTask.createTask(query);
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
@PostMapping("/washQzFinish")
@Log("强制下料")
@SaIgnore
public ResponseEntity<Object> washQzFinish(@RequestBody JSONObject query) {
washSendMaterialQZTask.createTask(query);
return new ResponseEntity<>(TableDataInfo.build(),HttpStatus.OK);
}
@PostMapping("/washTaskFinish")

View File

@@ -37,6 +37,7 @@ import org.springframework.util.CollectionUtils;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
@@ -126,14 +127,15 @@ public class WashCallEmptyTask extends AbstractAcsTask {
JSONArray data = new JSONArray();
data.add(task);
// 下发
wms.issueTaskToAcs(data);
Map<String, Object> stringObjectMap = wms.issueTaskToAcs(data);
}, "bcpcallemp", 2);
} catch (Exception ex) {
structattrService.update(
new UpdateWrapper<StIvtStructattr>().lambda()
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(StIvtStructattr::getStruct_code, task.getString("point_code3"))
.set(StIvtStructattr::getTask_code, "")
.eq(StIvtStructattr::getStruct_code, task.getString("point_code1"))
);
log.error("刻字请求异常,error:{}",ex);
schBaseTask.setRemark(ex.getMessage());
@@ -212,6 +214,7 @@ public class WashCallEmptyTask extends AbstractAcsTask {
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setTask_group_id(org.nl.common.utils.IdUtil.getStringId());
schBaseTask.setUpdate_time(new Date());
schBaseTask.setIs_send(true);
taskService.updateById(schBaseTask);
structattrService.update(
new UpdateWrapper<StIvtStructattr>().lambda()

View File

@@ -51,6 +51,7 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
private ISchBasePointService pointService;
@Autowired
private WmsToAcsService wms;
@Override
@Transactional(rollbackFor = Exception.class)
@@ -98,22 +99,18 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject param) {
String start_point_code = param.getString("device_code");
PdmProduceWorkorder order = null;
if (StringUtils.isNotEmpty(param.getString("workorder_code"))){
order = workorderService.getOne(new QueryWrapper<PdmProduceWorkorder>()
.eq("workorder_code", param.getString("workorder_code"))// )
.eq("is_delete", false)
.lt("workorder_status", WorkerOrderEnum.COMPLETE.getCode()));
}
//?刻字满料请求:可以存在多个任务?
List<SchBaseTask> tasks = taskService.list(new QueryWrapper<SchBaseTask>()
.lt("task_status", StatusEnum.TASK_FINISH.getCode())
.eq("point_code1", param.getString("device_code"))
.eq("point_code1", "A1_CPQXJ_01_X")
);
if (!CollectionUtils.isEmpty(tasks)){
throw new BadRequestException(String.format("设备%s存在未完成任务"+tasks.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), param.getString("device_code")));
throw new BadRequestException(String.format("设备%s存在未完成任务"+tasks.stream().map(SchBaseTask::getTask_id).collect(Collectors.toList()).toString(), "A1_CPQXJ_01_X"));
}
SchBaseTask washTask = null;
String task_id = param.getString("task_id");
if (!StringUtils.isEmpty(task_id)){
washTask = taskService.getById(task_id);
}
// 查找任务状态
String taskdtl_id = IdUtil.getStringId();
@@ -123,29 +120,29 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
task.put("task_type", AcsTaskEnum.TASK_WASH_FULL_QZ.getCode());
task.put("task_code", CodeUtil.getNewCode("TASK_CODE"));
task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20.getCode());
task.put("material_id", order!=null?order.getMaterial_id():"");
task.put("material_qty", param.getBigDecimal("weight"));
task.put("material_id", washTask!=null?washTask.getMaterial_id():"");
task.put("material_qty", param.getBigDecimal("wegiht"));
task.put("vehicle_code", param.getString("vehicle_code"));
task.put("task_status", TaskStatusEnum.CREATED.getCode());
task.put("point_code1", start_point_code);
task.put("point_code1", "A1_CPQXJ_01_X");
task.put("handle_class", this.getClass().getName());
task.put("is_delete", StatusEnum.STATUS_FLASE.getCode());
String currentUserId = SecurityUtils.getCurrentUserId();
task.put("create_id", currentUserId);
task.put("create_name", SecurityUtils.getCurrentNickName());
task.put("create_time", DateUtil.now());
task.put("is_send",true);
task.put("is_auto_issue",false);
task.put("priority", "1");
task.put("finished_type", "1");
task.put("agv_system_type", AcsTaskEnum.AGV_SYSTEM_XC.getCode());
task.put("table_fk_id",order!=null?order.getWorkorder_code():"");
task.put("table_fk_id",washTask!=null?washTask.getTask_id():"");
// 去刻字缓存区寻找空位
List<SchBasePoint> list = pointService.list(new QueryWrapper<SchBasePoint>()
.eq("is_used", "1")
.eq("region_code","A1_BCP_YC")
.eq("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
.eq("lock_type", StatusEnum.LOCK_OFF.getCode())
.last("and (material_id is null or material_id = '')")
);
.eq("lock_type", StatusEnum.LOCK_OFF.getCode()));
if (CollectionUtils.isEmpty(list)) {
throw new BadRequestException("异常位没有可用货位");
}
@@ -156,7 +153,7 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
pointService.updateById(point);
// 设置点位
task.put("update_time", DateUtil.now());
task.put("point_code2",point.getPoint_code());
task.put("point_code3",point.getPoint_code());
SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class);
schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode());
schBaseTask.setTask_type(AcsTaskEnum.TASK_WASH_FULL_QZ.getCode());
@@ -174,10 +171,15 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
@Override
public void cancel(String task_id) {
SchBaseTask byId = taskService.getById(task_id);
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_CANNEL.getCode())
.set("update_name","acs")
.set("update_time",DateUtil.now()).eq("task_id",task_id));
pointService.update(new UpdateWrapper<SchBasePoint>()
.set("point_status", StatusEnum.POINT_STATUS_EMPTY.getCode())
.set("lock_type", StatusEnum.LOCK_OFF.getCode())
.eq("point_code",byId.getPoint_code3()));
}
/**
@@ -187,8 +189,6 @@ public class WashSendMaterialQZTask extends AbstractAcsTask {
@Override
@Transactional(timeout=TransactionDefinition.ISOLATION_READ_UNCOMMITTED)
public void pointConfirm(JSONObject task) {
//
}
@Override

View File

@@ -64,7 +64,7 @@ public class WashSendMaterialTask extends AbstractAcsTask {
@Override
@Transactional(rollbackFor = Exception.class)
public String createTask(JSONObject param) {
if (StringUtils.isEmpty(param.getString("weight"))||StringUtils.isEmpty(param.getString("vechile_code"))){
if (StringUtils.isEmpty(param.getString("wegiht"))||StringUtils.isEmpty(param.getString("vechile_code"))){
throw new BadRequestException("请求参数不能为空");
}
String start_point_code = "A1_CPQXJ_01_X";
@@ -85,19 +85,16 @@ public class WashSendMaterialTask extends AbstractAcsTask {
form.put("bill_type","0001");
form.put("point_code",start_point_code);
form.put("stor_id", IOSEnum.STOR_CODE.code("半成品仓库"));//半成品仓库
form.put("total_qty",param.getString("weight"));
form.put("total_qty",param.getString("wegiht"));
form.put("material_id",order.getMaterial_id());
form.put("unit_weight",byId.getNet_weight());
form.put("storagevehicle_code",param.getString("vehicle_code"));
form.put("storagevehicle_code",param.getString("vechile_code"));
form.put("product_code","A1");
form.put("auto_send",true);
JSONObject req = new JSONObject();
req.put("from",form);
pdaStBcpInService.createIn(req);
taskService.update(new UpdateWrapper<SchBaseTask>()
.set("task_status",StatusEnum.TASK_FINISH.getCode())
.set("task_step","")
.eq("task_id",param.getString("task_id")));
return "";
}

View File

@@ -3,6 +3,7 @@ package org.nl.wms.storage_manage.pda.controller;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.ApiOperation;
import org.nl.common.TableDataInfo;
import org.nl.common.anno.Log;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.storage_manage.pda.service.PdaStBcpInService;
@@ -62,7 +63,8 @@ public class PdaStBcpInController {
@Log("呼叫空载具")
//("呼叫空载具")
public ResponseEntity<Object> callVehicle() {
return new ResponseEntity<>(pdaStBcpInService.callVehicle(), HttpStatus.OK);
pdaStBcpInService.callVehicle();
return new ResponseEntity<>(TableDataInfo.build(), HttpStatus.OK);
}
@PostMapping("/createIn")

View File

@@ -48,6 +48,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* <p>
@@ -158,25 +159,21 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService {
JSONObject result = new JSONObject();
result.put("message", "下发失败");
RedissonUtils.lock(() -> {
// 1.查入库点位
SchBasePoint pointDao = iSchBasePointService.getOne(
new QueryWrapper<SchBasePoint>().lambda()
.eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("半成品入库区域"))
.eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("")), false
);
// 2.判断此入库点是否有正在执行的任务
List<SchBaseTask> taskList = iSchBaseTaskService.list(
new QueryWrapper<SchBaseTask>().lambda()
.eq(SchBaseTask::getIs_delete, false)
.ne(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.and(qr -> qr.eq(SchBaseTask::getPoint_code1, pointDao.getPoint_code())
.lt(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode())
.and(qr -> qr.eq(SchBaseTask::getPoint_code1, "A1_CPQXJ_01_X")
.or()
.eq(SchBaseTask::getPoint_code2, pointDao.getPoint_code())
.eq(SchBaseTask::getPoint_code3, "A1_CPQXJ_01_X")
)
);
if (ObjectUtil.isNotEmpty(taskList)) throw new BadRequestException("有正在执行中的任务,请稍后在尝试!");
if (ObjectUtil.isNotEmpty(taskList)) {
throw new BadRequestException("清洗下料有正在执行中的任务,请稍后在尝试!"+taskList.stream().map(SchBaseTask::getTask_code).collect(Collectors.joining(",")));
}
// 3.找一个空载具
StIvtStructattr attrDao = structattrService.getOne(
@@ -195,7 +192,7 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService {
.acs_task_type("7")
.task_group_id(IdUtil.getStringId())
.point_code1(attrDao.getStruct_code())
.point_code3(pointDao.getPoint_code())
.point_code3("A1_CPQXJ_01_X")
.vehicle_code(attrDao.getStoragevehicle_code())
.product_area("A1") // 暂时写死
.build();

View File

@@ -97,11 +97,11 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl<StIvtIostorinvdt
.eq(MpsSaleOrder::getSale_code, row.getBase_bill_code())
.eq(MpsSaleOrder::getSeq_no, row.getBase_bill_table())
);
// if (ObjectUtil.isEmpty(orderDao)) {
// throw new BadRequestException("销售单不存在!");
// }
if (ObjectUtil.isEmpty(orderDao)) {
throw new BadRequestException(row.getSource_bill_code()+"对应销售单"+row.getBase_bill_code()+"_"+row.getBase_bill_table()+"不存在!");
}
row.setBase_billdtl_id(orderDao==null?"":orderDao.getSale_id().toString());
row.setBase_billdtl_id(orderDao.getSale_id());
row.setBase_bill_code(row.getBase_bill_code());
row.setBase_bill_type(orderDao==null?"":orderDao.getSale_type());
row.setBase_bill_table(row.getBase_bill_table());

View File

@@ -21,6 +21,9 @@
<if test="sale_id != null and sale_id != ''">
and ivt.sale_id = #{sale_id}
</if>
<if test="sale_code != null and sale_code != ''">
and ivt.sale_code = #{sale_code}
</if>
order by ivt.canuse_qty ASC,ivt.struct_code ASC
</select>

View File

@@ -29,9 +29,9 @@ spring:
password: ${DB_PWD:123456}
# 初始连接数
initial-size: 30
initial-size: 10
# 最小连接数
min-idle: 30
min-idle: 10
# 最大连接数
max-active: 100
# 是否自动回收超时连接