Compare commits

...

10 Commits

  1. 3
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 2
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/dashboard/constant/DsPartConstant.java
  3. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrderCraft.java
  4. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MakeRec.java
  5. 15
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/OrderDeclare.java
  6. 9
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataPartClient.java
  7. 5
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataPartClientFallback.java
  8. 21
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java
  9. 14
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java
  10. 101
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java
  11. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/BatConfigMapper.xml
  12. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IBsAssignService.java
  13. 267
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/BsAssignServiceImpl.java
  14. 18
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/controller/DsPartController.java
  15. 7
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/IDsPartService.java
  16. 17
      blade-service/blade-desk/src/main/java/org/springblade/desk/dashboard/service/impl/DsPartServiceImpl.java
  17. 30
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEpciuInspectionPointExcel.java
  18. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  19. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DeductionPreserveController.java
  20. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DisTaskingMapper.xml
  21. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IOrderDeclareService.java
  22. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DisTaskingServiceImpl.java
  23. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/OrderDeclareServiceImpl.java
  24. BIN
      blade-service/blade-desk/src/main/resources/Excel/QA/环保巡检点配置导入模板.xls
  25. 6
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataPartClient.java
  26. 13
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java
  27. 2
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java
  28. 7
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpPartMapper.java
  29. 13
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpPartMapper.xml
  30. 6
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java
  31. 9
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpPartService.java
  32. 76
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java
  33. 26
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpPartServiceImpl.java

@ -31,7 +31,8 @@ public interface LauncherConstant {
/**
* nacos dev 地址
*/
// String NACOS_DEV_ADDR = "192.168.249.27:8848";
//String NACOS_DEV_ADDR = "192.168.249.27:8848";
String NACOS_DEV_ADDR = "127.0.0.1:8848";
/**R

@ -27,5 +27,5 @@ public interface DsPartConstant {
*/
Integer SIN_TER_TYPE_SMM = 5;
//endregion
String PDM_DRAWING_URL = "http://MESLoginUser:MESloginUseradmin@pdm.caoe.com/Windchill/netmarkets/jsp/ext/caoe/mes/export.jsp?oid=";
}

@ -120,4 +120,10 @@ public class YieldOrderCraft extends BaseEntity {
*/
@TableField(value = "IS_OUTSOURCE")
private Boolean isOutsource;
/**
* 加工中心
*/
@TableField(exist = false)
private String workCenterName;
}

@ -1,5 +1,6 @@
package org.springblade.desk.produce.pojo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -28,6 +29,10 @@ public class MakeRec extends BaseEntity {
@Schema(description = "操作工")
private Long worker;
@Schema(description = "操作工")
@TableField(exist = false)
private String workerName;
@Schema(description = "报工日期")
private Date makeTime;

@ -63,7 +63,7 @@ public class OrderDeclare extends BaseEntity {
private String quaLevel;
@Schema(description = "数量")
private Double quantity;
private Integer quantity;
@Schema(description = "备注")
private String remark;
@ -83,4 +83,17 @@ public class OrderDeclare extends BaseEntity {
@TableField(exist = false)
@Schema(description = "状态名称")
private String podStatusName;
@TableField(exist = false)
@Schema(description = "申报人")
private String createUserName;
@TableField(exist = false)
@Schema(description = "库存部门")
private String deptNo;
@TableField(exist = false)
@Schema(description = "库房号")
private String warnNo;
}

@ -43,6 +43,7 @@ public interface IErpDataPartClient {
String API_PREFIX = "/feign/erpdata/client";
String SENDING_PART_GIVE_ERP = API_PREFIX + "/sendingPartGiveErp";
String OPEN_PDM_DRAWING = API_PREFIX + "/openPdmDrawing";
/**
* 调用erp过程发送零件信息烧结零件不同步erp
@ -50,4 +51,12 @@ public interface IErpDataPartClient {
*/
@PostMapping(SENDING_PART_GIVE_ERP)
void sendingPartGiveErp(org.springblade.desk.dashboard.pojo.entity.DsPartEntity dsPart);
/**
* 获取pdm图纸地址
* @param partCode
* @return
*/
@PostMapping(OPEN_PDM_DRAWING)
String openPdmDrawing(String partCode);
}

@ -16,4 +16,9 @@ public class IErpDataPartClientFallback implements IErpDataPartClient {
public void sendingPartGiveErp(org.springblade.desk.dashboard.pojo.entity.DsPartEntity dsPart) {
R.fail("调用erp过程发送零件信息 失败");
}
@Override
public String openPdmDrawing(String partCode) {
return "获取PDM图纸失败";
}
}

@ -4,6 +4,7 @@ package org.springblade.erpdata.feign;
import org.springblade.common.constant.LauncherConstant;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.entity.OrderDeclare;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
@ -40,12 +41,14 @@ public interface IErpDataProduceClient {
String COMPLETE_ORDER = API_PREFIX + "/completeOrder";
String RECEIVE_ORDER = API_PREFIX + "/receiveOrder";
String LOAD_REWORK_NO_PROCESS = API_PREFIX + "/loadReworkNoProcess";
String SIGN_DELETE = API_PREFIX + "/signDelete";
String SAVE_DECLARE = API_PREFIX + "/saveDeclare";
/**
* 缺件申报-通过零件号获取批次号
*/
@GetMapping(QUERY_BATCH)
R<QueryBatchVO> queryBatch(@RequestParam("partCode") String partCode);
R<List<QueryBatchVO>> queryBatch(@RequestParam("partCode") String partCode);
/**
* 返工订单
@ -152,4 +155,20 @@ public interface IErpDataProduceClient {
*/
@GetMapping(LOAD_REWORK_NO_PROCESS)
R<List<MesRbRedoRoutDTO>> loadReworkNoProcess();
/**
* 删除申请单
*/
@GetMapping(SIGN_DELETE)
R<Boolean> signDeleteErp(@RequestParam(value = "useCode") String useCode);
/**
* 提交申请单
*/
@GetMapping(SAVE_DECLARE)
R<String> saveDeclare(@RequestParam(value = "partCode") String partCode, @RequestParam(value = "batchNo") String batchNo,
@RequestParam(value = "quantity") Integer quantity, @RequestParam(value = "remark") String remark,
@RequestParam(value = "quaLevel") String quaLevel, @RequestParam(value = "deptNo") String deptNo,
@RequestParam(value = "warnNo") String warnNo, @RequestParam(value = "locationNo") String locationNo,
@RequestParam(value = "woCode") String woCode, @RequestParam(value = "userName") String userName);
}

@ -2,6 +2,7 @@ package org.springblade.erpdata.feign;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.entity.OrderDeclare;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
@ -21,7 +22,7 @@ import java.util.Map;
public class IErpDataProduceClientFallback implements IErpDataProduceClient {
@Override
public R<QueryBatchVO> queryBatch(String partCode) {
public R<List<QueryBatchVO>> queryBatch(String partCode) {
return R.fail("获取数据失败");
}
@ -89,4 +90,15 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient {
public R<List<MesRbRedoRoutDTO>> loadReworkNoProcess() {
return R.fail("获取数据失败");
}
@Override
public R<Boolean> signDeleteErp(String useCode) {
return R.fail("获取数据失败");
}
@Override
public R<String> saveDeclare(String partCode, String batchNo, Integer quantity, String remark, String quaLevel, String deptNo, String warnNo, String locationNo, String woCode, String userName) {
return R.fail("获取数据失败");
}
}

@ -169,105 +169,8 @@ public class BsAssignController extends BladeController {
@ApiLog("分派规则维护修改")
@Operation(summary = "修改", description = "传入bsAssign")
public R update(@Valid @RequestBody BsAssignEntity bsAssign) {
List<BsAssignEntity> list = bsAssignService.list();
List<BsAssignEntity> traversedList = new ArrayList<>();
// 获取当前数据的单面积上限
BigDecimal currentUpperArea = bsAssign.getUpArea();
// 获取当前数据的单面积下限
BigDecimal currentLowArea = bsAssign.getLowArea();
//单批面积上限
BigDecimal singleUpArea = bsAssign.getSingleUpArea();
//单批面积下限
BigDecimal singleLowArea = bsAssign.getSingleDownArea();
Long currentCraftId = bsAssign.getCraftAbilityId();
for(BsAssignEntity entity:list){
if(entity.getId() == bsAssign.getId()){
continue;
}
// 检查当前数据的上限是否在已遍历数据的任意区间内
for (BsAssignEntity traversed : traversedList) {
BigDecimal traversedLowerArea = traversed.getLowArea();
BigDecimal traversedUpperArea = traversed.getUpArea();
//单批面积上限
BigDecimal traversedSingleUpArea = traversed.getSingleUpArea();
//单批面积下限
BigDecimal traversedSingleLowArea = traversed.getSingleDownArea();
Long traversedCraftId = traversed.getCraftAbilityId();
if(currentCraftId.equals(traversedCraftId)){
// 核心判断:当前上限 是否在 已遍历数据的[下限, 上限]区间内
if((currentLowArea.compareTo(traversedLowerArea)==1 && currentLowArea.compareTo(traversedUpperArea)==-1)
|| (currentUpperArea.compareTo(traversedLowerArea)==1 && currentUpperArea.compareTo(traversedUpperArea)==-1)){
return R.fail("单面积上下限已存在,请检查数据");
}
if(currentLowArea.compareTo(traversedLowerArea)<=0
&& (currentUpperArea.compareTo(traversedLowerArea)>=0 && currentUpperArea.compareTo(traversedUpperArea)<=0)){
return R.fail("单面积上下限已存在,请检查数据");
}
if((currentLowArea.compareTo(traversedLowerArea)>=0 && currentLowArea.compareTo(traversedUpperArea)<=0)
&& currentUpperArea.compareTo(traversedUpperArea)>=0){
return R.fail("单面积上下限已存在,请检查数据");
}
if(currentLowArea.compareTo(traversedLowerArea)<=0
&& currentUpperArea.compareTo(traversedUpperArea)>=0){
return R.fail("单面积上下限已存在,请检查数据");
}
if(currentLowArea.compareTo(traversedLowerArea)==0
&& currentUpperArea.compareTo(traversedUpperArea)==0){
return R.fail("单面积上下限已存在,请检查数据");
}
if((singleLowArea.compareTo(traversedSingleLowArea)==1 && singleLowArea.compareTo(traversedSingleUpArea)==-1) ||
(singleUpArea.compareTo(traversedSingleLowArea)==1 && singleUpArea.compareTo(traversedSingleUpArea)==-1)){
return R.fail("单批面积上下限已存在,请检查数据");
}
if(singleLowArea.compareTo(traversedSingleLowArea)<=0
&& (singleUpArea.compareTo(traversedSingleLowArea)>=0 && singleUpArea.compareTo(traversedSingleUpArea)<=0)){
return R.fail("单批面积上下限已存在,请检查数据");
}
if((singleLowArea.compareTo(traversedSingleLowArea)>=0 && currentLowArea.compareTo(traversedSingleUpArea)<=0)
&& singleUpArea.compareTo(traversedSingleUpArea)>=0){
return R.fail("单批面积上下限已存在,请检查数据");
}
if(singleLowArea.compareTo(traversedSingleLowArea)<=0
&& singleUpArea.compareTo(traversedSingleUpArea)>=0){
return R.fail("单批面积上下限已存在,请检查数据");
}
if(singleLowArea.compareTo(traversedSingleLowArea)==0 &&
singleUpArea.compareTo(traversedSingleUpArea)==0){
return R.fail("单批面积上下限已存在,请检查数据");
}
}
// if(singleUpArea.compareTo(traversedSingleLowArea)>=0 && singleUpArea.compareTo(traversedSingleUpArea)<=0){
// return R.fail("单批面积上限已存在,请检查数据");
// }
}
// 未匹配,将当前数据加入已遍历集合,继续下一条
traversedList.add(entity);
System.out.println("未匹配到已遍历区间,将当前数据加入已遍历集合");
}
return R.status(bsAssignService.updateById(bsAssign));
bsAssignService.update(bsAssign);
return R.success();
}
/**

@ -20,12 +20,12 @@
<select id="selectBatConfigPage" resultMap="batConfigResultMap">
SELECT *
FROM BA_BAT_CONFIG
FROM BS_BAT_CONFIG
WHERE is_deleted = 0
</select>
<select id="exportBatConfig" resultType="org.springblade.desk.basic.excel.BatConfigExcel">
SELECT *
FROM BA_BAT_CONFIG ${ew.customSqlSegment}
FROM BS_BAT_CONFIG ${ew.customSqlSegment}
</select>
</mapper>

@ -88,4 +88,12 @@ public interface IBsAssignService extends BaseService<BsAssignEntity> {
*/
BsAssignEntity getByPartCode(Long abilityId, String partCode);
/**
* 更新分派规则带校验
*
* @param bsAssign 待更新的实体
* @return 更新结果
*/
void update(BsAssignEntity bsAssign);
}

@ -80,51 +80,82 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
return page.setRecords(baseMapper.selectBsAssignPage(page, bsAssign));
}
@Override
public R saveBat(List<BsAssignEntity> addList) {
Map<Long, List<BsAssignEntity>> existingGroupByCraft = list().stream()
.collect(Collectors.groupingBy(BsAssignEntity::getCraftAbilityId));
// 校验是否与同工艺能力的已有数据存在区间重叠
for (BsAssignEntity newEntity : addList) {
// 校验单面积区间合理性:上限必须 >= 下限
if (newEntity.getUpArea().compareTo(newEntity.getLowArea()) < 0) {
return R.fail("单面积上限不能小于单面积下限");
}
// 校验单批面积区间合理性:上限必须 >= 下限
if (newEntity.getSingleUpArea().compareTo(newEntity.getSingleDownArea()) < 0) {
return R.fail("单批面积上限不能小于单批面积下限");
/**
* 校验新数据是否与同工艺能力的已有数据存在完全重复
*/
private String validateDuplicateWithSameCraft(BsAssignEntity newEntity, Map<Long, List<BsAssignEntity>> existingGroupByCraft) {
Long craftId = newEntity.getCraftAbilityId();
// 获取相同工艺能力下的所有已有规则
List<BsAssignEntity> sameCraftEntities = existingGroupByCraft.getOrDefault(craftId, new ArrayList<>());
// 校验单面积区间是否完全重复(左右边界都相等)
boolean hasDuplicateSingleArea = sameCraftEntities.stream()
.anyMatch(existing ->
newEntity.getLowArea().compareTo(existing.getLowArea()) == 0 &&
newEntity.getUpArea().compareTo(existing.getUpArea()) == 0
);
if (hasDuplicateSingleArea) {
return "单面积上下限已存在,请检查数据";
}
// 校验单批面积区间是否完全重复(左右边界都相等)
boolean hasDuplicateBatchArea = sameCraftEntities.stream()
.anyMatch(existing ->
newEntity.getSingleDownArea().compareTo(existing.getSingleDownArea()) == 0 &&
newEntity.getSingleUpArea().compareTo(existing.getSingleUpArea()) == 0
);
if (hasDuplicateBatchArea) {
return "单批面积上下限已存在,请检查数据";
}
return null;
}
/**
* 校验
*/
private R validateBeforeSave(List<BsAssignEntity> entities, Long excludeId) {
// 查询所有已有数据(排除当前更新的记录)
List<BsAssignEntity> allExisting = list().stream()
.filter(e -> excludeId == null || !e.getId().equals(excludeId))
.toList();
// 按工艺能力分组
Map<Long, List<BsAssignEntity>> existingGroupByCraft = allExisting.stream()
.collect(Collectors.groupingBy(BsAssignEntity::getCraftAbilityId));
for (BsAssignEntity entity : entities) {
// 单面积区间
if (entity.getUpArea().compareTo(entity.getLowArea()) < 0) {
R.fail("单面积上限不能小于单面积下限") ;
}
// 拼接质量等级名称
String prodMarkNames = parseProdMarkNames(newEntity.getProdMarkId());
newEntity.setProdMark(prodMarkNames);
Long craftId = newEntity.getCraftAbilityId();
// 获取相同工艺能力下的所有已有规则
List<BsAssignEntity> sameCraftEntities = existingGroupByCraft.getOrDefault(craftId, new ArrayList<>());
// 不校验区间是否重叠,校验单面积区间是否完全重复(左右边界都相等)
boolean hasDuplicateSingleArea = sameCraftEntities.stream()
.anyMatch(existing ->
newEntity.getLowArea().compareTo(existing.getLowArea()) == 0 &&
newEntity.getUpArea().compareTo(existing.getUpArea()) == 0
);
if (hasDuplicateSingleArea) {
return R.fail("单面积上下限已存在,请检查数据");
// 单批面积区间
if (entity.getSingleUpArea().compareTo(entity.getSingleDownArea()) < 0) {
R.fail("单批面积上限不能小于单批面积下限");
}
// 校验单批面积区间是否完全重复(左右边界都相等)
boolean hasDuplicateBatchArea = sameCraftEntities.stream()
.anyMatch(existing ->
newEntity.getSingleDownArea().compareTo(existing.getSingleDownArea()) == 0 &&
newEntity.getSingleUpArea().compareTo(existing.getSingleUpArea()) == 0
);
// 拼接质量等级名称
String prodMarkNames = parseProdMarkNames(entity.getProdMarkId());
entity.setProdMark(prodMarkNames);
if (hasDuplicateBatchArea) {
return R.fail("单批面积上下限已存在,请检查数据");
// 校验是否与同工艺能力的已有数据完全重复
String duplicateError = validateDuplicateWithSameCraft(entity, existingGroupByCraft);
if (duplicateError != null) {
return R.fail(duplicateError);
}
}
return null;
}
@Override
public R saveBat(List<BsAssignEntity> addList) {
// 通用校验
R validationResult = validateBeforeSave(addList, null);
if (validationResult != null) {
return validationResult;
}
// 保存
return R.status(saveBatch(addList));
@ -160,24 +191,9 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
@Override
public R importExcel(List<BsAssignExcel> listexcel) {
List<BsAssignEntity> noticeList = new ArrayList<>();
for (BsAssignExcel current : listexcel) {
// 获取当前数据的单面积上限
BigDecimal currentUpperArea = current.getUpArea();
// 获取当前数据的单面积下限
BigDecimal currentLowArea = current.getLowArea();
//单批面积上限
BigDecimal singleUpArea = current.getSingleUpArea();
//单批面积下限
BigDecimal singleLowArea = current.getSingleDownArea();
if(currentUpperArea.compareTo(currentLowArea) < 0){
return R.fail("单面积上限不能小于单面积下限");
}
if(singleUpArea.compareTo(singleLowArea) < 0){
return R.fail("单批面积上限不能小于单批面积下限");
}
}
listexcel.forEach(noticeExcel -> {
// 先转换Excel数据为实体对象
for (BsAssignExcel noticeExcel : listexcel) {
BsAssignEntity notice = BeanUtil.copy(noticeExcel, BsAssignEntity.class);
//工艺能力
@ -205,16 +221,20 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
notice.setCenterId(oems.get(0).getId());
}
// 质量等级处理
String prodmark = noticeExcel.getProdMark();
List<String> strs = Arrays.asList(prodmark.split(","));
List<String> ids = new ArrayList<>();
for(String str : strs){
R<QualityGradeEntity> entity = iWorkOrderClient.getByName(str);
ids.add(entity.getData().getId().toString());
if (prodmark != null && !prodmark.isEmpty()) {
List<String> strs = Arrays.asList(prodmark.split(","));
List<String> ids = new ArrayList<>();
for (String str : strs) {
R<QualityGradeEntity> entity = iWorkOrderClient.getByName(str.trim());
if (entity.getData() != null) {
ids.add(entity.getData().getId().toString());
}
}
String str = ids.stream().collect(Collectors.joining(","));
notice.setProdMarkId(str);
}
String str = ids.stream().collect(Collectors.joining(","));
notice.setProdMarkId(str);
//指定类型
String category = DictCache.getKey("AssignPoint", noticeExcel.getPointTypeName());
@ -222,114 +242,18 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
//限制类型
String categorylimit = DictCache.getKey("AssignLimit", noticeExcel.getLimitTypeName());
notice.setLimitType(categorylimit);
noticeList.add(notice);
});
List<BsAssignEntity> all = new ArrayList<>();
List<BsAssignEntity> list = this.list();
all.addAll(list);
all.addAll(noticeList);
boolean foundMatch = false;
// 2. 存储已遍历过的数据(用于区间匹配)
List<BsAssignEntity> traversedList = new ArrayList<>();
for (BsAssignEntity current : all) {
// 获取当前数据的单面积上限
BigDecimal currentUpperArea = current.getUpArea();
// 获取当前数据的单面积下限
BigDecimal currentLowArea = current.getLowArea();
//单批面积上限
BigDecimal singleUpArea = current.getSingleUpArea();
//单批面积下限
BigDecimal singleLowArea = current.getSingleDownArea();
Long currentCraftId = current.getCraftAbilityId();
// 检查当前数据的上限是否在已遍历数据的任意区间内
for (BsAssignEntity traversed : traversedList) {
BigDecimal traversedLowerArea = traversed.getLowArea();
BigDecimal traversedUpperArea = traversed.getUpArea();
//单批面积上限
BigDecimal traversedSingleUpArea = traversed.getSingleUpArea();
//单批面积下限
BigDecimal traversedSingleLowArea = traversed.getSingleDownArea();
Long traversedCraftId = traversed.getCraftAbilityId();
if(currentCraftId.equals(traversedCraftId)){
// 核心判断:当前上限 是否在 已遍历数据的[下限, 上限]区间内
if((currentLowArea.compareTo(traversedLowerArea)==1 && currentLowArea.compareTo(traversedUpperArea)==-1)
|| (currentUpperArea.compareTo(traversedLowerArea)==1 && currentUpperArea.compareTo(traversedUpperArea)==-1)){
return R.fail("单面积上下限已存在,请检查数据");
}
if(currentLowArea.compareTo(traversedLowerArea)<=0
&& (currentUpperArea.compareTo(traversedLowerArea)>=0 && currentUpperArea.compareTo(traversedUpperArea)<=0)){
return R.fail("单面积上下限已存在,请检查数据");
}
if((currentLowArea.compareTo(traversedLowerArea)>=0 && currentLowArea.compareTo(traversedUpperArea)<=0)
&& currentUpperArea.compareTo(traversedUpperArea)>=0){
return R.fail("单面积上下限已存在,请检查数据");
}
if(currentLowArea.compareTo(traversedLowerArea)<=0
&& currentUpperArea.compareTo(traversedUpperArea)>=0){
return R.fail("单面积上下限已存在,请检查数据");
}
if(currentLowArea.compareTo(traversedLowerArea)==0
&& currentUpperArea.compareTo(traversedUpperArea)==0){
return R.fail("单面积上下限已存在,请检查数据");
}
if((singleLowArea.compareTo(traversedSingleLowArea)==1 && singleLowArea.compareTo(traversedSingleUpArea)==-1) ||
(singleUpArea.compareTo(traversedSingleLowArea)==1 && singleUpArea.compareTo(traversedSingleUpArea)==-1)){
return R.fail("单批面积上下限已存在,请检查数据");
}
if(singleLowArea.compareTo(traversedSingleLowArea)<=0
&& (singleUpArea.compareTo(traversedSingleLowArea)>=0 && singleUpArea.compareTo(traversedSingleUpArea)<=0)){
return R.fail("单批面积上下限已存在,请检查数据");
}
if((singleLowArea.compareTo(traversedSingleLowArea)>=0 && currentLowArea.compareTo(traversedSingleUpArea)<=0)
&& singleUpArea.compareTo(traversedSingleUpArea)>=0){
return R.fail("单批面积上下限已存在,请检查数据");
}
if(singleLowArea.compareTo(traversedSingleLowArea)<=0
&& singleUpArea.compareTo(traversedSingleUpArea)>=0){
return R.fail("单批面积上下限已存在,请检查数据");
}
if(singleLowArea.compareTo(traversedSingleLowArea)==0 &&
singleUpArea.compareTo(traversedSingleUpArea)==0){
return R.fail("单批面积上下限已存在,请检查数据");
}
}
// if(singleUpArea.compareTo(traversedSingleLowArea)>=0 && singleUpArea.compareTo(traversedSingleUpArea)<=0){
// return R.fail("单批面积上限已存在,请检查数据");
// }
}
// 未匹配,将当前数据加入已遍历集合,继续下一条
traversedList.add(current);
System.out.println("未匹配到已遍历区间,将当前数据加入已遍历集合");
noticeList.add(notice);
}
// 4. 遍历完成后的结果提示
if (!foundMatch) {
System.out.println("\n遍历完成,未发现任何数据的上限落在之前遍历数据的上下限区间内");
return R.data(saveBatch(noticeList));
// 通用校验
R validationResult = validateBeforeSave(noticeList, null);
if (validationResult != null) {
return validationResult;
}
return R.data(null);
// 保存
return R.data(saveBatch(noticeList));
}
@ -373,4 +297,13 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
return baseMapper.selectOne(wrapper);
}
@Override
public void update(BsAssignEntity bsAssign) {
R validationResult = validateBeforeSave(List.of(bsAssign), bsAssign.getId());
if (validationResult != null) {
return;
}
updateById(bsAssign);
}
}

@ -40,9 +40,11 @@ import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.constant.DsPartConstant;
import org.springblade.desk.dashboard.pojo.vo.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -75,6 +77,7 @@ public class DsPartController extends BladeController {
private final IDsPartService dsPartService;
/**
* 零件信息表 详情
*/
@ -273,6 +276,21 @@ public class DsPartController extends BladeController {
return R.data(dsPartService.selectAll());
}
/**
* 获取pdm图纸地址
*/
@GetMapping("/getPdmDocLink")
@ApiOperationSupport(order = 1)
@Operation(summary = "获取pdm图纸地址")
public R syncPart(@RequestParam String partCode) {
String url = null;
String docLink = dsPartService.openPdmDrawing(partCode);
if (StringUtils.isNotBlank(docLink)) {
url = DsPartConstant.PDM_DRAWING_URL + docLink;
}
return R.data(url);
}
/**
* 测试接口

@ -288,4 +288,11 @@ public interface IDsPartService extends BaseService<DsPartEntity> {
* @return
*/
List<DsProcessMoldToolEntity> getClassCakeWork(String partCode,String roamNo,String partVersion);
/**
* 根据零件号查询图纸
* @param partCode
* @return
*/
String openPdmDrawing(String partCode);
}

@ -426,7 +426,7 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
updateById(dsPart);
if (!TaskingConstant.IS_SINTERING.equals(dsPart.getIsSintering())) {
if ((org.apache.commons.lang3.StringUtils.isNotBlank(dsPart.getCraftWay()) && dsPart.getCraftWay().contains("4"))) {
// todo getErpDataPartClient().sendingPartGiveErp(dsPart);
//todo getErpDataPartClient().sendingPartGiveErp(dsPart);
}
}
if (!CollectionUtils.isEmpty(zPartList)) {
@ -848,6 +848,21 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
return null;
}
@Override
public String openPdmDrawing(String partCode) {
//判断零件是否存在
List<DsPartEntity> dsPartEntityList = selectDsPartByPatCode(partCode);
if(CollectionUtils.isEmpty(dsPartEntityList)){
throw new ServiceException("零件号不存在:"+partCode);
}
log.info("零件号存在:{}",partCode);
//查询erp
String url = getErpDataPartClient().openPdmDrawing(partCode);
return url;
}
/**
* 创建维护任务
*/

@ -71,18 +71,8 @@ public class BsEpciuInspectionPointExcel implements Serializable {
@ColumnWidth(20)
@ExcelProperty("巡检点位置")
private String insSite;
/**
* 上次巡检日期
*/
@ColumnWidth(20)
@ExcelProperty("上次检验日期")
private Date lastInsCycle;
/**
* 备注
*/
@ColumnWidth(20)
@ExcelProperty("备注")
private String memo;
/**
* 是否已删除
*/
@ -99,7 +89,21 @@ public class BsEpciuInspectionPointExcel implements Serializable {
* 巡检周期
*/
@ColumnWidth(20)
@ExcelProperty("巡检周期")
@ExcelProperty("巡检周期(h)")
private Long insCycle;
/**
* 上次巡检日期
*/
@ColumnWidth(20)
@ExcelProperty("上次检验日期")
private Date lastInsCycle;
/**
* 备注
*/
@ColumnWidth(20)
@ExcelProperty("备注")
private String memo;
}

@ -21,7 +21,9 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.*;
import org.springblade.desk.basic.pojo.entity.WorkCenter;
import org.springblade.desk.basic.service.IQualityGradeService;
import org.springblade.desk.basic.service.IWorkCenterService;
import org.springblade.desk.dashboard.constant.DsCraftConstant;
import org.springblade.desk.dashboard.constant.DsPartConstant;
import org.springblade.desk.dashboard.pojo.entity.*;
@ -88,6 +90,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
private final IDsPartVersionService partVersionService;
private final MoldDemandMapper moldDemandMapper;
private final IPlateGoodsRecordService plateGoodsRecordService;
private final IWorkCenterService workCenterService;
@Value("${business.oldMes.url}")
private String oldMesUrl;
@ -1047,6 +1050,12 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
boolean result = this.verifyYieldOrderResource(yieldOrder);
if(result){
List<YieldOrderCraft> list = yieldOrderCraftService.list(Wrappers.<YieldOrderCraft>lambdaQuery().eq(YieldOrderCraft::getYoId,yieldOrder.getId()));
list.stream().forEach(craft -> {
if(craft.getWorkCenterId() != null){
WorkCenter workCenter = workCenterService.getById(craft.getWorkCenterId());
craft.setWorkCenterName(workCenter.getWcName());
}
});
return list;
}
}

@ -21,6 +21,8 @@ import org.springblade.desk.produce.pojo.vo.DeductionPreserveVO;
import org.springblade.desk.produce.service.IDeductionPreserveService;
import org.springblade.desk.produce.service.IOrderDeclareService;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springblade.system.cache.UserCache;
import org.springblade.system.pojo.entity.User;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@ -61,7 +63,7 @@ public class DeductionPreserveController extends BladeController {
return R.data(deductionPreserveService.queryData(Condition.getPage(query), deductionPreserve));
}
@GetMapping("DeclarePage")
@GetMapping("orderDeclarePage")
@ApiOperationSupport(order = 4)
@Operation(summary = "缺件申请列表", description = "")
public R<IPage<OrderDeclare>> orderDeclarePage(OrderDeclareDto orderDeclareDto, Query query) {
@ -74,6 +76,8 @@ public class DeductionPreserveController extends BladeController {
IPage<OrderDeclare> page = orderDeclareService.page(Condition.getPage(query), wrapper);
for (OrderDeclare pageRecord : page.getRecords()) {
pageRecord.setPodStatusName(OrderDeclare.podStatusMap.get(pageRecord.getPodStatus()));
User user = UserCache.getUser(pageRecord.getCreateUser());
pageRecord.setCreateUserName(user == null ? "" : user.getName());
}
return R.data(page);
}
@ -88,7 +92,7 @@ public class DeductionPreserveController extends BladeController {
@GetMapping("/queryBatch")
@ApiOperationSupport(order = 6)
@Operation(summary = "缺件申报-通过零件号获取批次号", description = "")
public R<QueryBatchVO> queryBatch(String partCode) {
public R<List<QueryBatchVO>> queryBatch(String partCode) {
return R.data(orderDeclareService.queryBatch(partCode));
}

@ -64,6 +64,7 @@
LEFT JOIN BS_PROCESS_SET d ON a.PPS_ID = d.ID
LEFT JOIN BS_TEAM_SET e ON a.MAKE_TEAM = e.ID
WHERE a.WO_ID = #{id}
ORDER BY a.ORDERS
</select>
<select id="queryByWpIdlLst" resultType="org.springblade.desk.produce.pojo.entity.MakeRec">
select a.* from mes_make_rec a

@ -5,6 +5,8 @@ import org.springblade.desk.produce.pojo.dto.SaveDeclareDto;
import org.springblade.desk.produce.pojo.entity.OrderDeclare;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import java.util.List;
/**
* 缺件申请记录 服务类
*
@ -14,7 +16,7 @@ public interface IOrderDeclareService extends BaseService<OrderDeclare> {
boolean signDelete(Long id);
QueryBatchVO queryBatch(String partCode);
List<QueryBatchVO> queryBatch(String partCode);
boolean saveDeclare(SaveDeclareDto saveDeclareDto);
}

@ -94,7 +94,14 @@ public class DisTaskingServiceImpl extends BaseServiceImpl<DisTaskingMapper, Dis
@Override
public List<MakeRec> queryByWpIdlLst(Long wpId) {
return baseMapper.queryByWpIdlLst(wpId);
List<MakeRec> makeRecs = baseMapper.queryByWpIdlLst(wpId);
makeRecs.forEach(makeRec -> {
User user = UserCache.getUser(makeRec.getWorker());
if (user != null) {
makeRec.setWorkerName(user.getName());
}
});
return makeRecs;
}
@Override

@ -6,6 +6,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.desk.produce.mapper.OrderDeclareMapper;
import org.springblade.desk.produce.pojo.dto.SaveDeclareDto;
import org.springblade.desk.produce.pojo.entity.*;
@ -13,8 +14,10 @@ import org.springblade.desk.produce.service.IOrderDeclareService;
import org.springblade.erpdata.feign.IErpDataProduceClient;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
@ -31,19 +34,23 @@ public class OrderDeclareServiceImpl extends BaseServiceImpl<OrderDeclareMapper,
private IErpDataProduceClient erpDataProduceClient;
@Override
@Transactional(rollbackFor = Exception.class)
public boolean signDelete(Long id) {
OrderDeclare orderDeclare = this.getById(id);
if (orderDeclare == null) {
return false;
}
// todo 调用erp,删除提交的数据
// this.signDeleteErp(orderDeclare.getUseCode());
// 调用erp,删除提交的数据
boolean res = erpDataProduceClient.signDeleteErp(orderDeclare.getUseCode()).getData();
if (!res) {
return res;
}
// 删除本地提交记录
return this.removeById(id);
}
@Override
public QueryBatchVO queryBatch(String partCode) {
public List<QueryBatchVO> queryBatch(String partCode) {
if (StringUtils.isBlank(partCode)) {
throw new ServiceException("请输入零件号!");
}
@ -51,6 +58,7 @@ public class OrderDeclareServiceImpl extends BaseServiceImpl<OrderDeclareMapper,
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean saveDeclare(SaveDeclareDto saveDeclareDto) {
List<OrderDeclare> orderDeclares = saveDeclareDto.getOrderDeclares();
if (CollectionUtils.isEmpty(orderDeclares)) {
@ -58,8 +66,12 @@ public class OrderDeclareServiceImpl extends BaseServiceImpl<OrderDeclareMapper,
}
for (OrderDeclare orderDeclare : orderDeclares) {
// 调用erp,提交申请,获取领用单号
// String code = prWorkOrderDao.saveDeclare(jsonObject, curUserInfo);
orderDeclare.setUseCode("code");
String code = erpDataProduceClient.saveDeclare(orderDeclare.getPartCode(), orderDeclare.getBatchNo(),
orderDeclare.getQuantity(), StringUtils.isBlank(orderDeclare.getRemark()) ? "" : orderDeclare.getRemark(),
orderDeclare.getQuaLevel(), orderDeclare.getDeptNo(), orderDeclare.getWarnNo(), orderDeclare.getLocationNo(),
orderDeclare.getWoCode(), AuthUtil.getUserName()).getData();
orderDeclare.setUseCode(code);
orderDeclare.setPodStatus(OrderDeclare.NEW_DATA);
}
return this.saveBatch(orderDeclares);
}

@ -28,4 +28,10 @@ public class ErpDataPartClient implements IErpDataPartClient{
public void sendingPartGiveErp(DsPartEntity dsPart) {
partService.sendingPartGiveErp(dsPart);
}
@Override
@GetMapping(OPEN_PDM_DRAWING)
public String openPdmDrawing(String partCode) {
return partService.openPdmDrawing(partCode);
}
}

@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.desk.produce.pojo.entity.OrderDeclare;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO;
@ -32,7 +33,7 @@ public class ErpDataProduceClient implements IErpDataProduceClient {
@Override
@GetMapping(QUERY_BATCH)
public R<QueryBatchVO> queryBatch(String partCode) {
public R<List<QueryBatchVO>> queryBatch(String partCode) {
return R.data(erpDataProduceService.queryBatch(partCode));
}
@ -102,4 +103,14 @@ public class ErpDataProduceClient implements IErpDataProduceClient {
return R.data(erpDataProduceService.loadReworkNoProcess());
}
@Override
public R<Boolean> signDeleteErp(String useCode) {
return R.data(erpDataProduceService.signDeleteErp(useCode));
}
@Override
public R<String> saveDeclare(String partCode, String batchNo, Integer quantity, String remark, String quaLevel, String deptNo, String warnNo, String locationNo, String woCode, String userName) {
return R.data(erpDataProduceService.saveDeclare(partCode, batchNo, quantity, remark, quaLevel, deptNo, warnNo, locationNo, woCode, userName));
}
}

@ -19,7 +19,7 @@ import java.util.Map;
*/
public interface ErpDataProduceMapper extends Mapper {
QueryBatchVO queryBatch(String partCode);
List<QueryBatchVO> queryBatch(String partCode);
List<ReworkProcessVO> loadReworkOrder(String reworkCode, String partCode, String batchNo, Integer current, Integer size);

@ -1,6 +1,8 @@
package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.mapper.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springblade.erpdata.pojo.dto.table.Wo;
/**
@ -8,7 +10,10 @@ import org.springblade.erpdata.pojo.dto.table.Wo;
*
* @author lqk
*/
public interface ErpPartMapper extends BaseMapper<Wo> {
public interface ErpPartMapper extends Mapper {
String selectPdmpart(@Param("partCode") String partCode);
String selectPrtbasdef(@Param("partCode") String partCode);
}

@ -2,4 +2,17 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace = "org.springblade.erpdata.mapper.ErpPartMapper">
<select id="selectPdmpart" resultType="java.lang.String">
select a.oid from (select a.*
from dba_mgr.v_mes_rb_pdmpart a
where a.prtno=#{partCode} order by createtime desc) a
where rownum=1
</select>
<select id="selectPrtbasdef" resultType="java.lang.String">
SELECT a.oid
FROM dba_mgr.v_mes_rb_prtbasdef a
WHERE a.prtno = #{partCode}
AND ROWNUM = 1;
</select>
</mapper>

@ -17,7 +17,7 @@ import java.util.Map;
public interface IErpDataProduceService {
QueryBatchVO queryBatch(String partCode);
List<QueryBatchVO> queryBatch(String partCode);
List<ReworkProcessVO> loadReworkOrder(String reworkCode, String partCode, String batchNo, Integer current, Integer size);
@ -44,4 +44,8 @@ public interface IErpDataProduceService {
boolean receiveOrder(String redono, Integer seqno, String prtno, String splcode, Double amount, String reqqty, String userName, int reworkgyFlag);
List<MesRbRedoRoutDTO> loadReworkNoProcess();
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);
}

@ -11,11 +11,18 @@ import org.springblade.erpdata.pojo.dto.table.Wo;
*
* @author lqk
*/
public interface IErpPartService extends BaseService<Wo> {
public interface IErpPartService {
/**
* 同步零件数据至ERP
* @param dsPart
*/
void sendingPartGiveErp(DsPartEntity dsPart) ;
/**
*获取pdm图纸地址
* @param partCode
* @return
*/
String openPdmDrawing(String partCode);
}

@ -2,6 +2,7 @@ package org.springblade.erpdata.service.impl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.erpdata.mapper.ErpDataProduceMapper;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
@ -32,7 +33,7 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService {
private final JdbcTemplate jdbcTemplate;
@Override
public QueryBatchVO queryBatch(String partCode) {
public List<QueryBatchVO> queryBatch(String partCode) {
return erpDataProduceMapper.queryBatch(partCode);
}
@ -232,4 +233,77 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService {
public List<MesRbRedoRoutDTO> loadReworkNoProcess() {
return erpDataProduceMapper.loadReworkNoProcess();
}
@Override
public Boolean signDeleteErp(String useCode) {
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
// 指定存储过程名(包含 DB Link)
.withProcedureName("dba_mgr.pro_rbqjdel")
// 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题)
.withoutProcedureColumnMetaDataAccess()
// 显式声明参数
.declareParameters(
new SqlParameter("v_invadjcode", Types.VARCHAR),
new SqlOutParameter("v_excnote", Types.VARCHAR),
new SqlOutParameter("v_excflag", Types.VARCHAR)
);
// 2. 封装输入参数
Map<String, Object> inParams = new HashMap<>();
inParams.put("v_invadjcode", useCode);
// 3. 执行并获取结果 Map
Map<String, Object> resultMap = jdbcCall.execute(inParams);
// 4. 提取输出参数
String excflag = (String) resultMap.get("v_excflag");
String excnote = (String) resultMap.get("v_excnote");
return !"0".equals(excflag);
}
@Override
public String saveDeclare(String partCode, String batchNo, Integer quantity, String remark, String quaLevel, String deptNo, String warnNo, String locationNo, String woCode, String userName) {
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate)
// 指定存储过程名(包含 DB Link)
.withProcedureName("dba_mgr.pro_rbqjmtn")
// 建议关闭元数据访问(通过 DB Link 访问时可避免权限/性能问题)
.withoutProcedureColumnMetaDataAccess()
// 显式声明参数
.declareParameters(
new SqlParameter("v_prtno", Types.VARCHAR),
new SqlParameter("v_splcode", Types.VARCHAR),
new SqlParameter("v_num", Types.INTEGER),
new SqlParameter("v_remark", Types.VARCHAR),
new SqlParameter("v_prtlotno", Types.VARCHAR),
new SqlParameter("v_deptno", Types.VARCHAR),
new SqlParameter("v_warno", Types.VARCHAR),
new SqlParameter("v_warlocno", Types.VARCHAR),
new SqlParameter("v_mtnman", Types.VARCHAR),
new SqlParameter("v_sono", Types.VARCHAR),
new SqlOutParameter("v_excnote", Types.VARCHAR),
new SqlOutParameter("v_excflag", Types.VARCHAR),
new SqlOutParameter("v_invadjcode", Types.VARCHAR)
);
// 2. 封装输入参数
Map<String, Object> inParams = new HashMap<>();
inParams.put("v_prtno", partCode);
inParams.put("v_splcode", batchNo);
inParams.put("v_num", quantity);
inParams.put("v_remark", remark);
inParams.put("v_prtlotno", quaLevel);
inParams.put("v_deptno", deptNo);
inParams.put("v_warno", warnNo);
inParams.put("v_warlocno", locationNo);
inParams.put("v_mtnman", userName);
inParams.put("v_sono", woCode);
// 3. 执行并获取结果 Map
Map<String, Object> resultMap = jdbcCall.execute(inParams);
// 4. 提取输出参数
String excflag = (String) resultMap.get("v_excflag");
String excnote = (String) resultMap.get("v_excnote");
Object code = resultMap.get("v_invadjcode");
if (code == null) {
throw new ServiceException("接口回传数据失败,请联系信息中心");
}
return (String) code;
}
}

@ -1,5 +1,6 @@
package org.springblade.erpdata.service.impl;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.google.protobuf.ServiceException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -8,6 +9,7 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.erpdata.mapper.ErpPartMapper;
import org.springblade.erpdata.mapper.ErpPartoplinkFirseqMapper;
import org.springblade.erpdata.mapper.ErpWoMapper;
import org.springblade.erpdata.pojo.dto.table.Wo;
import org.springblade.erpdata.service.IErpPartService;
@ -26,9 +28,10 @@ import java.sql.Timestamp;
@Slf4j
@RequiredArgsConstructor
@Service
public class ErpPartServiceImpl extends BaseServiceImpl<ErpPartMapper, Wo> implements IErpPartService {
public class ErpPartServiceImpl implements IErpPartService {
private final DataSource dataSource;
private final ErpPartMapper erpPartMapper;
@Override
public void sendingPartGiveErp(DsPartEntity dsPart) {
@ -59,4 +62,25 @@ public class ErpPartServiceImpl extends BaseServiceImpl<ErpPartMapper, Wo> imple
log.error("JDBC调用ERP失败:{}", dsPart.getPartCode(), e);
}
}
@Override
public String openPdmDrawing(String partCode) {
// 查询视图 v_mes_rb_pdmpart
log.info("查询erp获取图纸地址:{}",partCode);
String url = erpPartMapper.selectPdmpart(partCode);
if(StringUtils.isNotEmpty(url)){
log.info("从pdmpart获取到pdm图纸地址:{}", url);
return url;
}
// 如果v_mes_rb_pdmpart为空,查询v_mes_rb_prtbasdef
url = erpPartMapper.selectPrtbasdef(partCode);
if(StringUtils.isNotEmpty(url)){
log.info("从prtbasdef获取到pdm图纸地址:{}", url);
return url;
}
log.warn("未找到零件{}的pdm图纸地址", partCode);
return null;
}
}

Loading…
Cancel
Save