rev:半成品拼盘

This commit is contained in:
2023-06-27 14:10:12 +08:00
parent afec6749f7
commit b49adc53e6
13 changed files with 167 additions and 26 deletions

View File

@@ -33,11 +33,11 @@ public enum AcsTaskEnum {
TASK_PLOTTER_CALL_MATERIAL("14","刻字机-叫料请求"),
TASK_WARP_MAC("7","包装机-叫料出库"),
TASK_WARP_EMPTY("8","包装机-送空框"),
TASK_STRUCT_IN("9","入库-生产入库"),
TASK_STRUCT_OUT("10","出库-生产出库"),
TASK_STRUCT_CHECK("14","盘点任务"),
TASK_STRUCT_SHUT("15","拼盘任务出"),
TASK_STRUCT_SHUT_IN("16","拼盘任务入"),
TASK_STRUCT_IN("9","入库-半成品-生产入库"),
TASK_STRUCT_OUT("10","出库-半成品-生产出库"),
TASK_STRUCT_CHECK("14","半成品-盘点"),
TASK_STRUCT_SHUT("15","半成品-拼盘任务出"),
TASK_STRUCT_SHUT_IN("16","半成品-拼盘任务入"),
TASK_STRUCT_CP_IN("11","入库-成品-生产入库"),
TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"),
TASK_STRUCT_CP_CHECK("13","成品-盘点"),

View File

@@ -491,7 +491,7 @@ public class ClassstandardServiceImpl implements ClassstandardService {
@Override
public Set<String> getAllChildIdSet(String class_idStr) {
JSONArray arr = WQLObject.getWQLObject("md_pb_classstandard").query("class_id IN " + class_idStr).getResultJSONArray(0);
JSONArray arr = WQLObject.getWQLObject("md_pb_classstandard").query("class_id IN " + "('"+class_idStr+"')").getResultJSONArray(0);
Set<String> set = new HashSet<>();
for (int i = 0; i < arr.size(); i++) {
set.addAll(this.getChildIdSet(arr.getJSONObject(i).getString("class_id")));

View File

@@ -68,6 +68,13 @@ public class StIvtShutframeinvBcpController {
return new ResponseEntity<>(shutframeinvBcpService.getBillDtl(jo), HttpStatus.OK);
}
@PostMapping("/getBillDtlView")
@Log("查询拼盘详情")
@ApiOperation("查询拼盘详情")
public ResponseEntity<Object> getBillDtlView(@RequestBody JSONObject jo) {
return new ResponseEntity<>(shutframeinvBcpService.getBillDtlView(jo), HttpStatus.OK);
}
@PostMapping("/issueTask")
@Log("任务下发")
@ApiOperation("任务下发")

View File

@@ -1,9 +1,12 @@
package org.nl.wms.storage_manage.semimanage.service.check.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
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.query.QueryWrapper;
@@ -22,13 +25,18 @@ import org.nl.common.utils.MapOf;
import org.nl.common.utils.SecurityUtils;
import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext.acs.service.WmsToAcsService;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr;
import org.nl.wms.product_manage.sch.manage.TaskStatusEnum;
import org.nl.wms.scheduler_manage.service.point.ISchBasePointService;
import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint;
import org.nl.wms.scheduler_manage.service.point.dao.mapper.SchBasePointMapper;
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.CHECKEnum;
import org.nl.wms.storage_manage.semimanage.MLEnum;
import org.nl.wms.storage_manage.semimanage.service.check.IStIvtCheckdtlBcpService;
@@ -41,6 +49,7 @@ import org.nl.wms.storage_manage.semimanage.service.check.dto.CheckQuery;
import org.nl.wms.storage_manage.semimanage.service.moveOrLess.IStIvtMoreorlessmstBcpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.HashMap;
@@ -75,6 +84,8 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
private SchBasePointMapper pointMapper;
@Autowired
private ISchBasePointService pointService;
@Autowired
private ISchBaseTaskService taskService;
@Override
public Object pageQuery(CheckQuery query, PageQuery page) {
@@ -88,6 +99,7 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
}
@Override
@Transactional
public void create(JSONObject form) {
JSONArray rows = form.getJSONArray("tableData");
if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空");
@@ -107,6 +119,7 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
}
@Override
@Transactional
public void update(JSONObject form) {
Assert.notNull(new Object[]{form, form.get("check_id")}, "请求参数不能为空");
StIvtCheckmstBcp mst = form.toJavaObject(StIvtCheckmstBcp.class);
@@ -119,6 +132,7 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
}
@Override
@Transactional
public void saveCheck(JSONObject whereJson) {
JSONObject form = whereJson.getJSONObject("row");
JSONArray rows = whereJson.getJSONArray("rows");
@@ -168,6 +182,7 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
}
@Override
@Transactional
public void confirm(JSONObject whereJson) {
JSONObject form = whereJson.getJSONObject("row");
@@ -236,6 +251,7 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
@Override
@Transactional
public void process0(JSONObject whereJson) {
JSONObject form = whereJson.getJSONObject("form");
JSONObject row = whereJson.getJSONObject("row");
@@ -270,6 +286,7 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
}
@Override
@Transactional
public void issueTask(JSONObject form) {
Assert.notNull(new Object[]{form, form.get("checkdtl_id")}, "请求参数不能为空");
@@ -287,16 +304,26 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
StIvtStructattr struct = structattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("struct_id", dtl.getStruct_id()));
String task_group_id = IdUtil.getStringId();
PointEvent event = PointEvent.builder()
.type(AcsTaskEnum.TASK_STRUCT_SHUT.getCode())
.acs_task_type("7")
.type(AcsTaskEnum.TASK_STRUCT_CHECK.getCode())
.point_code1(struct.getStruct_code())
.point_code2((String) maps.get(0).get("point_code"))
.vehicle_code(dtl.getStoragevehicle_code())
.task_group_id(task_group_id)
.product_area(mst.getWorkshop_id())
.build();
BussEventMulticaster.Publish(event);
// 下发任务
List<SchBaseTask> taskList = taskService.list(
new QueryWrapper<SchBaseTask>().lambda()
.eq(SchBaseTask::getTask_group_id, task_group_id)
);
taskList.forEach(this::sendTask);
checkdtlBcpService.update(new UpdateWrapper<StIvtCheckdtlBcp>()
.set("is_down", "1")
.set("checkpoint_id", (String) maps.get(0).get("point_code"))
@@ -309,6 +336,7 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
}
@Override
@Transactional
public void taskOperate(JSONObject form) {
String task_id = form.getString("task_id");
String status = form.getString("status");
@@ -351,6 +379,7 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
}
@Override
@Transactional
public void process1(JSONObject whereJson) {
JSONObject form = whereJson.getJSONObject("form");
JSONObject row = whereJson.getJSONObject("row");
@@ -419,6 +448,7 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
}
@Override
@Transactional
public void delete(Long[] ids) {
for (Long id : ids) {
StIvtCheckmstBcp dao = this.getOne(new QueryWrapper<StIvtCheckmstBcp>().eq("check_id", id));
@@ -434,6 +464,23 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl<StIvtCheckmstBcpMap
}
}
private void sendTask(SchBaseTask taskDao) {
JSONArray param = new JSONArray();
param.add(JSON.parseObject(JSONUtil.toJsonStr(taskDao)));
// 1.下发任务
WmsToAcsService bean = SpringContextHolder.getBean(WmsToAcsService.class);
Map<String, Object> result = bean.issueTaskToAcs3(param);
// 反馈失败报错
if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) {
throw new BadRequestException("下发失败:"+MapUtil.getStr(result, "message"));
}
// 2.更新任务状态
taskDao.setTask_status(TaskStatusEnum.ISSUE.getCode());
taskService.updateById(taskDao);
}
@NotNull
private StIvtCheckmstBcp packageMstForm(StIvtCheckmstBcp checkmstYl, JSONObject whereJson) {
JSONArray rows = whereJson.getJSONArray("tableData");

View File

@@ -135,6 +135,14 @@ public class StIvtIostorinvBcpServiceImpl extends ServiceImpl<StIvtIostorinvBcpM
mst.setCreate_name(SecurityUtils.getCurrentNickName());
mst.setCreate_time(DateUtil.now());
this.save(mst);
// 更新载具扩展属性
iMdPbStoragevehicleextService.update(
new UpdateWrapper<MdPbStoragevehicleext>().lambda()
.set(MdPbStoragevehicleext::getMaterial_id, mst.getMaterial_id())
.set(MdPbStoragevehicleext::getStorage_qty, mst.getPlan_qty())
.eq(MdPbStoragevehicleext::getStoragevehicle_code, mst.getStoragevehicle_code())
);
}
}

View File

@@ -34,6 +34,8 @@ public interface IStIvtShutframeinvBcpService extends IService<StIvtShutframeinv
List<Map> getBillDtl(JSONObject jo);
List<Map> getBillDtlView(JSONObject jo);
void confirm(JSONObject jo);
void issueTask(JSONObject jo);
@@ -43,4 +45,6 @@ public interface IStIvtShutframeinvBcpService extends IService<StIvtShutframeinv
void taskOperate2(JSONObject jo);
void confirmOne(JSONObject jo);
}

View File

@@ -47,7 +47,7 @@ public class StIvtShutframedtlBcpServiceImpl extends ServiceImpl<StIvtShutframed
public int create(JSONArray rows, String shutframeinv_id) {
// 根据数量排序 默认由大到小
List<Object> list = rows.stream()
.sorted(Comparator.comparing(row -> ((JSONObject) row).getString("canuse_qty")).reversed()).collect(Collectors.toList());
.sorted(Comparator.comparing(row -> ((JSONObject) row).getDoubleValue("canuse_qty")).reversed()).collect(Collectors.toList());
rows = JSONArray.parseArray(JSON.toJSONString(list));
StIvtStructattr first_struct = null;
@@ -58,11 +58,13 @@ public class StIvtShutframedtlBcpServiceImpl extends ServiceImpl<StIvtShutframed
// 先删除在插入
this.remove(new QueryWrapper<StIvtShutframedtlBcp>().eq("shutframeinv_id", shutframeinv_id));
LinkedList<String> struct_list = new LinkedList<>();
double qty = 0;
for (int i = 0; i < rows.size(); i++) {
JSONObject row = rows.getJSONObject(i);
if (ObjectUtil.isEmpty(struct_list)) {
struct_list.addFirst(row.getString("struct_code"));
first_struct = structattrService.getOne(new QueryWrapper<StIvtStructattr>().eq("struct_code", row.getString("struct_code")));
qty = row.getDoubleValue("canuse_qty");
continue;
} else {
if (!struct_list.contains(row.getString("struct_code"))) {
@@ -93,7 +95,7 @@ public class StIvtShutframedtlBcpServiceImpl extends ServiceImpl<StIvtShutframed
dtl.setPcsn(row.getString("pcsn"));
dtl.setQty_unit_id(row.getString("qty_unit_id"));
dtl.setQty_unit_name(row.getString("qty_unit_name"));
dtl.setQty(row.getBigDecimal("canuse_qty"));
dtl.setQty(BigDecimal.valueOf(qty));
dtl.setFact_qty(row.getBigDecimal("canuse_qty"));
dtl.setUnit_weight(row.getBigDecimal("unit_weight"));
dtl.setTurnin_sect_id(first_struct.getSect_id());

View File

@@ -29,6 +29,8 @@ import org.nl.modules.common.exception.BadRequestException;
import org.nl.modules.system.util.CodeUtil;
import org.nl.modules.wql.util.SpringContextHolder;
import org.nl.wms.ext.acs.service.WmsToAcsService;
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.IStIvtBsrealstorattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService;
import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr;
@@ -87,6 +89,8 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl<StIvtShutframei
private ISchBasePointService pointService;
@Autowired
private IStIvtStructattrService iStIvtStructattrService; // 仓位属性服务
@Autowired
private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; // 载具扩展属性信息表服务
@Override
@@ -398,6 +402,21 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl<StIvtShutframei
.eq(StIvtStructattr::getStruct_id, dtl.getTurnin_struct_id())
);
// 更新扩展属性 -- 空载具
iMdPbStoragevehicleextService.update(
new UpdateWrapper<MdPbStoragevehicleext>().lambda()
.set(MdPbStoragevehicleext::getMaterial_id, "")
.set(MdPbStoragevehicleext::getStorage_qty, BigDecimal.valueOf(0))
.eq(MdPbStoragevehicleext::getStoragevehicle_code, dtl.getStoragevehicle_code())
);
// 更新扩展属性 -- 有料
iMdPbStoragevehicleextService.update(
new UpdateWrapper<MdPbStoragevehicleext>().lambda()
.set(MdPbStoragevehicleext::getStorage_qty, in_ivt.getCanuse_qty())
.eq(MdPbStoragevehicleext::getStoragevehicle_code, dtl.getStoragevehicle_code_in())
);
});
StIvtShutframeinvBcp mst = this.getById(form.getString("shutframeinv_id"));
@@ -417,14 +436,36 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl<StIvtShutframei
return ivt_list;
}
@Override
public List<Map> getBillDtlView(JSONObject jo) {
return bcpMapper.getBillDtlView(MapOf.of("shutframeinv_id", jo.getString("shutframeinv_id")));
}
@Override
@Transactional
public void delete(Long[] ids) {
for (Long id : ids) {
StIvtShutframeinvBcp dao = this.getOne(new QueryWrapper<StIvtShutframeinvBcp>().eq("shutframeinv_id", id));
dao.setIs_delete(true);
this.updateById(dao);
List<StIvtShutframedtlBcp> list = shutframedtlBcpService.list(
new QueryWrapper<StIvtShutframedtlBcp>().lambda()
.eq(StIvtShutframedtlBcp::getShutframeinv_id, dao.getShutframeinv_id())
);
// 解锁货位
iStIvtStructattrService.update(
new UpdateWrapper<StIvtStructattr>().lambda()
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(StIvtStructattr::getStruct_id, list.get(0).getTurnin_struct_id())
);
iStIvtStructattrService.update(
new UpdateWrapper<StIvtStructattr>().lambda()
.set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(StIvtStructattr::getStruct_id, list.get(0).getTurnout_struct_id())
);
}
}

View File

@@ -28,6 +28,8 @@ public interface StIvtStructivtBcpMapper extends BaseMapper<StIvtStructivtBcp> {
List<Map> getStructIvtInfo(@Param("map") Map map);
List<Map> getBillDtlView(@Param("map") Map map);
List<Map> packageQuery(@Param("query") StructIvtBcpQuery query);
}

View File

@@ -112,6 +112,25 @@
</where>
</select>
<select id="getBillDtlView" resultType="java.util.Map">
SELECT
ivt.*,
mb.material_code,
mb.material_name,
mb.material_spec,
mu.unit_name AS qty_unit_name
FROM
st_ivt_shutframedtl_bcp ivt
LEFT JOIN md_me_materialbase mb ON mb.material_id = ivt.material_id
LEFT JOIN md_pb_measureunit mu ON mu.measure_unit_id = ivt.qty_unit_id
<where>
1 = 1
<if test="map.shutframeinv_id != null and map.shutframeinv_id != ''">
and #{map.shutframeinv_id} = ivt.shutframeinv_id
</if>
</where>
</select>
<select id="packageQuery" resultType="java.util.Map">
SELECT
ivt.*,