update:大屏接口修改;混碾工单增加是否需要拆包功能;混碾下料增加是否需要拆包判断

This commit is contained in:
songxiaopeng
2024-04-19 16:51:42 +08:00
parent 920008c300
commit 803979594d
12 changed files with 218 additions and 76 deletions

View File

@@ -0,0 +1,14 @@
package org.nl.wms.cockpit.service.dao;
import lombok.Data;
/**
* @author Administrator
* 点位信息(对接位、货架)
*/
@Data
public class FjPintInfoVo {
private String pointCode;
private String materialCode;
private String materialModel;
}

View File

@@ -0,0 +1,18 @@
package org.nl.wms.cockpit.service.dao;
import lombok.Data;
/**
* @author sxp
* 出窑缓存货位点位信息
*/
@Data
public class HchjMaterialInfo {
private String pointStatus;
private String pointName;
private String pointCode;
private String materialQty;
private String materialCode;
private String materialModel;
private String instorageTime;
}

View File

@@ -11,7 +11,7 @@ public class KlMaterialInfoVo {
private String pointStatus;
private String pointName;
private String pointCode;
private String materialWeight;
private String lastStandingTime;
private String vehicleCode;
private String materialCode;
private String instorageTime;
}

View File

@@ -0,0 +1,13 @@
package org.nl.wms.cockpit.service.dao;
import lombok.Data;
/**
* @author sxp
*/
@Data
public class PressPointInfo {
private String pointCode;
private String materialCode;
private String materialModel;
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.cockpit.service.dao;
import lombok.Data;
/**
* @author sxp
* 人工分拣点位信息
*/
@Data
public class RgfjMaterialInfo {
private String pointStatus;
private String pointName;
private String pointCode;
private String materialCode;
private String materialModel;
}

View File

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.nl.config.thread.ThreadPoolExecutorUtil;
import org.nl.wms.cockpit.service.CockpitService;
import org.nl.wms.cockpit.service.dao.*;
@@ -274,13 +275,26 @@ public class CockpitServiceImpl implements CockpitService {
//压制上料位
CompletableFuture<JSONArray> yzslwPositionTask = CompletableFuture.supplyAsync(() -> {
List<PressPointInfo> yjPoints = cockPitMapper.selectYjPoint();
List<String> points = cockPitMapper.selectYzslwPoint();
if (points.isEmpty()) {
return null;
}
JSONArray param = new JSONArray(Collections.singletonList(points));
AcsResponse deviceStatus = wmsToAcsService.getDeviceStatus(param);
return ObjectUtil.isNotEmpty(deviceStatus) ? deviceStatus.getData() : param;
JSONArray data = ObjectUtil.isNotEmpty(deviceStatus) ? deviceStatus.getData() : param;
for (int i = 0; i < data.size(); i++) {
JSONObject object = data.getJSONObject(i);
object.remove("encoder_qty");
object.remove("error");
for (PressPointInfo pointInfo : yjPoints) {
String deviceCode = object.getString("device_code");
if (StringUtils.isNotEmpty(deviceCode) && pointInfo.getPointCode().equals(deviceCode.substring(0, 4))){
object.put("materialCode", pointInfo.getMaterialCode());
}
}
}
return data;
}, pool);
yzslwPositionTask.thenAccept(result -> {
map.put("YzslwPositionList", result);
@@ -301,6 +315,7 @@ public class CockpitServiceImpl implements CockpitService {
JSONArray data = ObjectUtil.isNotEmpty(deviceStatus) ? deviceStatus.getData() : param;
for (int i = 0; i < data.size(); i++) {
JSONObject jsonObject = data.getJSONObject(i);
jsonObject.remove("error");
if (jsonObject.getInteger("move") != 0
&& ObjectUtil.isNotEmpty(jsonObject.getInteger("encoder_qty"))
&& jsonObject.getInteger("encoder_qty") > 0) {
@@ -330,7 +345,7 @@ public class CockpitServiceImpl implements CockpitService {
// 压机信息显示
CompletableFuture<JSONArray> pressMachineTask = CompletableFuture.supplyAsync(() -> {
List<String> yjPoints = cockPitMapper.selectYjPoint();
List<PressPointInfo> yjPoints = cockPitMapper.selectYjPoint();
if (yjPoints.isEmpty()) {
return null;
}
@@ -343,6 +358,12 @@ public class CockpitServiceImpl implements CockpitService {
if (ObjectUtil.isNotEmpty(realQty)) {
object.put("now_capacity", realQty);
}
for (PressPointInfo yj : yjPoints) {
if (object.getString("device_code").equals(yj.getPointCode())) {
object.put("materialCode", yj.getMaterialCode());
object.put("materialModel", yj.getMaterialModel());
}
}
}
return yjData;
}, pool);
@@ -400,11 +421,11 @@ public class CockpitServiceImpl implements CockpitService {
return null;
});
//压制、分拣机械手
//分拣机械手
CompletableFuture<JSONArray> manipulatorInfoTask = CompletableFuture.supplyAsync(() -> {
List<String> jxsPoints = cockPitMapper.selectJxsPoints();
if (jxsPoints.isEmpty()) {
return null;
return null;
}
JSONArray jxsPointsParam = new JSONArray(Collections.singletonList(jxsPoints));
AcsResponse jxsStatus = wmsToAcsService.getDeviceStatus(jxsPointsParam);
@@ -434,6 +455,16 @@ public class CockpitServiceImpl implements CockpitService {
JSONArray fjcmdData = ObjectUtil.isNotEmpty(fjcmdStatus) ? fjcmdStatus.getData() : fjcmdPointsParam;
for (int i = 0; i < fjcmdData.size(); i++) {
JSONObject jsonObject = fjcmdData.getJSONObject(i);
jsonObject.remove("encoder_qty");
jsonObject.remove("error");
String deviceCode = jsonObject.getString("device_code");
if (StringUtils.isNotEmpty(deviceCode) && "FJ01".equals(deviceCode.substring(0, 4))) {
FjPintInfoVo fjPintInfoVo = cockPitMapper.selectFJJXSMaterialInfo("FJCDJXS01");
if (null != fjPintInfoVo) {
jsonObject.put("materialCode", fjPintInfoVo.getMaterialCode());
jsonObject.put("materialModel", fjPintInfoVo.getMaterialModel());
}
}
if (jsonObject.getInteger("move") != 0
&& ObjectUtil.isNotEmpty(jsonObject.getInteger("encoder_qty"))
&& jsonObject.getInteger("encoder_qty") > 0) {
@@ -462,7 +493,7 @@ public class CockpitServiceImpl implements CockpitService {
});
// 出窑缓存货架
CompletableFuture<List<PointInfoVo>> outKilnHchjTask = CompletableFuture.supplyAsync(() -> {
CompletableFuture<List<HchjMaterialInfo>> outKilnHchjTask = CompletableFuture.supplyAsync(() -> {
return cockPitMapper.selectHchjList();
}, pool);
outKilnHchjTask.thenAccept(result -> {
@@ -473,7 +504,7 @@ public class CockpitServiceImpl implements CockpitService {
return null;
});
// 人工分拣拆垛
CompletableFuture<List<PointInfoVo>> manualSortingTask = CompletableFuture.supplyAsync(() -> {
CompletableFuture<List<RgfjMaterialInfo>> manualSortingTask = CompletableFuture.supplyAsync(() -> {
return cockPitMapper.selecManualSortingList();
}, pool);
manualSortingTask.thenAccept(result -> {
@@ -531,28 +562,28 @@ public class CockpitServiceImpl implements CockpitService {
List<InOutKilnVo> res = new ArrayList<>();
for (int i = 0; i < data.size(); i++) {
JSONObject object = data.getJSONObject(i);
if ("RYHCX01".equals(object.getString("device_code"))){
if ("RYHCX01".equals(object.getString("device_code"))) {
InOutKilnVo in = cockPitMapper.selectInKilnInfo();
if (null == in) {
in = new InOutKilnVo();
}
if ("0".equals(object.getString("error"))){
if ("0".equals(object.getString("error"))) {
in.setStat("2");
}else {
} else {
in.setStat("1");
}
in.setPointName("入窑输送线");
// in.setWorkTime("3.5");
res.add(in);
}
if ("CYHCX01".equals(object.getString("device_code"))){
if ("CYHCX01".equals(object.getString("device_code"))) {
InOutKilnVo out = cockPitMapper.selectOutKilnInfo();
if (null == out) {
out = new InOutKilnVo();
}
if ("0".equals(object.getString("error"))){
if ("0".equals(object.getString("error"))) {
out.setStat("2");
}else {
} else {
out.setStat("1");
}
out.setPointName("出窑输送线");
@@ -594,4 +625,9 @@ public class CockpitServiceImpl implements CockpitService {
kilnVo.setMaterialInfos(kilnMaterialInfo);
return kilnVo;
}
public static void main(String[] args) {
String substring = "FJ01CDW01".substring(0, 4);
System.out.println(substring);
}
}

View File

@@ -42,7 +42,7 @@ public interface CockPitMapper {
List<String> selectYzPoint();
List<String> selectYjPoint();
List<PressPointInfo> selectYjPoint();
List<String> selectHnjPoints();
@@ -52,13 +52,15 @@ public interface CockPitMapper {
List<ErrorRecordVo> queryRecord();
List<PointInfoVo> selectHchjList();
List<HchjMaterialInfo> selectHchjList();
List<PointInfoVo> selecManualSortingList();
List<RgfjMaterialInfo> selecManualSortingList();
List<klInfoVo> queryKlInfoList();
List<KlMaterialInfoVo> selectKlhwInfo();
List<String> selectYzslwPoint();
FjPintInfoVo selectFJJXSMaterialInfo(String pointCode);
}

View File

@@ -166,22 +166,20 @@
</select>
<select id="selectInKilnInfo" resultType="org.nl.wms.cockpit.service.dao.InOutKilnVo">
SELECT COUNT(1) as palletNum,
sum(sbv.material_qty) as deliveredMaterialNum,
(select count(1)
from sch_base_task
SELECT COUNT(1) AS palletNum,
sum(sbv.material_qty) AS deliveredMaterialNum,
sum(CASE WHEN sbv.group_bind_material_status = '2' THEN sbv.material_qty ELSE 0 END) AS materialNum,
(SELECT count(1)
FROM sch_base_task
WHERE config_code = 'YZMLTask'
and task_status = '5'
and DATE ( create_time ) = CURDATE()) as deliveredPalletNum,
sum(sbv.material_qty) as materialNum
FROM sch_base_vehiclematerialgroup sbv
left join sch_base_point p
on p.vehicle_code = sbv.vehicle_code
WHERE sbv.group_bind_material_status = '2'
and p.point_status = '1'
and p.is_used = '1'
and p.region_code = 'RYHCX'
and DATE ( sbv.create_time ) = CURDATE()
AND task_status = '5'
AND DATE ( create_time ) = CURDATE()) AS deliveredPalletNum
FROM
sch_base_vehiclematerialgroup sbv
WHERE
sbv.point_code='RYHCX01'
AND DATE ( sbv.create_time ) = CURDATE()
</select>
<select id="selectOutKilnInfo" resultType="org.nl.wms.cockpit.service.dao.InOutKilnVo">
@@ -191,7 +189,8 @@
where config_code = 'CYHCXMLTask'
and task_status = '5'
and DATE ( create_time ) = CURDATE()) as palletNum,
sum(material_qty) as materialNum
sum(material_qty) as deliveredMaterialNum,
sum(CASE WHEN point_code = 'CYHCX01' THEN material_qty ELSE 0 END) AS materialNum
from sch_base_vehiclematerialgroup
where out_kiln_time is not null
and DATE ( create_time ) = CURDATE()
@@ -226,12 +225,18 @@
and region_code = 'YZ'
</select>
<select id="selectYjPoint" resultType="java.lang.String">
SELECT point_code AS device_code
FROM `sch_base_point`
WHERE point_type = '1'
and region_code = 'YZ'
and LENGTH(point_code) = 4
<select id="selectYjPoint" resultType="org.nl.wms.cockpit.service.dao.PressPointInfo">
SELECT p.point_code as pointCode,
m.material_code as materialCode,
m.material_model as materialModel
FROM `sch_base_point` p
LEFT JOIN pdm_bd_workorder o on p.point_code = o.point_code
LEFT JOIN md_base_material m ON o.material_id = m.material_id
WHERE p.point_type = '1'
AND p.region_code = 'YZ'
AND LENGTH(p.point_code) = 4
AND o.workorder_status = '3'
ORDER BY p.point_code
</select>
<select id="selectHnjPoints" resultType="java.lang.String">
SELECT point_code AS device_code
@@ -253,7 +258,7 @@
p.point_name as pointName,
p.point_status as pointStatus
FROM `sch_base_point` p
WHERE p.region_code in ('YZ', 'FJ')
WHERE p.region_code in ('FJ')
AND P.point_type = '1'
and LENGTH(point_code) <![CDATA[ > ]]> 4
ORDER BY p.point_code
@@ -267,50 +272,56 @@
LEFT JOIN sch_base_point p ON r.device_code = p.point_code
ORDER BY r.record_time desc limit 100
</select>
<select id="selectHchjList" resultType="org.nl.wms.cockpit.service.dao.PointInfoVo">
SELECT p.point_code as pointCode,
p.point_name as pointName,
p.point_status as pointStatus
<select id="selectHchjList" resultType="org.nl.wms.cockpit.service.dao.HchjMaterialInfo">
SELECT p.point_code AS pointCode,
p.point_name AS pointName,
p.point_status AS pointStatus,
g.material_qty AS materialQty,
g.update_time AS instorageTime,
m.material_code AS materialCode,
m.material_model AS materialModel
FROM `sch_base_point` p
WHERE p.region_code ='HCHJ'
LEFT JOIN sch_base_vehiclematerialgroup g ON p.point_code = g.point_code
AND g.group_bind_material_status = '2'
LEFT JOIN md_base_material m ON g.material_id = m.material_id
WHERE p.region_code = 'HCHJ'
ORDER BY p.point_code
</select>
<select id="selecManualSortingList" resultType="org.nl.wms.cockpit.service.dao.PointInfoVo">
SELECT p.point_code as pointCode,
p.point_name as pointName,
p.point_status as pointStatus
<select id="selecManualSortingList" resultType="org.nl.wms.cockpit.service.dao.RgfjMaterialInfo">
SELECT p.point_code AS pointCode,
p.point_name AS pointName,
p.point_status AS pointStatus,
m.material_code AS materialCode,
m.material_model AS materialModel
FROM `sch_base_point` p
WHERE p.region_code ='RGFJ'
LEFT JOIN sch_base_vehiclematerialgroup g ON p.point_code = g.point_code
AND g.group_bind_material_status = '2'
LEFT JOIN md_base_material m ON g.material_id = m.material_id
WHERE p.region_code = 'RGFJ'
ORDER BY p.point_code
</select>
<select id="queryKlInfoList" resultType="org.nl.wms.cockpit.service.dao.klInfoVo">
SELECT p.point_code as materialCode,
SELECT m.raw_material_code as materialCode,
if(sum(v.material_weight) > 0.00, sum(v.material_weight), 0.00) as weight
FROM sch_base_point P
LEFT JOIN sch_base_vehiclematerialgroup v ON p.point_code = v.point_code
left join md_base_material m on v.material_id = m.material_id
WHERE p.region_code IN ('KL')
AND p.point_code NOT LIKE ('CBJ%')
and v.group_bind_material_status = '2'
GROUP BY materialCode
ORDER BY weight desc
</select>
<select id="selectKlhwInfo" resultType="org.nl.wms.cockpit.service.dao.KlMaterialInfoVo">
SELECT p.point_code AS pointCode,
p.point_name AS pointName,
p.point_status AS pointStatus,
if(g.material_weight > 0.00, g.material_weight, 0.00) AS materialWeight,
IF
(
TIMESTAMPDIFF(
MINUTE, g.instorage_time,
NOW()) >= g.standing_time,
0,
g.standing_time - TIMESTAMPDIFF(
MINUTE, g.instorage_time,
NOW())
) AS lastStandingTime,
g.redundance_material_code as materialCode
SELECT p.point_code AS pointCode,
p.point_name AS pointName,
p.point_status AS pointStatus,
g.redundance_material_code AS materialCode,
g.vehicle_code AS vehicleCode,
g.instorage_time AS instorageTime
FROM `sch_base_point` p
LEFT JOIN sch_base_vehiclematerialgroup g ON p.point_code = g.point_code
AND g.group_bind_material_status = '2'
WHERE p.region_code = 'KL'
AND p.point_code NOT LIKE 'CBJ%'
ORDER BY p.point_code
@@ -321,5 +332,14 @@
WHERE point_type in ('3','4')
and region_code = 'YZ'
</select>
<select id="selectFJJXSMaterialInfo" resultType="org.nl.wms.cockpit.service.dao.FjPintInfoVo">
SELECT m.material_code,
m.material_model
FROM pdm_bd_workorder p
LEFT JOIN md_base_material m ON p.material_id = m.material_id
WHERE p.workorder_status = '3'
and p.point_code = #{pointCode}
limit 1
</select>
</mapper>

View File

@@ -152,6 +152,9 @@ public class PdmBdWorkorder implements Serializable {
@ApiModelProperty(value = "不合格数")
private Integer unqualified_qty;
@ApiModelProperty(value = "是否需要拆包0否1是")
private String need_unpack;
@TableField(exist = false)
private String material_name;

View File

@@ -204,19 +204,23 @@ public class HNMLTask extends AbstractTask {
endPointObj.setVehicle_type(GeneralDefinition.MATERIAL_CUP);
PointUtils.setUpdateByType(endPointObj, taskFinishedType);
pointService.updateById(endPointObj);
// 更新组盘数据
groupEntity.setPoint_code(endPointObj.getPoint_code());
groupEntity.setPoint_name(endPointObj.getPoint_name());
groupEntity.setMove_way(groupEntity.getMove_way() + " -> " + endPointObj.getPoint_code());
groupEntity.setTask_code(taskObj.getTask_code());
TaskUtils.setGroupUpdateByType(groupEntity, taskFinishedType);
vehiclematerialgroupService.updateById(groupEntity);
// 更新工单上的实际重量
// 更新混碾工单
PdmBdWorkorder workOrderObj = workorderService.getByCode(groupEntity.getWorkorder_code());
workOrderObj.setReal_weight(workOrderObj.getReal_weight().add(groupEntity.getMaterial_weight()));
TaskUtils.setWorkOrderUpdateByType(workOrderObj, taskFinishedType);
workorderService.updateById(workOrderObj);
// 更新组盘数据
groupEntity.setPoint_code(endPointObj.getPoint_code());
groupEntity.setPoint_name(endPointObj.getPoint_name());
groupEntity.setMove_way(groupEntity.getMove_way() + " -> " + endPointObj.getPoint_code());
groupEntity.setTask_code(taskObj.getTask_code());
//如果工单不需要拆包,直接设置组盘信息为已拆包
if ("0".equals(workOrderObj.getNeed_unpack())){
groupEntity.setUnpack("1");
}
TaskUtils.setGroupUpdateByType(groupEntity, taskFinishedType);
vehiclematerialgroupService.updateById(groupEntity);
// 如果终点是布料机,那就是需要将压机工单对应(新、旧)料的真实值相加
if (RegionConstant.PRESSED_AREA.equals(endPointObj.getRegion_code())) {
PdmBdWorkorder productionTask = workorderService.getDeviceDockingProductionTask(endPoint);