烧结配套查询

liweidong
李涛 4 days ago
parent fbc8aeef86
commit 267ed1ce23
  1. 71
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/vo/SjCompleteVO.java
  2. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.java
  3. 69
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/mapper/YieldOrderMapper.xml
  4. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/IYieldOrderService.java
  5. 31
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  6. 27
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/SjProduceManageController.java
  7. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkOrderService.java
  8. 39
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java

@ -0,0 +1,71 @@
package org.springblade.desk.produce.pojo.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springblade.core.tool.utils.DateUtil;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 烧结配套查询 视图实体类
*
* @author litao
*/
@Data
public class SjCompleteVO {
@Schema(description = "生产订单id")
private Long yoId;
@Schema(description = "车间订单id")
private Long woId;
@Schema(description = "生产订单号")
private String yoCode;
@Schema(description = "车间订单号")
private String woCode;
@Schema(description = "零件号")
private String partCode;
@Schema(description = "零件名称")
private String partName;
@Schema(description = "产品型号")
private String productType;
@Schema(description = "批次号")
private String batchNo;
@Schema(description = "流程卡号")
private String cardNo;
@Schema(description = "生产标识")
private String productIdent;
@Schema(description = "生产数量")
private Double ypQty;
@Schema(description = "面积(d㎡)")
private Double ypArea;
@Schema(description = "订单优先级(key)")
private Integer priorityErp;
@Schema(description = "订单优先级(名称)")
private String priorityErpName;
@Schema(description = "计划下达时间")
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
private Date releaseDate;
@Schema(description = "镀后入库时间")
@DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
@JsonFormat(pattern = DateUtil.PATTERN_DATETIME)
private Date putStoreTime;
}

@ -8,6 +8,7 @@ import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.enums.YieldOrderEnum;
import org.springblade.desk.order.pojo.vo.oldmes.PrWorkOrder;
import org.springblade.desk.order.pojo.vo.oldmes.PrWorkPlan;
import org.springblade.desk.produce.pojo.vo.SjCompleteVO;
import java.util.List;
@ -78,4 +79,10 @@ public interface YieldOrderMapper extends BaseMapper<YieldOrder> {
List<YieldOrder> selectByFatherYoId(@Param("yieldOrderId") Long yieldOrderId);
List<YieldOrder> selectByFatherYoIds(@Param("ids") List<Long> idList);
List<SjCompleteVO> getSubCompleteData(Long yoId);
List<String> getSubBlbBatch(String cardNo);
List<SjCompleteVO> getSubBlbData(List<String> batchs);
}

@ -177,6 +177,75 @@
</foreach>
</if>
</select>
<select id="getSubCompleteData" resultType="org.springblade.desk.produce.pojo.vo.SjCompleteVO">
SELECT
a.id AS yoId,
b.id AS woId,
b.WO_CODE AS woCode,
a.YO_CODE AS yoCode,
a.PART_CODE AS partCode,
a.PART_NAME AS partName,
a.PRODUCT_TYPE AS productType,
a.BATCH_NO AS batchNo,
a.CARD_NO AS cardNo,
a.PRODUCT_IDENT AS productIdent,
a.YP_QTY AS ypQty,
a.YP_AREA AS ypArea,
a.PRIORITY_ERP AS priorityErp,
a.RELEASE_DATE AS releaseDate,
b.PUT_STORE_TIME AS putStoreTime
FROM
MES_YIELD_ORDER a
INNER JOIN MES_WORK_ORDER b ON a.id = b.yo_id
WHERE
a.IS_DELETED = 0
AND b.IS_DELETED = 0
AND a.FATHER_YO_ID = #{yoId}
AND a.YIELD_TYPE != 12003
</select>
<select id="getSubBlbBatch" resultType="java.lang.String">
SELECT
b.PI_NO
FROM
ST_GLASS_CAKE_OUT a
INNER JOIN ST_REALTIME_STOCK b ON a.RLS_ID = b.ID
WHERE
a.CARD_NO = #{cardNo}
AND a.CUR_STATUS = 1
AND a.IS_DELETED = 0
AND b.IS_DELETED = 0
</select>
<select id="getSubBlbData" resultType="org.springblade.desk.produce.pojo.vo.SjCompleteVO">
SELECT
a.id AS yoId,
b.id AS woId,
b.WO_CODE AS woCode,
a.YO_CODE AS yoCode,
a.PART_CODE AS partCode,
a.PART_NAME AS partName,
a.PRODUCT_TYPE AS productType,
a.BATCH_NO AS batchNo,
a.CARD_NO AS cardNo,
a.PRODUCT_IDENT AS productIdent,
a.YP_QTY AS ypQty,
a.YP_AREA AS ypArea,
a.PRIORITY_ERP AS priorityErp,
a.RELEASE_DATE AS releaseDate,
b.PUT_STORE_TIME AS putStoreTime
FROM
MES_YIELD_ORDER a
INNER JOIN MES_WORK_ORDER b ON a.id = b.yo_id
WHERE
a.IS_DELETED = 0
AND b.IS_DELETED = 0
AND a.YIELD_TYPE = 12003
<if test="batchs != null and batchs.size() > 0">
AND a.BATCH_NO IN
<foreach collection = "batchs" item = "item" open = "(" separator = "," close = ")">
#{item}
</foreach>
</if>
</select>
<update id="updateOldMesPrWorkOrder">
update MJMES.PR_WORK_ORDER set PLATE_SINGLE_QUOTA = #{plateSingleQuota} where WO_ID = #{woId}

@ -11,6 +11,7 @@ import org.springblade.desk.order.pojo.dto.YieldOrderDto;
import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.order.pojo.entity.YieldOrderCraft;
import org.springblade.desk.order.pojo.entity.YieldPlan;
import org.springblade.desk.produce.pojo.vo.SjCompleteVO;
import java.util.List;
@ -330,4 +331,13 @@ public interface IYieldOrderService extends BaseService<YieldOrder> {
* @return
*/
Boolean syncYieldOrder(String yoCode);
/**
* 根据卡片号查询生产订单
* @param cardNo
* @return
*/
YieldOrder getByCardNo(String cardNo);
List<SjCompleteVO> getSubCompleteData(YieldOrder yieldOrder);
}

@ -57,6 +57,7 @@ import org.springblade.desk.order.service.IYieldOrderCraftService;
import org.springblade.desk.order.service.IYieldOrderService;
import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.vo.SjCompleteVO;
import org.springblade.erpdata.feign.IErpMesRbWoClient;
import org.springblade.erpdata.feign.IErpYieldOrderClient;
import org.springblade.scheduling.pojo.entity.PartRelationEntity;
@ -2075,6 +2076,36 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
return true;
}
@Override
public YieldOrder getByCardNo(String cardNo) {
List<YieldOrder> orders = this.list(Wrappers.<YieldOrder>lambdaQuery().eq(YieldOrder::getCardNo, cardNo).orderByDesc(YieldOrder::getCreateTime));
return CollectionUtils.isEmpty(orders) ? null : orders.get(0);
}
@Override
public List<SjCompleteVO> getSubCompleteData(YieldOrder yieldOrder) {
// 先按正常订单查询
List<SjCompleteVO> subOrders = baseMapper.getSubCompleteData(yieldOrder.getId());
if (CollectionUtils.isEmpty(subOrders)) {
// 按返工订单查询
subOrders = baseMapper.getSubCompleteData(yieldOrder.getOldYoId());
yieldOrder = this.getById(yieldOrder.getOldYoId());
}
if (yieldOrder != null) {
// 查询玻璃饼子件批次号
List<String> batchs = baseMapper.getSubBlbBatch(yieldOrder.getCardNo());
if (CollectionUtils.isEmpty(batchs)) {
return subOrders;
}
// 根据批次号查询生产订单
List<SjCompleteVO> subBlbOrders = baseMapper.getSubBlbData(batchs);
if (CollectionUtils.isNotEmpty(subBlbOrders)) {
subOrders.addAll(subBlbOrders);
}
}
return subOrders;
}
/**
* @param codeType 0:订单号1流程卡号2批次号
* @return String

@ -20,10 +20,12 @@ import org.springblade.desk.order.wrapper.YieldOrderWrapper;
import org.springblade.desk.produce.pojo.dto.QueryByReadStatusDTO;
import org.springblade.desk.produce.pojo.dto.YieldOrderDTO;
import org.springblade.desk.produce.pojo.vo.QueryByReadStatusVO;
import org.springblade.desk.produce.pojo.vo.SjCompleteVO;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.quality.service.IPlanTestService;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 烧结生产管理
*
@ -39,8 +41,6 @@ public class SjProduceManageController extends BladeController {
private final IWorkOrderService workOrderService;
private final IPlanTestService planTestService;
@GetMapping("/page")
@ApiOperationSupport(order = 1)
@Operation(summary = "烧结配套齐套流转列表", description = "传入WorkOrderVO")
@ -110,19 +110,14 @@ public class SjProduceManageController extends BladeController {
return R.data(workOrderService.setReadStatus(woIds));
}
@GetMapping(value = "/isTransferTest")
@ApiOperationSupport(order = 7)
@Operation(summary = "判断是否符合转试条件")
public R isTransferTest(Long woId) {
// return R.data(planTestService.isTransferTest(woId));
return null;
@GetMapping("/selectSjComplete")
@Operation(summary = "烧结配套查询")
public R<List<SjCompleteVO>> selectSjComplete(String cardNo) {
if (StringUtils.isBlank(cardNo)) {
return R.fail("流程卡号为空");
}
List<SjCompleteVO> list = workOrderService.selectSjComplete(cardNo);
return R.data(list);
}
@PostMapping(value = "/launchTest")
@ApiOperationSupport(order = 8)
@Operation(summary = "发起转试的试验计划")
public R launchTest(@RequestBody String woIds) {
// return R.data(planTestService.launchTest(woIds));
return null;
}
}

@ -301,4 +301,9 @@ public interface IWorkOrderService extends BaseService<WorkOrder> {
* 修改生产计划交付数量
*/
boolean planUpdateToQty();
/**
* 获取烧结配套信息
*/
List<SjCompleteVO> selectSjComplete(String cardNo);
}

@ -2971,6 +2971,45 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
return true;
}
@Override
public List<SjCompleteVO> selectSjComplete(String cardNo) {
// 获取生产订单
YieldOrder yieldOrder = yieldOrderService.getByCardNo(cardNo);
if (yieldOrder == null) {
throw new ServiceException("未查询到生产订单信息");
}
// 正常烧结订单子件
List<SjCompleteVO> subCompleteData = yieldOrderService.getSubCompleteData(yieldOrder);
if (CollectionUtils.isEmpty(subCompleteData)) {
// 按照分批逻辑查询
for (int i = 0; i < 5; i++) {
// 截调流程卡号后两位去查询,一直到2位长度结束
cardNo = this.removeLastTwo(cardNo);
if (cardNo.length() < 2) {
break;
}
YieldOrder batchYieldOrder = yieldOrderService.getByCardNo(this.removeLastTwo(cardNo));
if (batchYieldOrder != null) {
subCompleteData = yieldOrderService.getSubCompleteData(batchYieldOrder);
if (CollectionUtils.isNotEmpty(subCompleteData)) {
break;
}
}
}
}
subCompleteData.forEach(sjCompleteVO -> sjCompleteVO.setPriorityErpName(YieldOrderEnum.getName(sjCompleteVO.getPriorityErp())));
return subCompleteData;
}
private String removeLastTwo(String str) {
if (str == null) {
return "";
}
// 取有效起始下标,避免长度不足2报错
int endIndex = Math.max(0, str.length() - 2);
return str.substring(0, endIndex);
}
private void processSinglePlan(String code) {
// 第一步:查询t_wo表
Double woTotqty = erpDataProduceClient.selectMaxWototqtyByWono(code).getData();

Loading…
Cancel
Save