Compare commits

..

No commits in common. 'b50ff5b3c904878ed1e769ee71fa0b7e8b477f76' and '2c706254ec250e0a83e168a7897ff6ce4ad27e0e' have entirely different histories.

  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,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

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

@ -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;
} }

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

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

@ -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,82 +80,51 @@ 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));
Long craftId = newEntity.getCraftAbilityId();
// 获取相同工艺能力下的所有已有规则 // 校验是否与同工艺能力的已有数据存在区间重叠
List<BsAssignEntity> sameCraftEntities = existingGroupByCraft.getOrDefault(craftId, new ArrayList<>()); for (BsAssignEntity newEntity : addList) {
// 校验单面积区间合理性:上限必须 >= 下限
// 校验单面积区间是否完全重复(左右边界都相等) if (newEntity.getUpArea().compareTo(newEntity.getLowArea()) < 0) {
boolean hasDuplicateSingleArea = sameCraftEntities.stream() return R.fail("单面积上限不能小于单面积下限");
.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("单面积上限不能小于单面积下限") ;
} }
// 单批面积区间 // 校验单批面积区间合理性:上限必须 >= 下限
if (entity.getSingleUpArea().compareTo(entity.getSingleDownArea()) < 0) { if (newEntity.getSingleUpArea().compareTo(newEntity.getSingleDownArea()) < 0) {
R.fail("单批面积上限不能小于单批面积下限"); return R.fail("单批面积上限不能小于单批面积下限");
} }
// 拼接质量等级名称 // 拼接质量等级名称
String prodMarkNames = parseProdMarkNames(entity.getProdMarkId()); String prodMarkNames = parseProdMarkNames(newEntity.getProdMarkId());
entity.setProdMark(prodMarkNames); newEntity.setProdMark(prodMarkNames);
// 校验是否与同工艺能力的已有数据完全重复 Long craftId = newEntity.getCraftAbilityId();
String duplicateError = validateDuplicateWithSameCraft(entity, existingGroupByCraft); // 获取相同工艺能力下的所有已有规则
if (duplicateError != null) { List<BsAssignEntity> sameCraftEntities = existingGroupByCraft.getOrDefault(craftId, new ArrayList<>());
return R.fail(duplicateError);
// 不校验区间是否重叠,校验单面积区间是否完全重复(左右边界都相等)
boolean hasDuplicateSingleArea = sameCraftEntities.stream()
.anyMatch(existing ->
newEntity.getLowArea().compareTo(existing.getLowArea()) == 0 &&
newEntity.getUpArea().compareTo(existing.getUpArea()) == 0
);
if (hasDuplicateSingleArea) {
return R.fail("单面积上下限已存在,请检查数据");
} }
}
return null; // 校验单批面积区间是否完全重复(左右边界都相等)
} boolean hasDuplicateBatchArea = sameCraftEntities.stream()
.anyMatch(existing ->
newEntity.getSingleDownArea().compareTo(existing.getSingleDownArea()) == 0 &&
newEntity.getSingleUpArea().compareTo(existing.getSingleUpArea()) == 0
);
if (hasDuplicateBatchArea) {
return R.fail("单批面积上下限已存在,请检查数据");
}
@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);
R<QualityGradeEntity> entity = iWorkOrderClient.getByName(str.trim()); ids.add(entity.getData().getId().toString());
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()); String category = DictCache.getKey("AssignPoint", noticeExcel.getPointTypeName());
@ -242,18 +222,114 @@ 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
&& (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("未匹配到已遍历区间,将当前数据加入已遍历集合");
} }
// 通用校验 // 4. 遍历完成后的结果提示
R validationResult = validateBeforeSave(noticeList, null); if (!foundMatch) {
if (validationResult != null) { System.out.println("\n遍历完成,未发现任何数据的上限落在之前遍历数据的上下限区间内");
return validationResult; return R.data(saveBatch(noticeList));
} }
// 保存
return R.data(saveBatch(noticeList));
return R.data(null);
} }
@ -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);
}
} }

@ -40,11 +40,9 @@ 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.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.constant.DsPartConstant;
import org.springblade.desk.dashboard.pojo.vo.*; import org.springblade.desk.dashboard.pojo.vo.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -77,7 +75,6 @@ public class DsPartController extends BladeController {
private final IDsPartService dsPartService; private final IDsPartService dsPartService;
/** /**
* 零件信息表 详情 * 零件信息表 详情
*/ */
@ -276,21 +273,6 @@ public class DsPartController extends BladeController {
return R.data(dsPartService.selectAll()); 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,11 +288,4 @@ public interface IDsPartService extends BaseService<DsPartEntity> {
* @return * @return
*/ */
List<DsProcessMoldToolEntity> getClassCakeWork(String partCode,String roamNo,String partVersion); 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); updateById(dsPart);
if (!TaskingConstant.IS_SINTERING.equals(dsPart.getIsSintering())) { if (!TaskingConstant.IS_SINTERING.equals(dsPart.getIsSintering())) {
if ((org.apache.commons.lang3.StringUtils.isNotBlank(dsPart.getCraftWay()) && dsPart.getCraftWay().contains("4"))) { 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)) { if (!CollectionUtils.isEmpty(zPartList)) {
@ -848,21 +848,6 @@ public class DsPartServiceImpl extends BaseServiceImpl<DsPartMapper, DsPartEntit
return null; 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,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);
} }

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

@ -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);

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

@ -2,17 +2,4 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!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"> <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> </mapper>

@ -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);
} }

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

@ -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;
}
} }

@ -1,6 +1,5 @@
package org.springblade.erpdata.service.impl; package org.springblade.erpdata.service.impl;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.google.protobuf.ServiceException; import com.google.protobuf.ServiceException;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -9,7 +8,6 @@ import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.Func;
import org.springblade.desk.dashboard.pojo.entity.DsPartEntity; import org.springblade.desk.dashboard.pojo.entity.DsPartEntity;
import org.springblade.erpdata.mapper.ErpPartMapper; import org.springblade.erpdata.mapper.ErpPartMapper;
import org.springblade.erpdata.mapper.ErpPartoplinkFirseqMapper;
import org.springblade.erpdata.mapper.ErpWoMapper; import org.springblade.erpdata.mapper.ErpWoMapper;
import org.springblade.erpdata.pojo.dto.table.Wo; import org.springblade.erpdata.pojo.dto.table.Wo;
import org.springblade.erpdata.service.IErpPartService; import org.springblade.erpdata.service.IErpPartService;
@ -28,10 +26,9 @@ import java.sql.Timestamp;
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@Service @Service
public class ErpPartServiceImpl implements IErpPartService { public class ErpPartServiceImpl extends BaseServiceImpl<ErpPartMapper, Wo> implements IErpPartService {
private final DataSource dataSource; private final DataSource dataSource;
private final ErpPartMapper erpPartMapper;
@Override @Override
public void sendingPartGiveErp(DsPartEntity dsPart) { public void sendingPartGiveErp(DsPartEntity dsPart) {
@ -62,25 +59,4 @@ public class ErpPartServiceImpl implements IErpPartService {
log.error("JDBC调用ERP失败:{}", dsPart.getPartCode(), e); 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