feat: 定时获取工单与自动下发工单,工单选择物料优化
This commit is contained in:
@@ -17,8 +17,17 @@
|
|||||||
LEFT JOIN sch_base_point p ON p.vehicle_code = vg.vehicle_code AND p.vehicle_type = vg.vehicle_type
|
LEFT JOIN sch_base_point p ON p.vehicle_code = vg.vehicle_code AND p.vehicle_type = vg.vehicle_type
|
||||||
WHERE
|
WHERE
|
||||||
vg.group_bind_material_status = '2'
|
vg.group_bind_material_status = '2'
|
||||||
AND p.region_code = 'GTPHC'
|
AND p.region_code = 'GTPHC'
|
||||||
AND p.point_status = '3'
|
AND p.point_status = '3'
|
||||||
|
<if test="query.blurry != null">
|
||||||
|
AND mm.material_code LIKE '%${query.blurry}%' OR mm.material_name LIKE '%${query.blurry}%'
|
||||||
|
</if>
|
||||||
|
<if test="query.material_spec != null">
|
||||||
|
AND mm.material_spec LIKE '%${query.material_spec}%'
|
||||||
|
</if>
|
||||||
|
<if test="query.blurry != null">
|
||||||
|
AND mm.material_model LIKE '%${query.material_model}%'
|
||||||
|
</if>
|
||||||
) SELECT
|
) SELECT
|
||||||
CTE.material_id,
|
CTE.material_id,
|
||||||
CTE.material_code,
|
CTE.material_code,
|
||||||
|
|||||||
@@ -11,4 +11,6 @@ import java.io.Serializable;
|
|||||||
@Data
|
@Data
|
||||||
public class MdBaseMaterialQuery implements Serializable {
|
public class MdBaseMaterialQuery implements Serializable {
|
||||||
private String blurry;
|
private String blurry;
|
||||||
|
private String material_spec;
|
||||||
|
private String material_model;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,11 +51,14 @@ public class MdBaseMaterialServiceImpl extends ServiceImpl<MdBaseMaterialMapper,
|
|||||||
? whereJson.get("workshop_code").toString() : null;
|
? whereJson.get("workshop_code").toString() : null;
|
||||||
String material_spec = ObjectUtil.isNotEmpty(whereJson.get("material_spec"))
|
String material_spec = ObjectUtil.isNotEmpty(whereJson.get("material_spec"))
|
||||||
? whereJson.get("material_spec").toString() : null;
|
? whereJson.get("material_spec").toString() : null;
|
||||||
|
String material_model = ObjectUtil.isNotEmpty(whereJson.get("material_model"))
|
||||||
|
? whereJson.get("material_model").toString() : null;
|
||||||
LambdaQueryWrapper<MdBaseMaterial> lam = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<MdBaseMaterial> lam = new LambdaQueryWrapper<>();
|
||||||
lam.like(ObjectUtil.isNotEmpty(blurry), MdBaseMaterial::getMaterial_code, blurry)
|
lam.like(ObjectUtil.isNotEmpty(blurry), MdBaseMaterial::getMaterial_code, blurry)
|
||||||
.or(ObjectUtil.isNotEmpty(blurry),
|
.or(ObjectUtil.isNotEmpty(blurry),
|
||||||
l -> l.like(ObjectUtil.isNotEmpty(blurry), MdBaseMaterial::getMaterial_name, blurry))
|
l -> l.like(ObjectUtil.isNotEmpty(blurry), MdBaseMaterial::getMaterial_name, blurry))
|
||||||
.like(ObjectUtil.isNotEmpty(material_spec), MdBaseMaterial::getMaterial_spec, material_spec)
|
.like(ObjectUtil.isNotEmpty(material_spec), MdBaseMaterial::getMaterial_spec, material_spec)
|
||||||
|
.like(ObjectUtil.isNotEmpty(material_model), MdBaseMaterial::getMaterial_model, material_model)
|
||||||
.eq(ObjectUtil.isNotEmpty(is_used), MdBaseMaterial::getIs_used, is_used)
|
.eq(ObjectUtil.isNotEmpty(is_used), MdBaseMaterial::getIs_used, is_used)
|
||||||
.eq(ObjectUtil.isNotEmpty(workshop_code), MdBaseMaterial::getWorkshop_code, workshop_code);
|
.eq(ObjectUtil.isNotEmpty(workshop_code), MdBaseMaterial::getWorkshop_code, workshop_code);
|
||||||
IPage<MdBaseMaterial> pages = new Page<>(page.getPage() + 1, page.getSize());
|
IPage<MdBaseMaterial> pages = new Page<>(page.getPage() + 1, page.getSize());
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
package org.nl.wms.ext.acs.autotask;
|
||||||
|
|
||||||
|
import cn.hutool.http.HttpStatus;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.system.service.notice.ISysNoticeService;
|
||||||
|
import org.nl.wms.ext.acs.service.WmsToAcsService;
|
||||||
|
import org.nl.wms.ext.acs.service.dto.to.wms.AcsResponse;
|
||||||
|
import org.nl.wms.pdm.workorder.service.IPdmBdWorkorderService;
|
||||||
|
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||||
|
import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo;
|
||||||
|
import org.nl.wms.sch.task_manage.enums.NoticeTypeEnum;
|
||||||
|
import org.nl.wms.sch.task_manage.enums.WorkOrderStatusEnum;
|
||||||
|
import org.nl.wms.util.TaskUtils;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.core.annotation.Order;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: lyd
|
||||||
|
* @Description: 自动下发工单给acs
|
||||||
|
* @Date: 2023/10/30
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@Order(value = 1)
|
||||||
|
public class AutoIssueWorkOrder {
|
||||||
|
@Autowired
|
||||||
|
private IPdmBdWorkorderService workorderService;
|
||||||
|
@Autowired
|
||||||
|
private WmsToAcsService wmsToAcsService;
|
||||||
|
@Autowired
|
||||||
|
private ISysNoticeService noticeService;
|
||||||
|
@SneakyThrows
|
||||||
|
public void run() {
|
||||||
|
// 获取未有生产中的设备号
|
||||||
|
List<String> deviceCodes = workorderService.getTheDayUnProducedDevice();
|
||||||
|
// 查找该设备未生产的工单去下发
|
||||||
|
deviceCodes.forEach(s -> {
|
||||||
|
List<AcsWorkOrderVo> acsWorkOrderVoList = workorderService.getAcsWorkOrderVos(s);
|
||||||
|
if (acsWorkOrderVoList.size() == 0) return;
|
||||||
|
AcsWorkOrderVo acsWorkOrderVo = acsWorkOrderVoList.get(0);
|
||||||
|
// 获取一个下发
|
||||||
|
List<AcsWorkOrderVo> list = new CopyOnWriteArrayList<>();
|
||||||
|
list.add(acsWorkOrderVo);
|
||||||
|
AcsResponse resultForAcs;
|
||||||
|
try {
|
||||||
|
resultForAcs = wmsToAcsService.order(list);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("工单下发异常:" + e.getMessage());
|
||||||
|
// 通知
|
||||||
|
noticeService.createNotice("工单下发失败: " + e.getMessage(), "工单下发失败: "
|
||||||
|
+ acsWorkOrderVo.getWorkorder_code(), NoticeTypeEnum.EXCEPTION.getCode());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (resultForAcs.getCode() != HttpStatus.HTTP_OK) {
|
||||||
|
// 不成功
|
||||||
|
noticeService.createNotice(resultForAcs.getMessage(), "工单下发失败: " + acsWorkOrderVo.getWorkorder_code(),
|
||||||
|
NoticeTypeEnum.EXCEPTION.getCode());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// 修改工单数据
|
||||||
|
PdmBdWorkorder pdmBdWorkorder = workorderService.getByCode(acsWorkOrderVo.getWorkorder_code());
|
||||||
|
pdmBdWorkorder.setWorkorder_status(WorkOrderStatusEnum.ISSUED.getCode());
|
||||||
|
TaskUtils.setWorkOrderUpdateByAcs(pdmBdWorkorder);
|
||||||
|
workorderService.updateById(pdmBdWorkorder);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package org.nl.wms.ext.mes.autotask;
|
||||||
|
|
||||||
|
import lombok.SneakyThrows;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nl.wms.ext.mes.service.WmsToMesService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.core.annotation.Order;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @Author: lyd
|
||||||
|
* @Description: 自动同步工单
|
||||||
|
* @Date: 2023/10/30
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@Order(value = 1)
|
||||||
|
public class AutoSynWorkOrderInfo {
|
||||||
|
@Autowired
|
||||||
|
private WmsToMesService wmsToMesService;
|
||||||
|
@SneakyThrows
|
||||||
|
public void run() {
|
||||||
|
wmsToMesService.synchronizeWorkOrderInfo();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -72,12 +72,13 @@ public class WmsToMesServiceImpl implements WmsToMesService {
|
|||||||
public void synchronizeMaterialInfo() {
|
public void synchronizeMaterialInfo() {
|
||||||
log.info("同步物料开始");
|
log.info("同步物料开始");
|
||||||
// 获取lms数据库中的最后获取时间
|
// 获取lms数据库中的最后获取时间
|
||||||
LambdaQueryWrapper<MdBaseMaterial> lmsMaterialTabQuery = new QueryWrapper<MdBaseMaterial>().lambda();
|
// LambdaQueryWrapper<MdBaseMaterial> lmsMaterialTabQuery = new QueryWrapper<MdBaseMaterial>().lambda();
|
||||||
lmsMaterialTabQuery.isNotNull(MdBaseMaterial::getExt_id).ne(MdBaseMaterial::getExt_id, "")
|
// lmsMaterialTabQuery.isNotNull(MdBaseMaterial::getExt_id).ne(MdBaseMaterial::getExt_id, "")
|
||||||
.orderByDesc(MdBaseMaterial::getExt_time);
|
// .orderByDesc(MdBaseMaterial::getExt_time);
|
||||||
List<MdBaseMaterial> mdBaseMaterials = mdBaseMaterialService.list(lmsMaterialTabQuery);
|
// List<MdBaseMaterial> mdBaseMaterials = mdBaseMaterialService.list(lmsMaterialTabQuery);
|
||||||
String time = mdBaseMaterials.size() > 0 ? mdBaseMaterials.get(0).getExt_time() : "1970-01-01 00:00:00";
|
// String time = mdBaseMaterials.size() > 0 ? mdBaseMaterials.get(0).getExt_time() : "1970-01-01 00:00:00";
|
||||||
log.info("上次更新同步时间:{}", time);
|
String time = "1970-01-01 00:00:00";
|
||||||
|
// log.info("上次更新同步时间:{}", time);
|
||||||
// 获取mes的物料数据
|
// 获取mes的物料数据
|
||||||
List<MdBaseMaterial> materials = mesRequestMapper.getMesMaterialInfos(time);
|
List<MdBaseMaterial> materials = mesRequestMapper.getMesMaterialInfos(time);
|
||||||
if (materials.size() == 0) {
|
if (materials.size() == 0) {
|
||||||
|
|||||||
@@ -137,7 +137,7 @@
|
|||||||
mm.material_model
|
mm.material_model
|
||||||
FROM
|
FROM
|
||||||
`md_base_material` mm
|
`md_base_material` mm
|
||||||
WHERE mm.material_code LIKE '%${material_code}%' OR mm.material_name LIKE '%ss%'
|
WHERE mm.material_code LIKE '%${material_code}%' OR mm.material_name LIKE '%${material_code}%'
|
||||||
</select>
|
</select>
|
||||||
<select id="getAllPressPoint" resultType="org.nl.wms.pda.service.dao.vo.DropdownListVo">
|
<select id="getAllPressPoint" resultType="org.nl.wms.pda.service.dao.vo.DropdownListVo">
|
||||||
SELECT
|
SELECT
|
||||||
|
|||||||
@@ -5,8 +5,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
|||||||
import org.nl.common.domain.query.PageQuery;
|
import org.nl.common.domain.query.PageQuery;
|
||||||
import org.nl.wms.ext.mes.service.dto.MesOrderInfo;
|
import org.nl.wms.ext.mes.service.dto.MesOrderInfo;
|
||||||
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
||||||
|
import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo;
|
||||||
import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery;
|
import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
@@ -79,4 +81,29 @@ public interface IPdmBdWorkorderService extends IService<PdmBdWorkorder> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
boolean isEnoughCallEmpty(String deviceCode);
|
boolean isEnoughCallEmpty(String deviceCode);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当天未生产的工单
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<PdmBdWorkorder> getTheDayUnProducedWorkOrder();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当天需要下发的工单
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<PdmBdWorkorder> getTheDayIssueWorkOrderList();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取未生产的设备
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<String> getTheDayUnProducedDevice();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前设备、未生产的工单
|
||||||
|
* @param s
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<AcsWorkOrderVo> getAcsWorkOrderVos(String s);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder;
|
|||||||
import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo;
|
import org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo;
|
||||||
import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery;
|
import org.nl.wms.pdm.workorder.service.dto.PdmBdWorkorderQuery;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lyd
|
* @author lyd
|
||||||
* @date 2023-05-05
|
* @date 2023-05-05
|
||||||
@@ -20,4 +22,29 @@ public interface PdmBdWorkorderMapper extends BaseMapper<PdmBdWorkorder> {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
AcsWorkOrderVo toAcsWorkOrderById(String workorderId);
|
AcsWorkOrderVo toAcsWorkOrderById(String workorderId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询当前工单数据、未生产、计划开始时间排序
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<PdmBdWorkorder> getTheDayUnProducedWorkOrder();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* todo: 获取当天需要下发的工单
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<PdmBdWorkorder> getTheDayIssueWorkOrderList();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取未生产的设备
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<String> getTheDayUnProducedDevice();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取设备未生产的工单
|
||||||
|
* @param s
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<AcsWorkOrderVo> getAcsWorkOrderVos(String device);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,24 +36,85 @@
|
|||||||
w.point_code AS device_code,
|
w.point_code AS device_code,
|
||||||
w.plan_qty,
|
w.plan_qty,
|
||||||
m.half_material_code AS material_code,
|
m.half_material_code AS material_code,
|
||||||
1 AS product_code,
|
m.material_spec AS product_code,
|
||||||
m.material_spec AS brick_code,
|
m.material_spec AS brick_code,
|
||||||
"配方" AS formula,
|
m.material_model AS formula,
|
||||||
0 AS a,
|
IF(LENGTH(m.a_long_side) > 0,m.a_long_side,0) AS a,
|
||||||
0 AS b,
|
IF(LENGTH(m.b_short_side) > 0,m.b_short_side,0) AS b,
|
||||||
0 AS h,
|
IF(LENGTH(m.h_height) > 0,m.h_height,0) AS h,
|
||||||
0 AS w,
|
IF(LENGTH(m.w_thickness) > 0,m.w_thickness,0) AS w,
|
||||||
0 AS size_error,
|
0 AS size_error,
|
||||||
0 AS single_weight,
|
0 AS single_weight,
|
||||||
0 AS standard_size_height1,
|
IF(LENGTH(m.standard_size_height1)>0,m.standard_size_height1,0) AS standard_size_height1,
|
||||||
0 AS standard_size_height2,
|
IF(LENGTH(m.standard_size_height2)>0,m.standard_size_height2,0) AS standard_size_height2,
|
||||||
0 AS standard_size_height3,
|
IF(LENGTH(m.standard_size_height3)>0,m.standard_size_height3,0) AS standard_size_height3,
|
||||||
0 AS standard_size_height4,
|
IF(LENGTH(m.standard_size_height4)>0,m.standard_size_height4,0) AS standard_size_height4,
|
||||||
0 AS standard_weight,
|
IF(LENGTH(m.single_weight)>0,m.single_weight,0) AS standard_weight,
|
||||||
0 AS detection_error
|
0 AS detection_error
|
||||||
FROM
|
FROM
|
||||||
`pdm_bd_workorder` w
|
`pdm_bd_workorder` w
|
||||||
LEFT JOIN md_base_material m ON m.material_id = w.material_id
|
LEFT JOIN md_base_material m ON m.material_id = w.material_id
|
||||||
WHERE w.workorder_id = #{workorderId}
|
WHERE w.workorder_id = #{workorderId}
|
||||||
</select>
|
</select>
|
||||||
|
<select id="getTheDayUnProducedWorkOrder" resultType="org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder">
|
||||||
|
SELECT *
|
||||||
|
FROM pdm_bd_workorder
|
||||||
|
WHERE workorder_status = '1' AND produce_date = CURDATE()
|
||||||
|
ORDER BY planproducestart_date
|
||||||
|
|
||||||
|
</select>
|
||||||
|
<select id="getTheDayIssueWorkOrderList" resultType="org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder">
|
||||||
|
SELECT pw.*
|
||||||
|
FROM pdm_bd_workorder pw
|
||||||
|
WHERE pw.point_code IN (
|
||||||
|
SELECT
|
||||||
|
p.point_code
|
||||||
|
FROM
|
||||||
|
`sch_base_point` p
|
||||||
|
LEFT JOIN pdm_bd_workorder w ON w.point_code = p.point_code AND w.workorder_status = '3'
|
||||||
|
WHERE
|
||||||
|
p.region_code = 'YZ' AND p.point_type = '1' AND p.is_has_workder = '1'
|
||||||
|
AND w.workorder_id IS NULL
|
||||||
|
) AND pw.workorder_status = '1' AND produce_date = CURDATE()
|
||||||
|
</select>
|
||||||
|
<select id="getTheDayUnProducedDevice" resultType="java.lang.String">
|
||||||
|
SELECT
|
||||||
|
p.point_code
|
||||||
|
FROM
|
||||||
|
`sch_base_point` p
|
||||||
|
LEFT JOIN pdm_bd_workorder w ON w.point_code = p.point_code AND w.workorder_status = '3' AND w.workorder_status = '2'
|
||||||
|
WHERE
|
||||||
|
p.region_code = 'YZ' AND p.point_type = '1' AND p.is_has_workder = '1'
|
||||||
|
AND w.workorder_id IS NULL
|
||||||
|
</select>
|
||||||
|
<select id="getAcsWorkOrderVos" resultType="org.nl.wms.pdm.workorder.service.dao.vo.AcsWorkOrderVo">
|
||||||
|
SELECT
|
||||||
|
w.workorder_code,
|
||||||
|
w.point_code AS device_code,
|
||||||
|
w.plan_qty,
|
||||||
|
m.half_material_code AS material_code,
|
||||||
|
m.material_spec AS product_code,
|
||||||
|
m.material_spec AS brick_code,
|
||||||
|
m.material_model AS formula,
|
||||||
|
IF(LENGTH(m.a_long_side) > 0,m.a_long_side,0) AS a,
|
||||||
|
IF(LENGTH(m.b_short_side) > 0,m.b_short_side,0) AS b,
|
||||||
|
IF(LENGTH(m.h_height) > 0,m.h_height,0) AS h,
|
||||||
|
IF(LENGTH(m.w_thickness) > 0,m.w_thickness,0) AS w,
|
||||||
|
0 AS size_error,
|
||||||
|
0 AS single_weight,
|
||||||
|
IF(LENGTH(m.standard_size_height1)>0,m.standard_size_height1,0) AS standard_size_height1,
|
||||||
|
IF(LENGTH(m.standard_size_height2)>0,m.standard_size_height2,0) AS standard_size_height2,
|
||||||
|
IF(LENGTH(m.standard_size_height3)>0,m.standard_size_height3,0) AS standard_size_height3,
|
||||||
|
IF(LENGTH(m.standard_size_height4)>0,m.standard_size_height4,0) AS standard_size_height4,
|
||||||
|
IF(LENGTH(m.single_weight)>0,m.single_weight,0) AS standard_weight,
|
||||||
|
0 AS detection_error
|
||||||
|
FROM
|
||||||
|
pdm_bd_workorder w
|
||||||
|
LEFT JOIN md_base_material m ON m.material_id = w.material_id
|
||||||
|
WHERE
|
||||||
|
w.workorder_status = '1'
|
||||||
|
AND w.produce_date = CURDATE()
|
||||||
|
AND w.point_code = #{device}
|
||||||
|
ORDER BY w.planproducestart_date
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
|||||||
@@ -249,4 +249,24 @@ public class PdmBdWorkorderServiceImpl extends ServiceImpl<PdmBdWorkorderMapper,
|
|||||||
// 还可以叫空盘
|
// 还可以叫空盘
|
||||||
return realQty.compareTo(planQty) < 0;
|
return realQty.compareTo(planQty) < 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PdmBdWorkorder> getTheDayUnProducedWorkOrder() {
|
||||||
|
return pdmBdWorkorderMapper.getTheDayUnProducedWorkOrder();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<PdmBdWorkorder> getTheDayIssueWorkOrderList() {
|
||||||
|
return pdmBdWorkorderMapper.getTheDayIssueWorkOrderList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getTheDayUnProducedDevice() {
|
||||||
|
return pdmBdWorkorderMapper.getTheDayUnProducedDevice();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<AcsWorkOrderVo> getAcsWorkOrderVos(String s) {
|
||||||
|
return pdmBdWorkorderMapper.getAcsWorkOrderVos(s);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import org.nl.wms.ext.acs.service.dto.to.acs.PutActionRequest;
|
|||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.LocalTime;
|
import java.time.LocalTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
@@ -109,4 +110,14 @@ public class CommonUtils {
|
|||||||
list.add(putActionRequest);
|
list.add(putActionRequest);
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String CurrentData() {
|
||||||
|
// 获取当前日期
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
// 定义日期格式
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||||
|
// 格式化日期为"20231030"
|
||||||
|
String formattedDate = currentDate.format(formatter);
|
||||||
|
return formattedDate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONArray;
|
|||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import org.checkerframework.checker.units.qual.A;
|
import org.checkerframework.checker.units.qual.A;
|
||||||
|
import org.junit.Assert;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.nl.common.exception.BadRequestException;
|
import org.nl.common.exception.BadRequestException;
|
||||||
import org.nl.wms.ext.acs.service.dto.to.wms.ApplyDeviceDto;
|
import org.nl.wms.ext.acs.service.dto.to.wms.ApplyDeviceDto;
|
||||||
@@ -19,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -117,5 +120,16 @@ public class test {
|
|||||||
// System.out.println(5%3);
|
// System.out.println(5%3);
|
||||||
System.out.println(Double.parseDouble("0.0"));
|
System.out.println(Double.parseDouble("0.0"));
|
||||||
}
|
}
|
||||||
|
@Test
|
||||||
|
// 测试场景:获取当前日期,格式化为"yyyyMMdd"
|
||||||
|
public void testGetFormattedDate() {
|
||||||
|
// 获取当前日期
|
||||||
|
LocalDate currentDate = LocalDate.now();
|
||||||
|
// 定义日期格式
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||||
|
// 格式化日期为"20231030"
|
||||||
|
String formattedDate = currentDate.format(formatter);
|
||||||
|
// 断言格式化后的日期是否符合预期
|
||||||
|
Assert.assertEquals("20231030", formattedDate);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,24 @@
|
|||||||
@keyup.enter.native="crud.toQuery"
|
@keyup.enter.native="crud.toQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="物料规格">
|
||||||
|
<el-input
|
||||||
|
v-model="query.material_spec"
|
||||||
|
clearable
|
||||||
|
size="mini"
|
||||||
|
placeholder="物料名称"
|
||||||
|
@keyup.enter.native="crud.toQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="物料型号">
|
||||||
|
<el-input
|
||||||
|
v-model="query.material_model"
|
||||||
|
clearable
|
||||||
|
size="mini"
|
||||||
|
placeholder="物料名称"
|
||||||
|
@keyup.enter.native="crud.toQuery"
|
||||||
|
/>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item :label="queryInfo">
|
<el-form-item :label="queryInfo">
|
||||||
<el-button icon="el-icon-sort" circle @click="queryMaterials"></el-button>
|
<el-button icon="el-icon-sort" circle @click="queryMaterials"></el-button>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@@ -54,6 +72,7 @@
|
|||||||
<el-table-column prop="raw_material_code" label="泥料编码" width="160" />
|
<el-table-column prop="raw_material_code" label="泥料编码" width="160" />
|
||||||
<el-table-column prop="material_name" label="物料名称" width="180" show-overflow-tooltip />
|
<el-table-column prop="material_name" label="物料名称" width="180" show-overflow-tooltip />
|
||||||
<el-table-column prop="material_spec" label="物料规格" width="140" />
|
<el-table-column prop="material_spec" label="物料规格" width="140" />
|
||||||
|
<el-table-column prop="material_model" label="物料型号" width="140" />
|
||||||
<el-table-column v-if="queryInfo === '库存顺序'" prop="total_material_qty" label="物料总数/块" width="140" />
|
<el-table-column v-if="queryInfo === '库存顺序'" prop="total_material_qty" label="物料总数/块" width="140" />
|
||||||
<el-table-column prop="standing_time" label="静置时间(分钟)" width="130px" />
|
<el-table-column prop="standing_time" label="静置时间(分钟)" width="130px" />
|
||||||
<el-table-column prop="update_name" label="修改人" />
|
<el-table-column prop="update_name" label="修改人" />
|
||||||
|
|||||||
Reference in New Issue
Block a user