Compare commits

..

No commits in common. 'master' and 'liweidong' have entirely different histories.

  1. 3
      blade-common/src/main/java/org/springblade/common/constant/LauncherConstant.java
  2. 6
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/order/pojo/entity/YieldOrderCraft.java
  3. 5
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/MakeRec.java
  4. 15
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/produce/pojo/entity/OrderDeclare.java
  5. 21
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClient.java
  6. 14
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataProduceClientFallback.java
  7. 101
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/controller/BsAssignController.java
  8. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/mapper/BatConfigMapper.xml
  9. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/IBsAssignService.java
  10. 221
      blade-service/blade-desk/src/main/java/org/springblade/desk/basic/service/impl/BsAssignServiceImpl.java
  11. 30
      blade-service/blade-desk/src/main/java/org/springblade/desk/energy/excel/BsEpciuInspectionPointExcel.java
  12. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java
  13. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/controller/DeductionPreserveController.java
  14. 1
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/DisTaskingMapper.xml
  15. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/IOrderDeclareService.java
  16. 9
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/DisTaskingServiceImpl.java
  17. 22
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/OrderDeclareServiceImpl.java
  18. BIN
      blade-service/blade-desk/src/main/resources/Excel/QA/环保巡检点配置导入模板.xls
  19. 13
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataProduceClient.java
  20. 2
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataProduceMapper.java
  21. 6
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataProduceService.java
  22. 76
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataProduceServiceImpl.java

@ -31,8 +31,7 @@ public interface LauncherConstant {
/** /**
* nacos dev 地址 * 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"; String NACOS_DEV_ADDR = "127.0.0.1:8848";
/**R /**R

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

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

@ -63,7 +63,7 @@ public class OrderDeclare extends BaseEntity {
private String quaLevel; private String quaLevel;
@Schema(description = "数量") @Schema(description = "数量")
private Integer quantity; private Double quantity;
@Schema(description = "备注") @Schema(description = "备注")
private String remark; private String remark;
@ -83,17 +83,4 @@ public class OrderDeclare extends BaseEntity {
@TableField(exist = false) @TableField(exist = false)
@Schema(description = "状态名称") @Schema(description = "状态名称")
private String podStatusName; 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;
} }

@ -4,7 +4,6 @@ package org.springblade.erpdata.feign;
import org.springblade.common.constant.LauncherConstant; import org.springblade.common.constant.LauncherConstant;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; 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.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO; import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.QueryBatchVO;
@ -41,14 +40,12 @@ public interface IErpDataProduceClient {
String COMPLETE_ORDER = API_PREFIX + "/completeOrder"; String COMPLETE_ORDER = API_PREFIX + "/completeOrder";
String RECEIVE_ORDER = API_PREFIX + "/receiveOrder"; String RECEIVE_ORDER = API_PREFIX + "/receiveOrder";
String LOAD_REWORK_NO_PROCESS = API_PREFIX + "/loadReworkNoProcess"; String LOAD_REWORK_NO_PROCESS = API_PREFIX + "/loadReworkNoProcess";
String SIGN_DELETE = API_PREFIX + "/signDelete";
String SAVE_DECLARE = API_PREFIX + "/saveDeclare";
/** /**
* 缺件申报-通过零件号获取批次号 * 缺件申报-通过零件号获取批次号
*/ */
@GetMapping(QUERY_BATCH) @GetMapping(QUERY_BATCH)
R<List<QueryBatchVO>> queryBatch(@RequestParam("partCode") String partCode); R<QueryBatchVO> queryBatch(@RequestParam("partCode") String partCode);
/** /**
* 返工订单 * 返工订单
@ -155,20 +152,4 @@ public interface IErpDataProduceClient {
*/ */
@GetMapping(LOAD_REWORK_NO_PROCESS) @GetMapping(LOAD_REWORK_NO_PROCESS)
R<List<MesRbRedoRoutDTO>> loadReworkNoProcess(); 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,7 +2,6 @@ package org.springblade.erpdata.feign;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; 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.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO; import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.QueryBatchVO;
@ -22,7 +21,7 @@ import java.util.Map;
public class IErpDataProduceClientFallback implements IErpDataProduceClient { public class IErpDataProduceClientFallback implements IErpDataProduceClient {
@Override @Override
public R<List<QueryBatchVO>> queryBatch(String partCode) { public R<QueryBatchVO> queryBatch(String partCode) {
return R.fail("获取数据失败"); return R.fail("获取数据失败");
} }
@ -90,15 +89,4 @@ public class IErpDataProduceClientFallback implements IErpDataProduceClient {
public R<List<MesRbRedoRoutDTO>> loadReworkNoProcess() { public R<List<MesRbRedoRoutDTO>> loadReworkNoProcess() {
return R.fail("获取数据失败"); 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,8 +169,105 @@ public class BsAssignController extends BladeController {
@ApiLog("分派规则维护修改") @ApiLog("分派规则维护修改")
@Operation(summary = "修改", description = "传入bsAssign") @Operation(summary = "修改", description = "传入bsAssign")
public R update(@Valid @RequestBody BsAssignEntity bsAssign) { public R update(@Valid @RequestBody BsAssignEntity bsAssign) {
bsAssignService.update(bsAssign);
return R.success(); 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));
} }
/** /**

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

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

@ -80,15 +80,30 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
return page.setRecords(baseMapper.selectBsAssignPage(page, bsAssign)); return page.setRecords(baseMapper.selectBsAssignPage(page, bsAssign));
} }
/** @Override
* 校验新数据是否与同工艺能力的已有数据存在完全重复 public R saveBat(List<BsAssignEntity> addList) {
*/ Map<Long, List<BsAssignEntity>> existingGroupByCraft = list().stream()
private String validateDuplicateWithSameCraft(BsAssignEntity newEntity, Map<Long, List<BsAssignEntity>> existingGroupByCraft) { .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("单批面积上限不能小于单批面积下限");
}
// 拼接质量等级名称
String prodMarkNames = parseProdMarkNames(newEntity.getProdMarkId());
newEntity.setProdMark(prodMarkNames);
Long craftId = newEntity.getCraftAbilityId(); Long craftId = newEntity.getCraftAbilityId();
// 获取相同工艺能力下的所有已有规则 // 获取相同工艺能力下的所有已有规则
List<BsAssignEntity> sameCraftEntities = existingGroupByCraft.getOrDefault(craftId, new ArrayList<>()); List<BsAssignEntity> sameCraftEntities = existingGroupByCraft.getOrDefault(craftId, new ArrayList<>());
// 校验单面积区间是否完全重复(左右边界都相等) // 不校验区间是否重叠,校验单面积区间是否完全重复(左右边界都相等)
boolean hasDuplicateSingleArea = sameCraftEntities.stream() boolean hasDuplicateSingleArea = sameCraftEntities.stream()
.anyMatch(existing -> .anyMatch(existing ->
newEntity.getLowArea().compareTo(existing.getLowArea()) == 0 && newEntity.getLowArea().compareTo(existing.getLowArea()) == 0 &&
@ -96,7 +111,7 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
); );
if (hasDuplicateSingleArea) { if (hasDuplicateSingleArea) {
return "单面积上下限已存在,请检查数据"; return R.fail("单面积上下限已存在,请检查数据");
} }
// 校验单批面积区间是否完全重复(左右边界都相等) // 校验单批面积区间是否完全重复(左右边界都相等)
@ -107,55 +122,9 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
); );
if (hasDuplicateBatchArea) { if (hasDuplicateBatchArea) {
return "单批面积上下限已存在,请检查数据"; return R.fail("单批面积上下限已存在,请检查数据");
}
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("单面积上限不能小于单面积下限") ;
}
// 单批面积区间
if (entity.getSingleUpArea().compareTo(entity.getSingleDownArea()) < 0) {
R.fail("单批面积上限不能小于单批面积下限");
}
// 拼接质量等级名称
String prodMarkNames = parseProdMarkNames(entity.getProdMarkId());
entity.setProdMark(prodMarkNames);
// 校验是否与同工艺能力的已有数据完全重复
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)); return R.status(saveBatch(addList));
@ -191,9 +160,24 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
@Override @Override
public R importExcel(List<BsAssignExcel> listexcel) { public R importExcel(List<BsAssignExcel> listexcel) {
List<BsAssignEntity> noticeList = new ArrayList<>(); 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); BsAssignEntity notice = BeanUtil.copy(noticeExcel, BsAssignEntity.class);
//工艺能力 //工艺能力
@ -221,20 +205,16 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
notice.setCenterId(oems.get(0).getId()); notice.setCenterId(oems.get(0).getId());
} }
// 质量等级处理
String prodmark = noticeExcel.getProdMark(); String prodmark = noticeExcel.getProdMark();
if (prodmark != null && !prodmark.isEmpty()) {
List<String> strs = Arrays.asList(prodmark.split(",")); List<String> strs = Arrays.asList(prodmark.split(","));
List<String> ids = new ArrayList<>(); List<String> ids = new ArrayList<>();
for (String str : strs) { for(String str : strs){
R<QualityGradeEntity> entity = iWorkOrderClient.getByName(str.trim()); R<QualityGradeEntity> entity = iWorkOrderClient.getByName(str);
if (entity.getData() != null) {
ids.add(entity.getData().getId().toString()); ids.add(entity.getData().getId().toString());
} }
}
String str = ids.stream().collect(Collectors.joining(",")); String str = ids.stream().collect(Collectors.joining(","));
notice.setProdMarkId(str); notice.setProdMarkId(str);
}
//指定类型 //指定类型
String category = DictCache.getKey("AssignPoint", noticeExcel.getPointTypeName()); String category = DictCache.getKey("AssignPoint", noticeExcel.getPointTypeName());
@ -242,21 +222,117 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
//限制类型 //限制类型
String categorylimit = DictCache.getKey("AssignLimit", noticeExcel.getLimitTypeName()); String categorylimit = DictCache.getKey("AssignLimit", noticeExcel.getLimitTypeName());
notice.setLimitType(categorylimit); notice.setLimitType(categorylimit);
noticeList.add(notice); 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
R validationResult = validateBeforeSave(noticeList, null); && (currentUpperArea.compareTo(traversedLowerArea)>=0 && currentUpperArea.compareTo(traversedUpperArea)<=0)){
if (validationResult != null) { return R.fail("单面积上下限已存在,请检查数据");
return validationResult;
} }
// 保存 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("未匹配到已遍历区间,将当前数据加入已遍历集合");
}
// 4. 遍历完成后的结果提示
if (!foundMatch) {
System.out.println("\n遍历完成,未发现任何数据的上限落在之前遍历数据的上下限区间内");
return R.data(saveBatch(noticeList)); return R.data(saveBatch(noticeList));
} }
return R.data(null);
}
@Override @Override
public List<BsAssignExcel> exportBsAssign(Wrapper<BsAssignEntity> queryWrapper) { public List<BsAssignExcel> exportBsAssign(Wrapper<BsAssignEntity> queryWrapper) {
List<BsAssignExcel> bsAssignList = baseMapper.exportBsAssign(queryWrapper); List<BsAssignExcel> bsAssignList = baseMapper.exportBsAssign(queryWrapper);
@ -297,13 +373,4 @@ public class BsAssignServiceImpl extends BaseServiceImpl<BsAssignMapper, BsAssig
return baseMapper.selectOne(wrapper); return baseMapper.selectOne(wrapper);
} }
@Override
public void update(BsAssignEntity bsAssign) {
R validationResult = validateBeforeSave(List.of(bsAssign), bsAssign.getId());
if (validationResult != null) {
return;
}
updateById(bsAssign);
}
} }

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

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

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

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

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

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

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

@ -5,7 +5,6 @@ import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO; 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.MesRbRedoVO;
import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO; import org.springblade.erpdata.pojo.vo.PpmReportDetailModelVO;
import org.springblade.erpdata.pojo.vo.QueryBatchVO; import org.springblade.erpdata.pojo.vo.QueryBatchVO;
@ -33,7 +32,7 @@ public class ErpDataProduceClient implements IErpDataProduceClient {
@Override @Override
@GetMapping(QUERY_BATCH) @GetMapping(QUERY_BATCH)
public R<List<QueryBatchVO>> queryBatch(String partCode) { public R<QueryBatchVO> queryBatch(String partCode) {
return R.data(erpDataProduceService.queryBatch(partCode)); return R.data(erpDataProduceService.queryBatch(partCode));
} }
@ -103,14 +102,4 @@ public class ErpDataProduceClient implements IErpDataProduceClient {
return R.data(erpDataProduceService.loadReworkNoProcess()); 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 { public interface ErpDataProduceMapper extends Mapper {
List<QueryBatchVO> queryBatch(String partCode); QueryBatchVO queryBatch(String partCode);
List<ReworkProcessVO> loadReworkOrder(String reworkCode, String partCode, String batchNo, Integer current, Integer size); List<ReworkProcessVO> loadReworkOrder(String reworkCode, String partCode, String batchNo, Integer current, Integer size);

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

@ -2,7 +2,6 @@ package org.springblade.erpdata.service.impl;
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.desk.produce.pojo.dto.MesRbRedoRoutDTO; import org.springblade.desk.produce.pojo.dto.MesRbRedoRoutDTO;
import org.springblade.erpdata.mapper.ErpDataProduceMapper; import org.springblade.erpdata.mapper.ErpDataProduceMapper;
import org.springblade.erpdata.pojo.vo.MesRbRedoVO; import org.springblade.erpdata.pojo.vo.MesRbRedoVO;
@ -33,7 +32,7 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService {
private final JdbcTemplate jdbcTemplate; private final JdbcTemplate jdbcTemplate;
@Override @Override
public List<QueryBatchVO> queryBatch(String partCode) { public QueryBatchVO queryBatch(String partCode) {
return erpDataProduceMapper.queryBatch(partCode); return erpDataProduceMapper.queryBatch(partCode);
} }
@ -233,77 +232,4 @@ public class ErpDataProduceServiceImpl implements IErpDataProduceService {
public List<MesRbRedoRoutDTO> loadReworkNoProcess() { public List<MesRbRedoRoutDTO> loadReworkNoProcess() {
return erpDataProduceMapper.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;
}
} }

Loading…
Cancel
Save