新增补充接口

liweidong
ShiJiuZhou 3 days ago
parent ed2ba2d9de
commit d3fcf94b7c
  1. 27
      blade-ops/blade-job/src/main/java/org/springblade/job/processor/quality/TestPlanInCompleteProcessor.java
  2. 19
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/dto/AllocationMessPageDTO.java
  3. 92
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/logistics/pojo/vo/AllocationMessVO.java
  4. 26
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/feign/ITestPlanInCompleteTaskClient.java
  5. 7
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/entity/PlanTest.java
  6. 23
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/util/date/DateUtils.java
  7. 42
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataLogisticsClient.java
  8. 27
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataLogisticsClientFallback.java
  9. 10
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java
  10. 5
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java
  11. 6
      blade-service/blade-desk/pom.xml
  12. 90
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/util/HttpRequestService.java
  13. 37
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/controller/PrWorkOrderController.java
  14. 10
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkOrderService.java
  15. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/IPrWorkPlanService.java
  16. 21
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkOrderServiceImpl.java
  17. 200
      blade-service/blade-desk/src/main/java/org/springblade/desk/logistics/service/impl/PrWorkPlanServiceImpl.java
  18. 40
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/PrWorkPlanController.java
  19. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  20. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IWorkPlanService.java
  21. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  22. 2
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkPlanServiceImpl.java
  23. 47
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/PlanTestController.java
  24. 24
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/feign/TestPlanInCompleteTaskClient.java
  25. 12
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/mapper/PlanTestMapper.java
  26. 28
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IPlanTestService.java
  27. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IWorkPlanItemService.java
  28. 91
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/PlanTestServiceImpl.java
  29. 27
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/WorkPlanItemServiceImpl.java
  30. 37
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataLogisticsClient.java
  31. 5
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java
  32. 82
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataLogisticsMapper.xml
  33. 29
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataLogisticsServiceMapper.java
  34. 4
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.java
  35. 2
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java
  36. 11
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.xml
  37. 28
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataLogisticsService.java
  38. 7
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java
  39. 34
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataLogisticsServiceImpl.java
  40. 7
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java

@ -0,0 +1,27 @@
package org.springblade.job.processor.quality;
import jakarta.annotation.Resource;
import org.springblade.desk.quality.feign.ITestPlanInCompleteTaskClient;
import org.springframework.stereotype.Component;
import tech.powerjob.worker.core.processor.ProcessResult;
import tech.powerjob.worker.core.processor.TaskContext;
import tech.powerjob.worker.core.processor.sdk.BasicProcessor;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 14:00
*/
@Component
public class TestPlanInCompleteProcessor implements BasicProcessor {
@Resource
private ITestPlanInCompleteTaskClient client;
@Override
public ProcessResult process(TaskContext taskContext) throws Exception {
client.testPlanIncomplete();
return new ProcessResult(true);
}
}

@ -0,0 +1,19 @@
package org.springblade.desk.logistics.pojo.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 15:22
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class AllocationMessPageDTO extends AllocationMessVO {
private Integer pageNum;
private Integer pageSize;
}

@ -0,0 +1,92 @@
package org.springblade.desk.logistics.pojo.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 15:20
*/
@Data
public class AllocationMessVO implements Serializable {
/**
* 配套单号
*/
private String pkno;
/**
* 父件号
*/
private String prntno;
/**
* 型号
*/
private String mtltmrk;
/**
* 生产标识
*/
private String prtlotno;
/**
* 需求日期
*/
private String pkreqdat;
/**
* 父件批次
*/
private String fjSplcode;
/**
* 父件配套数
*/
private String fjPkavqty;
/**
* 配套序号
*/
private String serialno;
/**
* 主制部门
*/
private String prtmdept;
/**
* 计划标记
*/
private String plnsign;
/**
* 制造订单号
*/
private String mono;
/**
* 计划员
*/
private String schemer;
/**
* 调度员
*/
private String planner1;
/**
* 配套日期
*/
private String subpkdate;
/**
* 保管员
*/
private String warctlr;
/**
* 条码序号
*/
private String barcodeno;
/**
* 计划部门
*/
private String plandept;
/**
* 备注
*/
private String remark;
/**
* 物料标识
*/
private String prtclass;
}

@ -0,0 +1,26 @@
package org.springblade.desk.quality.feign;
import org.springblade.core.launch.constant.AppConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 14:01
*/
@FeignClient(
value = AppConstant.APPLICATION_DESK_NAME
)
public interface ITestPlanInCompleteTaskClient {
String API_PREFIX = "/feign/client/QA/PlanTest";
String TEST_PLAN_INCOMPLETE = API_PREFIX + "/testPlanIncomplete";
/**
* 转试计划未完成
*/
@GetMapping(TEST_PLAN_INCOMPLETE)
void testPlanIncomplete();
}

@ -11,7 +11,6 @@ import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity; import org.springblade.core.mp.base.BaseEntity;
import java.io.Serial; import java.io.Serial;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
/** /**
@ -197,4 +196,10 @@ public class PlanTest extends BaseEntity {
*/ */
@Schema(description = "备注") @Schema(description = "备注")
private String remark; private String remark;
/**
* 转试状态
*/
@Schema(description = "转试状态")
private String testStatus;
} }

@ -267,4 +267,27 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
return Date.from(getYesterdayEnd().atZone(ZoneId.systemDefault()).toInstant()); return Date.from(getYesterdayEnd().atZone(ZoneId.systemDefault()).toInstant());
} }
/**
* 获取当月开始时间
* @param date 当前时间
* @return 当月开始时间 (Date类型)
*/
public static Date getMonthStartTime(Date date) {
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDateTime startOfMonth = localDate.withDayOfMonth(1).atStartOfDay();
return Date.from(startOfMonth.atZone(ZoneId.systemDefault()).toInstant());
}
/**
* 获取当月结束时间
* @param date 当前时间
* @return 当月结束时间 (Date类型)
*/
public static Date getMonthEndTime(Date date) {
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
LocalDateTime endOfMonth = localDate.withDayOfMonth(localDate.lengthOfMonth())
.atTime(LocalTime.MAX);
return Date.from(endOfMonth.atZone(ZoneId.systemDefault()).toInstant());
}
} }

@ -0,0 +1,42 @@
package org.springblade.erpdata.feign;
import org.springblade.common.constant.LauncherConstant;
import org.springblade.core.tool.api.R;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 15:52
*/
@FeignClient(
value = LauncherConstant.APPLICATION_ERP_DATA_NAME,
fallback = IErpDataLogisticsClientFallback.class
)
public interface IErpDataLogisticsClient {
String API_PREFIX = "/feign/erpdata/logistics";
String QUERY_ALLOCATION_MESS = API_PREFIX + "/queryAllocationMess";
String QUERY_ALLOCATION_MESS_NUM = API_PREFIX + "/queryAllocationMessNum";
/**
* 查询调拨单
* @param dto 查询条件
* @return 调拨单
*/
@GetMapping(QUERY_ALLOCATION_MESS)
R<List<AllocationMessVO>> queryAllocationMess(AllocationMessPageDTO dto);
/**
* 查询调拨单数量
* @param dto 查询条件
* @return 数量
*/
@GetMapping(QUERY_ALLOCATION_MESS_NUM)
R<Integer> queryAllocationMessNum(AllocationMessPageDTO dto);
}

@ -0,0 +1,27 @@
package org.springblade.erpdata.feign;
import org.springblade.core.tool.api.R;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 15:55
*/
@Component
public class IErpDataLogisticsClientFallback implements IErpDataLogisticsClient{
@Override
public R<List<AllocationMessVO>> queryAllocationMess(AllocationMessPageDTO dto) {
return R.fail("获取数据失败");
}
@Override
public R<Integer> queryAllocationMessNum(AllocationMessPageDTO dto) {
return R.fail("获取数据失败");
}
}

@ -44,6 +44,8 @@ public interface IErpDataProduceClient {
String SIGN_DELETE = API_PREFIX + "/signDelete"; String SIGN_DELETE = API_PREFIX + "/signDelete";
String SAVE_DECLARE = API_PREFIX + "/saveDeclare"; String SAVE_DECLARE = API_PREFIX + "/saveDeclare";
String TRAIL_ITEM_LIST = API_PREFIX + "/trialItemList";
/** /**
* 缺件申报-通过零件号获取批次号 * 缺件申报-通过零件号获取批次号
*/ */
@ -171,4 +173,12 @@ public interface IErpDataProduceClient {
@RequestParam(value = "quaLevel") String quaLevel, @RequestParam(value = "deptNo") String deptNo, @RequestParam(value = "quaLevel") String quaLevel, @RequestParam(value = "deptNo") String deptNo,
@RequestParam(value = "warnNo") String warnNo, @RequestParam(value = "locationNo") String locationNo, @RequestParam(value = "warnNo") String warnNo, @RequestParam(value = "locationNo") String locationNo,
@RequestParam(value = "woCode", required = false) String woCode, @RequestParam(value = "userName") String userName); @RequestParam(value = "woCode", required = false) String woCode, @RequestParam(value = "userName") String userName);
/**
* 获取转试的试验计划
* @param nameList 试验计划名称
* @return 结果
*/
@GetMapping(TRAIL_ITEM_LIST)
R<List<Map<String, String>>> trialItemList(List<String> nameList);
} }

@ -101,4 +101,9 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient {
return R.fail("获取数据失败"); return R.fail("获取数据失败");
} }
@Override
public R<List<Map<String, String>>> trialItemList(List<String> nameList) {
return R.fail("获取数据失败");
}
} }

@ -145,6 +145,12 @@
<groupId>com.qcloud</groupId> <groupId>com.qcloud</groupId>
<artifactId>cos_api</artifactId> <artifactId>cos_api</artifactId>
</dependency> </dependency>
<dependency>
<groupId>org.springblade</groupId>
<artifactId>blade-auth</artifactId>
<version>4.6.0.RELEASE</version>
</dependency>
</dependencies> </dependencies>
<build> <build>

@ -1,9 +1,12 @@
package org.springblade.desk.energy.util; package org.springblade.desk.energy.util;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springblade.core.secure.BladeUser;
import org.springframework.beans.factory.annotation.Value;
import org.springblade.desk.energy.pojo.entity.BsTowerEntity; import org.springblade.desk.energy.pojo.entity.BsTowerEntity;
import org.springblade.desk.energy.pojo.entity.RpParameterSet; import org.springblade.desk.energy.pojo.entity.RpParameterSet;
import org.springblade.desk.energy.service.*; import org.springblade.desk.energy.service.*;
@ -15,14 +18,17 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.util.Date;
import java.util.List; import java.util.List;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
public class HttpRequestService { public class HttpRequestService {
private static final Logger log = LoggerFactory.getLogger(HttpRequestService.class); @Resource
private final RestTemplate httpClientTemplate; private final RestTemplate httpClientTemplate;
private static final Logger log = LoggerFactory.getLogger(HttpRequestService.class);
private final IBsTowerReportService epTowerRecService; private final IBsTowerReportService epTowerRecService;
private final IBsWasteGasRunRecService epWasteGasRunRecService; private final IBsWasteGasRunRecService epWasteGasRunRecService;
private final IRpParameterSetService rpParameterSetServer; private final IRpParameterSetService rpParameterSetServer;
@ -33,7 +39,8 @@ public class HttpRequestService {
@Value("${request.iotNew.url}") @Value("${request.iotNew.url}")
private String iotNewUrl; private String iotNewUrl;
@Value("${request.lims.url}")
private String limsUrl;
/** /**
* <p>Description: 获取看板废水废气酸雾塔实时数据新接口 </p> * <p>Description: 获取看板废水废气酸雾塔实时数据新接口 </p>
@ -85,5 +92,82 @@ public class HttpRequestService {
return null; return null;
} }
/**
* <p>Description: 发起转试的试验计划 </p>
*
* @param batchNo
* @param quantity
* @param woCode
* @param remark
* @param value
* @param label
* @param i
* @param curUserInfo
* @param partCode
* @param partName
* @param productType
* @param pptCode
* @Author cdl
* @Date: 2024/3/15 10:41
*/
public JSONObject launchTest(String batchNo, Integer quantity, String woCode, String remark, String value, String label, int i, BladeUser curUserInfo, String partCode, String partName, String productType, String pptCode) throws Exception {
// 头信息
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
JSONObject object = new JSONObject();
object.put("turnUser", curUserInfo.getNickName());
object.put("userDesc", curUserInfo.getUserName());
object.put("turnDept", "3400");
object.put("trueDate", new Date());
object.put("remark", remark);
object.put("model", productType);
object.put("sampleName", partName);
object.put("sampleCode", partCode);
object.put("batchCode", batchNo);
object.put("sampleQuantity", quantity);
object.put("samplestr1", woCode);
object.put("samplestr2", label);
object.put("expsn", "1");
object.put("flowid", pptCode);
HttpEntity<JSONObject> entity = new HttpEntity<>(object, headers);
ResponseEntity<JSONObject> responseEntity = null;
try {
//记录参数传递信息
log.info("转试传递参数,参数:{}", object.toJSONString());
responseEntity = httpClientTemplate.postForEntity(limsUrl + "/api/cloud-customized/zhonghanggd/zhgdMesLxDatasources/transferApplication", entity, JSONObject.class);
JSONObject result = responseEntity.getBody();
if (result != null && result.getBoolean("success")) {
return result.getJSONObject("data");
} else {
log.error("发起转试计划接口调用失败!" + result.getString("msg"));
}
} catch (Exception e) {
log.error("发起转试计划接口调用失败!" + e.getMessage());
}
return null;
}
public JSONObject testRec(String woCode, String erpId, String str1) {
// 头信息
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
JSONObject object = new JSONObject();
object.put("workOrderCode", woCode);
object.put("id", str1);
// object.put("id", erpId);
HttpEntity<JSONObject> entity = new HttpEntity<>(object, headers);
ResponseEntity<JSONObject> responseEntity = null;
try {
responseEntity = httpClientTemplate.postForEntity(limsUrl + "/api/cloud-customized/zhonghanggd/zhgdMesLxDatasources/mesGetLxList", entity, JSONObject.class);
JSONObject result = responseEntity.getBody();
if (result != null && result.getBoolean("success")) {
return result.getJSONObject("data");
} else {
log.error("转试计划详情接口调用失败!" + result.getString("msg"));
}
} catch (Exception e) {
log.error("转试计划详情接口调用失败!" + e.getMessage());
}
return null;
}
} }

@ -0,0 +1,37 @@
package org.springblade.desk.logistics.controller;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springblade.core.tool.api.R;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.service.IPrWorkOrderService;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 15:00
*/
@RestController
@AllArgsConstructor
@RequestMapping("/prWorkOrder")
@Tag(name = "车间订单->视图", description = "车间订单->视图")
public class PrWorkOrderController {
@Resource
private IPrWorkOrderService prWorkOrderService;
@PostMapping(value = "/queryAllocationMess")
@ApiOperationSupport(order = 1)
@Operation(summary = "加载配套信息", description = "filterContext 查询参数")
private R<Map<String,Object>> queryAllocationMess(@RequestBody AllocationMessPageDTO allocationMessPageDTO) {
return R.data(prWorkOrderService.queryAllocationMess(allocationMessPageDTO));
}
}

@ -27,10 +27,14 @@ package org.springblade.desk.logistics.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.entity.PrWorkOrder; import org.springblade.desk.logistics.pojo.entity.PrWorkOrder;
import org.springblade.desk.logistics.pojo.entity.WeighData; import org.springblade.desk.logistics.pojo.entity.WeighData;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
/** /**
* 车间订单 服务类 * 车间订单 服务类
@ -40,4 +44,10 @@ import java.math.BigDecimal;
*/ */
public interface IPrWorkOrderService extends IService<PrWorkOrder> { public interface IPrWorkOrderService extends IService<PrWorkOrder> {
/**
* 查询分配信息
* @param dto 查询条件
* @return 分配信息
*/
Map<String,Object> queryAllocationMess(AllocationMessPageDTO dto);
} }

@ -27,9 +27,13 @@ package org.springblade.desk.logistics.service;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.logistics.pojo.entity.PrWorkOrder; import org.springblade.desk.logistics.pojo.entity.PrWorkOrder;
import org.springblade.desk.logistics.pojo.entity.PrWorkPlan; import org.springblade.desk.logistics.pojo.entity.PrWorkPlan;
import java.util.List;
import java.util.Map;
/** /**
* 车间订单序号 服务类 * 车间订单序号 服务类
* *
@ -37,4 +41,24 @@ import org.springblade.desk.logistics.pojo.entity.PrWorkPlan;
* @since 2025-11-12 * @since 2025-11-12
*/ */
public interface IPrWorkPlanService extends IService<PrWorkPlan> { public interface IPrWorkPlanService extends IService<PrWorkPlan> {
/**
* 根据订单id查询
* @param woId 订单id
* @return 是否符合转试条件
*/
Boolean isTransferTest(Long woId);
/**
* 试转项目列表
* @return 试转项目列表
*/
List<Map<String,String>> trialItemList();
/**
* 发起试转
* @param data 试转数据
* @param user 用户
*/
void launchTest(Map<String,Object> data, BladeUser user) throws Exception;
} }

@ -26,17 +26,25 @@
package org.springblade.desk.logistics.service.impl; package org.springblade.desk.logistics.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.desk.logistics.mapper.PrWorkOrderMapper; import org.springblade.desk.logistics.mapper.PrWorkOrderMapper;
import org.springblade.desk.logistics.mapper.WeighDataMapper; import org.springblade.desk.logistics.mapper.WeighDataMapper;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.entity.PrWorkOrder; import org.springblade.desk.logistics.pojo.entity.PrWorkOrder;
import org.springblade.desk.logistics.pojo.entity.WeighData; import org.springblade.desk.logistics.pojo.entity.WeighData;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import org.springblade.desk.logistics.service.IPrWorkOrderService; import org.springblade.desk.logistics.service.IPrWorkOrderService;
import org.springblade.desk.logistics.service.IWeighDataService; import org.springblade.desk.logistics.service.IWeighDataService;
import org.springblade.erpdata.feign.IErpDataLogisticsClient;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/** /**
* 车间订单 服务实现类 * 车间订单 服务实现类
@ -46,7 +54,20 @@ import java.math.BigDecimal;
*/ */
@Service @Service
@Slf4j @Slf4j
@AllArgsConstructor
public class PrWorkOrderServiceImpl extends ServiceImpl<PrWorkOrderMapper, PrWorkOrder> implements IPrWorkOrderService { public class PrWorkOrderServiceImpl extends ServiceImpl<PrWorkOrderMapper, PrWorkOrder> implements IPrWorkOrderService {
@Resource
private IErpDataLogisticsClient erpDataLogisticsClient;
@Override
public Map<String,Object> queryAllocationMess(AllocationMessPageDTO dto) {
List<AllocationMessVO> allocationMessList = erpDataLogisticsClient.queryAllocationMess(dto).getData();
int totalAllocationMessNum = erpDataLogisticsClient.queryAllocationMessNum(dto).getData();
Map<String,Object> result = new HashMap<>(3);
result.put("current",dto.getPageNum());
result.put("record",allocationMessList);
result.put("total",totalAllocationMessNum);
return result;
}
} }

@ -1,38 +1,35 @@
package org.springblade.desk.logistics.service.impl; /** package org.springblade.desk.logistics.service.impl;
* BladeX Commercial License Agreement
* Copyright (c) 2018-2099, https://bladex.cn. All rights reserved.
* <p>
* Use of this software is governed by the Commercial License Agreement
* obtained after purchasing a license from BladeX.
* <p>
* 1. This software is for development use only under a valid license
* from BladeX.
* <p>
* 2. Redistribution of this software's source code to any third party
* without a commercial license is strictly prohibited.
* <p>
* 3. Licensees may copyright their own code but cannot use segments
* from this software for such purposes. Copyright of this software
* remains with BladeX.
* <p>
* Using this software signifies agreement to this License, and the software
* must not be used for illegal purposes.
* <p>
* THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY. The author is
* not liable for any claims arising from secondary or illegal development.
* <p>
* Author: Chill Zhuang (bladejava@qq.com)
*/
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.basic.mapper.BasicClazzMapper;
import org.springblade.desk.basic.pojo.entity.BasicClazz;
import org.springblade.desk.energy.util.HttpRequestService;
import org.springblade.desk.logistics.mapper.PrWorkPlanMapper; import org.springblade.desk.logistics.mapper.PrWorkPlanMapper;
import org.springblade.desk.logistics.pojo.entity.PrWorkPlan; import org.springblade.desk.logistics.pojo.entity.PrWorkPlan;
import org.springblade.desk.logistics.service.IPrWorkPlanService; import org.springblade.desk.logistics.service.IPrWorkPlanService;
import org.springblade.desk.quality.pojo.entity.PlanTest;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springblade.desk.quality.service.IPlanTestService;
import org.springblade.desk.quality.service.IWorkPlanItemService;
import org.springblade.erpdata.feign.IErpDataProduceClient;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
/** /**
* 车间订单 服务实现类 * 车间订单 服务实现类
* *
@ -41,7 +38,160 @@ import org.springframework.stereotype.Service;
*/ */
@Service @Service
@Slf4j @Slf4j
@AllArgsConstructor
public class PrWorkPlanServiceImpl extends ServiceImpl<PrWorkPlanMapper, PrWorkPlan> implements IPrWorkPlanService { public class PrWorkPlanServiceImpl extends ServiceImpl<PrWorkPlanMapper, PrWorkPlan> implements IPrWorkPlanService {
private final IWorkPlanItemService prWorkPlanItemService;
@Resource
private final BasicClazzMapper basicClazzMapper;
@Resource
private final IErpDataProduceClient erpDataProduceClient;
private final IPlanTestService planTestService;
@Resource
private final PrWorkPlanMapper prWorkplanMapper;
private final HttpRequestService httpRequestService;
@Override
public Boolean isTransferTest(Long woId) {
List<WorkPlanItem> prWorkPlanItems = prWorkPlanItemService.listByWoId(woId);
// 没有试验项目,不能转试
if (!(prWorkPlanItems != null && !prWorkPlanItems.isEmpty())) {
return false;
}
boolean flag = false;
for (WorkPlanItem prWorkPlanItem : prWorkPlanItems) {
// 如果试验项目中包含 承压检测 则代表可以发起转试 24/8/5 牛营杰确认
if ("承压检测".equals(prWorkPlanItem.getItemName())) {
if (prWorkPlanItem.getCheckResult() == -1) {
flag = true;
}
}
}
return flag;
}
@Override
public List<Map<String, String>> trialItemList() {
// 构造 SQL 查询语句
List<BasicClazz> basicClazzList = basicClazzMapper.selectList(new LambdaQueryWrapper<BasicClazz>()
.eq(BasicClazz::getBizType, 11));
List<String> nameList = basicClazzList.stream().map(BasicClazz::getName).collect(Collectors.toList());
List<Map<String, String>> mapList = erpDataProduceClient.trialItemList(nameList).getData();
// 转换查询结果
List<Map<String, String>> result = new ArrayList<>();
if (mapList != null && !mapList.isEmpty()) {
for (Map<String,String> map : mapList) {
Map<String, String> item = new HashMap<>();
item.put("value", map.get("key") != null ? map.get("key") : "");
item.put("label", map.get("value") != null ? map.get("value") : "");
result.add(item);
}
}
return result;
}
@Override
public void launchTest(Map<String, Object> data, BladeUser user) throws Exception {
// 提取参数
String batchNo = (String) data.get("batchNo");
Integer quantity = Integer.parseInt(data.get("quantity").toString());
String woCode = (String) data.get("woCode");
String remark = (String) data.get("remark");
String partCode = (String) data.get("partCode");
String productType = (String) data.get("productType");
String partName = (String) data.get("partName");
Object testListObj = data.get("testList");
JSONArray testList = (JSONArray) JSON.toJSON(testListObj);
Long woId = Long.parseLong(data.get("woId").toString());
// 生成转试单号
String pptCode = generatePptCode();
// 获取相关工序
PrWorkPlan prWorkPlan = findRelevantWorkPlan(woId);
// 处理每个测试项
processTestItems(testList, batchNo, quantity, woCode, remark, partCode, partName, productType, pptCode, prWorkPlan, user);
}
private String generatePptCode() {
Calendar c = Calendar.getInstance();
Date currentDate = new Date();
c.setTime(currentDate);
String year = String.valueOf(c.get(Calendar.YEAR));
int month = c.get(Calendar.MONTH) + 1;
String formattedMonth = month < 10 ? "0" + month : String.valueOf(month);
PlanTest latestData = planTestService.getLatestData(currentDate);
StringBuilder pptCode = new StringBuilder("LCR" + year + "-" + formattedMonth);
if (latestData != null && latestData.getId() != null) {
if (StringUtils.isNotBlank(latestData.getCode())) {
String numStr = String.valueOf(Integer.parseInt(latestData.getCode().substring(10)) + 1);
pptCode.append("0".repeat(Math.max(0, 6 - numStr.length())));
pptCode.append(numStr);
}
} else {
pptCode.append("000001");
}
return pptCode.toString();
}
private PrWorkPlan findRelevantWorkPlan(Long woId) {
List<WorkPlanItem> prWorkPlanItems = prWorkPlanItemService.listByWoId(woId);
PrWorkPlan prWorkPlan = null;
for (WorkPlanItem item : prWorkPlanItems) {
if ("承压检测".equals(item.getItemName()) || "承压测试".equals(item.getItemName()) || "承压测试检测".equals(item.getItemName())) {
if (item.getCheckResult() == -1) {
prWorkPlan = prWorkplanMapper.selectById(item.getWpId());
}
}
}
return prWorkPlan;
}
private void processTestItems(JSONArray testList, String batchNo, Integer quantity, String woCode, String remark,
String partCode, String partName, String productType, String pptCode,
PrWorkPlan prWorkPlan, BladeUser user) throws Exception {
for (int i = 0; i < testList.size(); i++) {
JSONObject object = testList.getObject(i, JSONObject.class);
String value = object.getString("value");
String label = object.getString("label");
JSONObject response = httpRequestService.launchTest(
batchNo, quantity, woCode, remark, value, label, i + 1, user, partCode, partName, productType, pptCode
);
if (response != null) {
saveTestRecord(prWorkPlan, user, value, label, pptCode, response, i + 1);
} else {
throw new BusinessException("LIMS系统接口调用失败,请联系相关负责人处理。");
}
}
}
private void saveTestRecord(PrWorkPlan prWorkPlan, BladeUser user, String testKey, String testName,
String pptCode, JSONObject response, int sequence) {
PlanTest prPlanTest = new PlanTest();
prPlanTest.setWpId(prWorkPlan.getPpsId());
prPlanTest.setTestUserId(user.getUserId());
prPlanTest.setTestUserName(user.getUserName());
prPlanTest.setTestTime(LocalDateTime.now());
prPlanTest.setTestNo((long) sequence);
prPlanTest.setWpCode(testKey);
prPlanTest.setTestName(testName);
prPlanTest.setTestStatus("已送");
prPlanTest.setCode(pptCode);
prPlanTest.setErpId(response.getString("id"));
prPlanTest.setDataId(response.getString("str1"));
planTestService.save(prPlanTest);
}
} }

@ -4,17 +4,21 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.desk.order.service.IYieldPlanService; import org.springblade.desk.logistics.service.IPrWorkPlanService;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO; import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import org.springblade.desk.produce.service.IWorkPlanService; import org.springblade.desk.produce.service.IWorkPlanService;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List;
import java.util.Map;
/** /**
* 车间作业计划 控制器 * 车间作业计划 控制器
@ -30,7 +34,7 @@ public class PrWorkPlanController extends BladeController {
private final IWorkPlanService workPlanService; private final IWorkPlanService workPlanService;
private final IYieldPlanService yieldPlanService; private final IPrWorkPlanService prWorkPlanService;
/** /**
* 车间作业计划 * 车间作业计划
@ -42,4 +46,30 @@ public class PrWorkPlanController extends BladeController {
IPage<WorkPlanVO> pages = workPlanService.queryWorkPlan(Condition.getPage(query), cardNo); IPage<WorkPlanVO> pages = workPlanService.queryWorkPlan(Condition.getPage(query), cardNo);
return R.data(pages); return R.data(pages);
} }
/**
* [转试记录] 判断是否符合转试条件
*/
@PostMapping("/isTransferTest")
@ApiOperationSupport(order = 72)
@Operation(summary = "是否符合转试条件", description = "Long woId 订单id")
public R<Boolean> isTransferTest(@RequestParam("woId") Long woId) {
return R.data(prWorkPlanService.isTransferTest(woId));
}
@PostMapping("/trialItemList")
@ApiOperationSupport(order = 73)
@Operation(summary = "获取转试的试验计划", description = "无需传参")
public R<List<Map<String,String>>> trialItemList() {
return R.data(prWorkPlanService.trialItemList());
}
@PostMapping("/launchTest")
@ApiOperationSupport(order = 73)
@Operation(summary = "发起试验计划", description = "无需传参")
public R launchTest(@RequestBody Map<String,Object> data, HttpServletRequest request) throws Exception {
BladeUser user = AuthUtil.getUser();
prWorkPlanService.launchTest(data, user);
return R.success();
}
} }

@ -2,6 +2,7 @@ package org.springblade.desk.produce.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartRelationEntity;
import org.springblade.desk.dashboard.pojo.entity.DsPartSub; import org.springblade.desk.dashboard.pojo.entity.DsPartSub;
import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO; import org.springblade.desk.produce.pojo.dto.MesRbFilePreserveDetailDTO;
@ -16,6 +17,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 车间作业计划 Mapper 接口 * 车间作业计划 Mapper 接口

@ -1,16 +1,21 @@
package org.springblade.desk.produce.service; package org.springblade.desk.produce.service;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.common.exception.BusinessException;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.core.secure.BladeUser;
import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO; import org.springblade.desk.produce.pojo.vo.ProduceMonitorWorkPlanVO;
import org.springblade.desk.produce.pojo.vo.WorkPlanProVO; import org.springblade.desk.produce.pojo.vo.WorkPlanProVO;
import org.springblade.desk.quality.pojo.entity.WorkPlanItem;
import org.springblade.scheduling.pojo.entity.WorkPlanEntity; import org.springblade.scheduling.pojo.entity.WorkPlanEntity;
import org.springblade.desk.produce.pojo.vo.WorkPlanVO; import org.springblade.desk.produce.pojo.vo.WorkPlanVO;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 车间作业计划 服务类 * 车间作业计划 服务类

@ -1085,13 +1085,13 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
} }
// 转试记录 // 转试记录
List<PlanTest> prPlanTests = planTestService.list(Wrappers.lambdaQuery(PlanTest.class).eq(PlanTest::getWpId, prWorkPlan.getId())); List<PlanTest> prPlanTests = planTestService.list(Wrappers.lambdaQuery(PlanTest.class).eq(PlanTest::getWpId, prWorkPlan.getPpsId()));
if (prPlanTests != null && !prPlanTests.isEmpty()) { if (prPlanTests != null && !prPlanTests.isEmpty()) {
for (PlanTest planTest : prPlanTests) { for (PlanTest planTest : prPlanTests) {
newPlanTest = new PlanTest(); newPlanTest = new PlanTest();
BeanUtils.copyProperties(planTest, newPlanTest); BeanUtils.copyProperties(planTest, newPlanTest);
newPlanTest.setId(null); newPlanTest.setId(null);
newPlanTest.setWpId(workPlan.getId()); newPlanTest.setWpId(workPlan.getPpsId());
planTestService.save(newPlanTest); planTestService.save(newPlanTest);
} }
} }

@ -3,6 +3,7 @@ package org.springblade.desk.produce.service.impl;
import com.alibaba.nacos.common.utils.CollectionUtils; import com.alibaba.nacos.common.utils.CollectionUtils;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
@ -83,6 +84,7 @@ public class WorkPlanServiceImpl extends BaseServiceImpl<WorkPlanMapper, WorkPla
private final IWorkCenterService workCenterService; private final IWorkCenterService workCenterService;
@Resource
private final PlateAroundMapper plateAroundMapper; private final PlateAroundMapper plateAroundMapper;
@Override @Override

@ -3,24 +3,23 @@
*/ */
package org.springblade.desk.quality.controller; package org.springblade.desk.quality.controller;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse; import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Configuration;
import jakarta.validation.Valid; import jakarta.validation.Valid;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.boot.ctrl.BladeController; import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.excel.util.ExcelUtil; import org.springblade.core.excel.util.ExcelUtil;
import org.springblade.core.mp.support.Condition; import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query; import org.springblade.core.mp.support.Query;
import org.springblade.core.secure.BladeUser; import org.springblade.core.secure.BladeUser;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.DateUtil;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
@ -47,15 +46,11 @@ import java.util.stream.Collectors;
*/ */
@RestController @RestController
@RequestMapping(QAModuleConst.CONTROLLER_PREFIX + "/PlanTest") @RequestMapping(QAModuleConst.CONTROLLER_PREFIX + "/PlanTest")
@Data
@AllArgsConstructor @AllArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Slf4j
@Tag(name = "[转试记录]", description = "[转试记录]接口") @Tag(name = "[转试记录]", description = "[转试记录]接口")
public class PlanTestController extends BladeController { public class PlanTestController extends BladeController {
@Resource private final IPlanTestService service;
private IPlanTestService service;
/** /**
* [转试记录] 详情 * [转试记录] 详情
@ -249,4 +244,38 @@ public class PlanTestController extends BladeController {
); );
return R.status(service.saveBatch(importList)); return R.status(service.saveBatch(importList));
} }
@PostMapping(value = "/queryAllData")
@ApiOperationSupport(order = 73)
@Operation(summary = "加载加工中车间订单", description = "filterContext 查询参数")
public R<List<PlanTest>> queryWorkOrder(@RequestBody PlanTest planTest) {
QueryWrapper<PlanTest> qw = Condition.getQueryWrapper(planTest);
BladeUser user = AuthUtil.getUser();
qw.eq("test_user_id", user.getUserId());
List<PlanTest> planTestList = service.list(qw);
return R.data(planTestList);
}
@GetMapping(value = "/isHasTestPlan/{wpId}")
@ApiOperationSupport(order = 74)
@Operation(summary = "获取是否包含转试记录", description = "wpId 工序计划id")
public R<Boolean> isHasTestPlan(@PathVariable Long wpId) throws Exception {
return R.data(service.isHasTestPlan(wpId));
}
@PostMapping(value = "/detailPageInfo")
@ApiOperationSupport(order = 75)
@Operation(summary = "转试详情", description = "prPlanTest 转试记录")
public R<JSONArray> detailPageInfo(@RequestBody PlanTest planTest) {
return R.data(service.detail(planTest));
}
@GetMapping(value = "/testPlanIncomplete")
@ApiOperationSupport(order = 76)
@Operation(summary = "转试计划未完成", description = "filterContext 查询参数")
public R<Boolean> testPlanIncomplete() {
service.testPlanIncomplete();
return R.success();
}
} }

@ -0,0 +1,24 @@
package org.springblade.desk.quality.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import org.springblade.desk.quality.service.IPlanTestService;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 14:36
*/
@RestController
@Hidden()
public class TestPlanInCompleteTaskClient implements ITestPlanInCompleteTaskClient{
@Resource
private IPlanTestService planTestService;
@Override
public void testPlanIncomplete() {
planTestService.testPlanIncomplete();
}
}

@ -7,10 +7,12 @@ import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springblade.desk.quality.excel.PlanTestExcel; import org.springblade.desk.quality.excel.PlanTestExcel;
import org.springblade.desk.quality.pojo.entity.PlanTest; import org.springblade.desk.quality.pojo.entity.PlanTest;
import org.springblade.desk.quality.pojo.vo.PlanTestVO; import org.springblade.desk.quality.pojo.vo.PlanTestVO;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -37,4 +39,14 @@ public interface PlanTestMapper extends BaseMapper<PlanTest> {
* @return List<PlanTestExcel> * @return List<PlanTestExcel>
*/ */
List<PlanTestExcel> exportPlanTest(@Param("ew") Wrapper<PlanTest> queryWrapper); List<PlanTestExcel> exportPlanTest(@Param("ew") Wrapper<PlanTest> queryWrapper);
/**
* 获取最新数据
* @param startOfMonth 开始月份
* @param endOfMonth 结束月份
* @return 最新数据
*/
@Select("SELECT * FROM ( SELECT * FROM qa_plan_test WHERE test_time BETWEEN " +
"#{startOfMonth} AND #{endOfMonth} ORDER BY test_time DESC ) WHERE ROWNUM = 1")
PlanTest getLatestDataByMonth(@Param("startOfMonth") Date startOfMonth, @Param("endOfMonth") Date endOfMonth);
} }

@ -5,12 +5,14 @@ package org.springblade.desk.quality.service;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService; import org.springblade.core.mp.base.BaseService;
import org.springblade.desk.quality.excel.PlanTestExcel; import org.springblade.desk.quality.excel.PlanTestExcel;
import org.springblade.desk.quality.pojo.entity.PlanTest; import org.springblade.desk.quality.pojo.entity.PlanTest;
import org.springblade.desk.quality.pojo.vo.PlanTestVO; import org.springblade.desk.quality.pojo.vo.PlanTestVO;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -48,4 +50,30 @@ public interface IPlanTestService extends BaseService<PlanTest> {
* @param vo * @param vo
*/ */
void setVOValue(PlanTestVO vo); void setVOValue(PlanTestVO vo);
/**
* 获取最新数据
* @param date 月份
* @return 最新数据
*/
PlanTest getLatestData(Date date);
/**
* 是否有转试计划
* @param wpId 工序id
* @return 是否有转试计划
*/
Boolean isHasTestPlan(Long wpId);
/**
* 详情
* @param planTest 转试记录
* @return 详情
*/
JSONArray detail(PlanTest planTest);
/**
* 转试计划未完成
*/
void testPlanIncomplete();
} }

@ -55,4 +55,11 @@ public interface IWorkPlanItemService extends BaseService<WorkPlanItem> {
void saveCheckItem(WorkPlan wp, List<WorkPlanItem> checkItemList, List<Long> deleteIds, String s); void saveCheckItem(WorkPlan wp, List<WorkPlanItem> checkItemList, List<Long> deleteIds, String s);
void deleteItem(List<Long> deleteIds); void deleteItem(List<Long> deleteIds);
/**
* 根据订单id查询
* @param woId 订单id
* @return 工序检验项
*/
List<WorkPlanItem> listByWoId(Long woId);
} }

@ -6,35 +6,40 @@ package org.springblade.desk.quality.service.impl;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.desk.energy.util.HttpRequestService;
import org.springblade.desk.logistics.mapper.PrWorkOrderMapper;
import org.springblade.desk.logistics.pojo.entity.PrWorkOrder;
import org.springblade.desk.produce.mapper.WorkOrderMapper; import org.springblade.desk.produce.mapper.WorkOrderMapper;
import org.springblade.desk.produce.pojo.entity.WorkOrder; import org.springblade.desk.produce.pojo.entity.WorkOrder;
import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.produce.service.IWorkOrderService;
import org.springblade.desk.produce.service.IWorkPlanService; import org.springblade.desk.produce.service.IWorkPlanService;
import org.springblade.desk.quality.excel.PlanTestExcel; import org.springblade.desk.quality.excel.PlanTestExcel;
import org.springblade.desk.quality.mapper.PlanTestMapper; import org.springblade.desk.quality.mapper.PlanTestMapper;
import org.springblade.desk.quality.pojo.entity.PlanTest; import org.springblade.desk.quality.pojo.entity.PlanTest;
import org.springblade.desk.quality.pojo.vo.PlanTestVO; import org.springblade.desk.quality.pojo.vo.PlanTestVO;
import org.springblade.desk.quality.service.IPlanTestService; import org.springblade.desk.quality.service.IPlanTestService;
import org.springblade.desk.util.date.DateUtils;
import org.springblade.system.feign.IDictClient; import org.springblade.system.feign.IDictClient;
import org.springblade.system.feign.IUserClient; import org.springblade.system.feign.IUserClient;
import org.springblade.system.pojo.entity.UserInfo; import org.springblade.system.pojo.entity.UserInfo;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.context.annotation.Lazy;
import org.springframework.http.HttpEntity; import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.util.Date;
import java.util.List; import java.util.List;
/** /**
@ -59,13 +64,21 @@ public class PlanTestServiceImpl extends BaseServiceImpl<PlanTestMapper, PlanTes
@Value("${request.lims.url}") @Value("${request.lims.url}")
private String limsUrl; private String limsUrl;
@Resource @Resource
@Lazy
private IWorkPlanService workPlanService; private IWorkPlanService workPlanService;
// @Resource
// private IWorkOrderService workOrderService;
@Resource @Resource
private WorkOrderMapper workOrderMapper; private WorkOrderMapper workOrderMapper;
@Resource
private PlanTestMapper planTestMapper;
@Resource
private HttpRequestService httpRequestService;
@Resource
private PrWorkOrderMapper prWorkOrderMapper;
@Override @Override
public JSONArray detailPage(PlanTest prPlanTest) { public JSONArray detailPage(PlanTest prPlanTest) {
PlanTest test = baseMapper.selectById(prPlanTest.getId()); PlanTest test = baseMapper.selectById(prPlanTest.getId());
@ -100,7 +113,6 @@ public class PlanTestServiceImpl extends BaseServiceImpl<PlanTestMapper, PlanTes
JSONObject object = new JSONObject(); JSONObject object = new JSONObject();
object.put("workOrderCode", woCode); object.put("workOrderCode", woCode);
object.put("id", str1); object.put("id", str1);
// object.put("id", erpId);
HttpEntity<JSONObject> entity = new HttpEntity<>(object, headers); HttpEntity<JSONObject> entity = new HttpEntity<>(object, headers);
ResponseEntity<JSONObject> responseEntity = null; ResponseEntity<JSONObject> responseEntity = null;
try { try {
@ -138,4 +150,69 @@ public class PlanTestServiceImpl extends BaseServiceImpl<PlanTestMapper, PlanTes
vo.setTestUserRealName(uiTest.getData().getUser().getRealName()); vo.setTestUserRealName(uiTest.getData().getUser().getRealName());
} }
} }
@Override
public PlanTest getLatestData(Date date) {
Date startOfMonth = DateUtils.getMonthStartTime(date);
Date endOfMonth = DateUtils.getMonthEndTime(date);
return planTestMapper.getLatestDataByMonth(startOfMonth, endOfMonth);
}
@Override
public Boolean isHasTestPlan(Long wpId) {
List<PlanTest> planTestList = this.list(new LambdaQueryWrapper<PlanTest>()
.eq(PlanTest::getWpId, wpId)
.isNull(PlanTest::getResult));
return planTestList != null && !planTestList.isEmpty();
}
@Override
public JSONArray detail(PlanTest planTest) {
// 查询woId
List<PrWorkOrder> prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper<PrWorkOrder>()
.eq(PrWorkOrder::getWpId, planTest.getWpId()));
if (prWorkOrderList == null || prWorkOrderList.isEmpty()){
return null;
}
JSONObject obj = httpRequestService.testRec(prWorkOrderList.get(0).getWoCode(), planTest.getErpId(),planTest.getDataId());
if (obj != null) {
JSONObject data = obj.getJSONObject("data");
return data.getJSONArray("nodeEndTime");
}
return null;
}
@Override
public void testPlanIncomplete() {
List<PlanTest> planTestList = this.list(new LambdaQueryWrapper<PlanTest>()
.isNull(PlanTest::getResult));
if (planTestList != null && !planTestList.isEmpty()) {
for (PlanTest prPlanTest : planTestList) {
List<PrWorkOrder> prWorkOrderList = prWorkOrderMapper.selectList(new LambdaQueryWrapper<PrWorkOrder>()
.eq(PrWorkOrder::getWpId, prPlanTest.getWpId()));
JSONObject obj = httpRequestService.testRec(prWorkOrderList.get(0).getWoCode(), prPlanTest.getErpId(),prPlanTest.getDataId());
if (obj != null) {
JSONObject data = obj.getJSONObject("data");
// 修改试验记录
prPlanTest.setTestStatus(data.getString("curNode"));
// 被退回
if ("1".equals(data.getString("returnFlag"))) {
prPlanTest.setTestStatus("退回");
prPlanTest.setResult(StringUtils.isNotBlank(obj.getString("message")) ? obj.getString("message") : "退回");
continue;
}
JSONArray nodeEndTime = data.getJSONArray("nodeEndTime");
if (nodeEndTime != null && !nodeEndTime.isEmpty()) {
JSONObject object = nodeEndTime.getObject(nodeEndTime.size() - 1, JSONObject.class);
String node = object.getString("node");
if (StringUtils.isBlank(prPlanTest.getTestStatus())) {
prPlanTest.setTestStatus(node);
}
}
this.updateById(prPlanTest);
}
}
}
}
} }

@ -18,6 +18,7 @@ import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl; import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.util.IdUtil; import org.springblade.desk.basic.util.IdUtil;
import org.springblade.desk.produce.mapper.WorkPlanMapper;
import org.springblade.desk.produce.pojo.entity.WorkPlan; import org.springblade.desk.produce.pojo.entity.WorkPlan;
import org.springblade.desk.quality.constant.InspectionItemConst; import org.springblade.desk.quality.constant.InspectionItemConst;
import org.springblade.desk.quality.excel.WorkPlanItemExcel; import org.springblade.desk.quality.excel.WorkPlanItemExcel;
@ -41,6 +42,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* [工序检验项] 服务实现类 * [工序检验项] 服务实现类
@ -68,6 +70,9 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl<WorkPlanItemMapper,
@Resource @Resource
private IDictClient dictClient; private IDictClient dictClient;
@Resource
private WorkPlanMapper workPlanMapper;
@Override @Override
public IPage<WorkPlanItemVO> selectWorkPlanItemPage(IPage<WorkPlanItemVO> page, WorkPlanItemVO workPlanItem) { public IPage<WorkPlanItemVO> selectWorkPlanItemPage(IPage<WorkPlanItemVO> page, WorkPlanItemVO workPlanItem) {
@ -223,4 +228,26 @@ public class WorkPlanItemServiceImpl extends BaseServiceImpl<WorkPlanItemMapper,
wpItemDetailService.remove(Wrappers.lambdaQuery(WorkPlanItemDetail.class).in(WorkPlanItemDetail::getWorkPlanItemId, deleteIds)); wpItemDetailService.remove(Wrappers.lambdaQuery(WorkPlanItemDetail.class).in(WorkPlanItemDetail::getWorkPlanItemId, deleteIds));
} }
} }
@Override
public List<WorkPlanItem> listByWoId(Long woId) {
if (woId == null) {
return null;
}
// 创建查询条件
LambdaQueryWrapper<WorkPlanItem> queryWrapper = new LambdaQueryWrapper<>();
// 关联查询条件
queryWrapper.exists(
"SELECT 1 FROM PR_WORK_PLAN wp " +
"JOIN BS_PROCESS_SET ps ON wp.pps_id = ps.id " +
"WHERE wp.wo_id = {0} " +
"AND ps.name <> {1}",
woId, "烧结包装防护"
);
// 其他条件
queryWrapper.ne(WorkPlanItem::getItemName, "单件包装材料数量")
.orderByAsc(WorkPlanItem::getItemCode)
.orderByDesc(WorkPlanItem::getId);
return this.list(queryWrapper);
}
} }

@ -0,0 +1,37 @@
package org.springblade.erpdata.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import org.springblade.erpdata.service.IErpDataLogisticsService;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 15:50
*/
@NonDS
@Hidden
@RestController
@AllArgsConstructor
public class ErpDataLogisticsClient implements IErpDataLogisticsClient {
@Resource
private final IErpDataLogisticsService erpDataLogisticsService;
@Override
public R<List<AllocationMessVO>> queryAllocationMess(AllocationMessPageDTO dto) {
return R.data(erpDataLogisticsService.queryAllocationMess(dto));
}
@Override
public R<Integer> queryAllocationMessNum(AllocationMessPageDTO dto) {
return R.data(erpDataLogisticsService.queryAllocationMessNum(dto));
}
}

@ -111,4 +111,9 @@ public class ErpDataProduceClient implements IErpDataProduceClient {
return R.data(erpDataProduceService.saveDeclare(partCode, batchNo, quantity, remark, quaLevel, deptNo, warnNo, locationNo, woCode, userName)); return R.data(erpDataProduceService.saveDeclare(partCode, batchNo, quantity, remark, quaLevel, deptNo, warnNo, locationNo, woCode, userName));
} }
@Override
public R<List<Map<String, String>>> trialItemList(List<String> nameList) {
return R.data(erpDataProduceService.trialItemList(nameList));
}
} }

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.erpdata.mapper.ErpDataOemMapper">
<!-- 查询调拨单列表 -->
<select id="queryAllocationMess" resultType="org.springblade.desk.logistics.pojo.vo.AllocationMessVO">
select ROWNUM no,a.* from dba_mgr.v_mes_rb_pkpqry a
<where>
<if test="dto.pkno != null and dto.pkno != ''">
AND pkno LIKE CONCAT('%', #{dto.pkno}, '%')
</if>
<if test="dto.prntno != null and dto.prntno != ''">
AND prntno LIKE CONCAT('%', #{dto.prntno}, '%')
</if>
<if test="dto.mtltmrk != null and dto.mtltmrk != ''">
AND mtltmrk = #{dto.mtltmrk}
</if>
<if test="dto.prtlotno != null and dto.prtlotno != ''">
AND prtlotno = #{dto.prtlotno}
</if>
<if test="dto.mono != null and dto.mono != ''">
AND mono = #{dto.mono}
</if>
<if test="dto.schemer != null and dto.schemer != ''">
AND schemer = #{dto.schemer}
</if>
<if test="dto.planner1 != null and dto.planner1 != ''">
AND planner1 = #{dto.planner1}
</if>
<if test="dto.warctlr != null and dto.warctlr != ''">
AND warctlr = #{dto.warctlr}
</if>
<if test="dto.plandept != null and dto.plandept != ''">
AND plandept = #{dto.plandept}
</if>
<if test="dto.prtclass != null and dto.prtclass != ''">
AND prtclass = #{dto.prtclass}
</if>
</where>
ORDER BY subpkdate DESC
<if test="dto.pageNum != null">
WHERE no BETWEEN (#{dto.pageNum}-1)*#{dto.getPageSize} +1 AND #{dto.pageNum} * #{dto.getPageSize};
</if>
</select>
<!-- 查询调拨单数量 -->
<select id="queryAllocationMessNum" resultType="java.lang.Integer">
SELECT COUNT(1) FROM dba_mgr.v_mes_rb_pkpqry
<where>
<if test="dto.pkno != null and dto.pkno != ''">
AND pkno LIKE CONCAT('%', #{dto.pkno}, '%')
</if>
<if test="dto.prntno != null and dto.prntno != ''">
AND prntno LIKE CONCAT('%', #{dto.prntno}, '%')
</if>
<if test="dto.mtltmrk != null and dto.mtltmrk != ''">
AND mtltmrk = #{dto.mtltmrk}
</if>
<if test="dto.prtlotno != null and dto.prtlotno != ''">
AND prtlotno = #{dto.prtlotno}
</if>
<if test="dto.mono != null and dto.mono != ''">
AND mono = #{dto.mono}
</if>
<if test="dto.schemer != null and dto.schemer != ''">
AND schemer = #{dto.schemer}
</if>
<if test="dto.planner1 != null and dto.planner1 != ''">
AND planner1 = #{dto.planner1}
</if>
<if test="dto.warctlr != null and dto.warctlr != ''">
AND warctlr = #{dto.warctlr}
</if>
<if test="dto.plandept != null and dto.plandept != ''">
AND plandept = #{dto.plandept}
</if>
<if test="dto.prtclass != null and dto.prtclass != ''">
AND prtclass = #{dto.prtclass}
</if>
</where>
</select>
</mapper>

@ -0,0 +1,29 @@
package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.Mapper;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import java.util.List;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 16:16
*/
public interface ErpDataLogisticsServiceMapper extends Mapper {
/**
* 查询调拨单
* @param dto 查询条件
* @return 调拨单列表
*/
List<AllocationMessVO> queryAllocationMess(AllocationMessPageDTO dto);
/**
* 查询调拨单数量
* @param dto 查询条件
* @return 调拨单数量
*/
Integer queryAllocationMessNum(AllocationMessPageDTO dto);
}

@ -4,12 +4,8 @@ import com.baomidou.mybatisplus.core.mapper.Mapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.desk.oem.pojo.request.PriceSheetQuery; import org.springblade.desk.oem.pojo.request.PriceSheetQuery;
import org.springblade.desk.oem.pojo.vo.PriceSheetVO; import org.springblade.desk.oem.pojo.vo.PriceSheetVO;
import org.springblade.erpdata.pojo.dto.ReworkProcessDTO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.erpdata.pojo.vo.ReworkProcessVO;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* Mapper 接口 * Mapper 接口

@ -38,4 +38,6 @@ public interface ErpDataProduceMapper extends Mapper {
Integer loadReworkPlanSize(String reworkCode, String partCode, String batchNo); Integer loadReworkPlanSize(String reworkCode, String partCode, String batchNo);
List<MesRbRedoRoutDTO> loadReworkNoProcess(); List<MesRbRedoRoutDTO> loadReworkNoProcess();
List<Map<String, String>> trialItemList(List<String> nameList);
} }

@ -176,4 +176,15 @@
<select id="loadReworkNoProcess" resultType="org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO"> <select id="loadReworkNoProcess" resultType="org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO">
select a.* from dba_mgr.v_mes_rb_redogynull a order by a.recdate asc select a.* from dba_mgr.v_mes_rb_redogynull a order by a.recdate asc
</select> </select>
<select id="trialItemList">
SELECT a.key, a.value FROM dba_mgr.t_listelement a WHERE listname = 'expitem'
AND a.value IN
<if test="nameList != null and nameList.size() > 0">
AND a.value IN
<foreach collection="nameList" item="name" open="(" separator="," close=")">
#{name}
</foreach>
</if>
</select>
</mapper> </mapper>

@ -0,0 +1,28 @@
package org.springblade.erpdata.service;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import java.util.List;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 16:08
*/
public interface IErpDataLogisticsService {
/**
* 查询调拨单
* @param dto 查询参数
* @return 调拨单
*/
List<AllocationMessVO> queryAllocationMess(AllocationMessPageDTO dto);
/**
* 查询调拨单数量
* @param dto 查询参数
* @return 调拨单
*/
Integer queryAllocationMessNum(AllocationMessPageDTO dto);
}

@ -48,4 +48,11 @@ public interface IErpDataProduceService {
Boolean signDeleteErp(String useCode); Boolean signDeleteErp(String useCode);
String saveDeclare(String partCode, String batchNo, Integer quantity, String remark, String quaLevel, String deptNo, String warnNo, String locationNo, String woCode, String userName); String saveDeclare(String partCode, String batchNo, Integer quantity, String remark, String quaLevel, String deptNo, String warnNo, String locationNo, String woCode, String userName);
/**
* 获取转试的试验计划
* @param nameList 试验计划名称
* @return 结果
*/
List<Map<String, String>> trialItemList(List<String> nameList);
} }

@ -0,0 +1,34 @@
package org.springblade.erpdata.service.impl;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springblade.desk.logistics.pojo.dto.AllocationMessPageDTO;
import org.springblade.desk.logistics.pojo.vo.AllocationMessVO;
import org.springblade.erpdata.mapper.ErpDataLogisticsServiceMapper;
import org.springblade.erpdata.service.IErpDataLogisticsService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author 石玖洲
* @Description
* @create 2026-04-22 16:12
*/
@Service
@AllArgsConstructor
public class ErpDataLogisticsServiceImpl implements IErpDataLogisticsService {
@Resource
private final ErpDataLogisticsServiceMapper erpDataLogisticsServiceMapper;
@Override
public List<AllocationMessVO> queryAllocationMess(AllocationMessPageDTO dto) {
return erpDataLogisticsServiceMapper.queryAllocationMess(dto);
}
@Override
public Integer queryAllocationMessNum(AllocationMessPageDTO dto) {
return erpDataLogisticsServiceMapper.queryAllocationMessNum(dto);
}
}

@ -1,5 +1,6 @@
package org.springblade.erpdata.service.impl; package org.springblade.erpdata.service.impl;
import jakarta.annotation.Resource;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException; import org.springblade.core.log.exception.ServiceException;
@ -28,6 +29,7 @@ import java.util.*;
@Service @Service
public class ErpDataProduceServiceImpl implements IErpDataProduceService { public class ErpDataProduceServiceImpl implements IErpDataProduceService {
@Resource
private final ErpDataProduceMapper erpDataProduceMapper; private final ErpDataProduceMapper erpDataProduceMapper;
private final JdbcTemplate jdbcTemplate; private final JdbcTemplate jdbcTemplate;
@ -306,4 +308,9 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService {
} }
return (String) code; return (String) code;
} }
@Override
public List<Map<String, String>> trialItemList(List<String> nameList) {
return erpDataProduceMapper.trialItemList(nameList);
}
} }

Loading…
Cancel
Save