电子档案

liweidong
maxiangong 2 days ago
parent 1655b9e399
commit 574b92c0e9
  1. 21
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataCheckerSealClient.java
  2. 13
      blade-service-api/blade-erpdata-api/src/main/java/org/springblade/erpdata/feign/IErpDataCheckerSealClientFallback.java
  3. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.java
  4. 8
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/mapper/WorkPlanMapper.xml
  5. 6
      blade-service/blade-desk/src/main/java/org/springblade/desk/produce/service/impl/WorkOrderServiceImpl.java
  6. 166
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java
  7. 22
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/feign/ErpDataCheckerSealClient.java
  8. 9
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataCheckerSealMapper.java
  9. 9
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataCheckerSealMapper.xml
  10. 7
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/IErpDataCheckerSealService.java
  11. 21
      blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/service/impl/ErpDataCheckerSealServiceImpl.java

@ -0,0 +1,21 @@
package org.springblade.erpdata.feign;
import org.springblade.common.constant.LauncherConstant;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(
value = LauncherConstant.APPLICATION_ERP_DATA_NAME,
fallback = IErpDataCheckerSealClientFallback.class
)
public interface IErpDataCheckerSealClient {
String API_PREFIX = "/feign/erpdata/checkerseal";
String GET_CHECK_MAN_BY_NEW_ERP_MES = API_PREFIX + "/getCheckManByNewErpMes";
@GetMapping(GET_CHECK_MAN_BY_NEW_ERP_MES)
String getCheckManByNewErpMes(@RequestParam("userName") String userName);
}

@ -0,0 +1,13 @@
package org.springblade.erpdata.feign;
import org.springframework.stereotype.Component;
@Component
public class IErpDataCheckerSealClientFallback implements IErpDataCheckerSealClient{
@Override
public String getCheckManByNewErpMes(String userName) {
return null;
}
}

@ -64,7 +64,7 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
MacToolUse getHangNumIsNull(Long wpId);
MacToolUse getDataByWpIdAndIndex(Long wpId, String numberIndex);
// List<DsRbFilePreserve> getDataByWcIdAndPpsId(Long wcId, Long ppsId,boolean aTrue);
List<ProReTemplate> getDataByWcIdAndPpsId(Long wcId, Long ppsId, boolean aTrue);
List<ProReTemplate> getDataByWcIdAndPpsId(Long wcId, Long ppsId, String line);
List<MesRbFilePreserveSlotEntity> getByRfpId(Long rfpId);
// MesQcProduceRunEntity getBoxInfoByWpIdMtnCode(Long wpId);
@ -80,7 +80,6 @@ public interface WorkPlanMapper extends BaseMapper<WorkPlan> {
List<DsPartRelationEntity> listByPartCodeNew(String partCode, Short indexNum);
List<WorkOrder> findByPartCodeAndMemoMes(String partCode, String memo);
DsPartSub getByPartCodeAndSubCodeMes(String partCode, String subCode);
String getCheckManByNewErpMes(String userName);
List<WorkPlanItemDetail> listByWpiIdMes(Long wpiId);

@ -162,10 +162,6 @@
select * from MES_WORK_ORDER a inner join MES_YIELD_ORDER b on a.YO_ID = b.ID where b.PART_CODE= #{partCode} and b.YP_CODE = #{memo}
</select>
<select id="getCheckManByNewErpMes" resultType="String">
select a.value1,a.value2 from v_rb_qms_checker_seal@nerp_mes_link a where a.checker_name= #{userName}
</select>
<select id="getQcReviewSheetListMes" resultType="org.springblade.desk.quality.pojo.entity.ReviewSheet">
select a.rs_code,a.memo,a.unqualified_qty,a.REVIEW_DATE from QA_REVIEW_SHEET a
-- inner join rb_pr_work_check b on a.wc_id = b.wc_id
@ -249,7 +245,7 @@
</select>
<select id="getBoxInfoByWpIdMtnCodeList" resultType="org.springblade.desk.produce.pojo.entity.MesQcProduceRunEntity">
select min(c.IN_DATE), max(c.OUT_DATE), 'Max:'||max(c.TEMP_SLOT)||'/'||'Min:'||min(c.temp_slot), max(c.DEVICE_ID)
select min(c.IN_DATE) as inDate, max(c.OUT_DATE) as outDate, 'Max:'||max(c.TEMP_SLOT)||'/'||'Min:'||min(c.temp_slot) as tempSlot, max(c.DEVICE_ID) as deviceId
from MES_QC_PRODUCE_RUN c where c.mtn_code in(
select a.mtn_code from MES_MAC_TOOL_USE a left join MES_EQUIPMENT b on a.EQUIPMENT_CARD = b.ID
where b.CATEGORYS = '烘箱设备' and a.WP_ID = #{wpId}
@ -293,7 +289,7 @@
<if test="wcId != null">
and a.WC_ID = #{wcId}
</if>
and a.PPS_ID = #{ppsId} and a.LINE = 0
and a.PPS_ID = #{ppsId} and a.LINE = #{line}
</select>

@ -64,6 +64,7 @@ import org.springblade.desk.quality.pojo.entity.*;
import org.springblade.desk.quality.pojo.vo.WorkPlanItemVO;
import org.springblade.desk.quality.service.*;
import org.springblade.desk.util.date.DateUtils;
import org.springblade.erpdata.feign.IErpDataCheckerSealClient;
import org.springblade.erpdata.feign.IErpDataLogisticsClient;
import org.springblade.erpdata.feign.IErpDataProduceClient;
import org.springblade.scheduling.pojo.entity.QualityGradeEntity;
@ -204,6 +205,9 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
private final ICenterTeamService centerTeamService;
@Resource
private final IErpDataCheckerSealClient erpDataCheckerSealClient;
@Override
public IPage<WorkOrderVO> selectWorkOrderPage(IPage<WorkOrderVO> page, WorkOrderDTO workOrder) {
return page.setRecords(baseMapper.selectWorkOrderPage(page, workOrder));
@ -2824,7 +2828,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
List<WorkPlanItemDetail> itemDetails = itemDetailMap.get(planItem.getId());
String checkManByNewErp = null;
try {
checkManByNewErp = workPlanMapper.getCheckManByNewErpMes(planItem.getCheckUserAccount());
checkManByNewErp = erpDataCheckerSealClient.getCheckManByNewErpMes(planItem.getCheckUserRealName());
} catch (Exception e) {
// DB Link 等异常降级,避免阻塞 PDF 生成
}

@ -67,6 +67,7 @@ import org.springblade.desk.quality.pojo.request.InspectionTaskStartNew;
import org.springblade.desk.quality.pojo.vo.*;
import org.springblade.desk.quality.service.*;
import org.springblade.desk.quality.wrapper.InspectionTaskListWrapper;
import org.springblade.erpdata.feign.IErpDataCheckerSealClient;
import org.springblade.scheduling.pojo.entity.WorkPlanEntity;
import org.springblade.system.feign.IDictClient;
import org.springblade.system.feign.IUserClient;
@ -77,6 +78,8 @@ import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@ -154,6 +157,10 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
private AuditFileMapper auditFileMapper;
@Resource
private ITeamSetService teamSetService;
@Resource
private IWorkPlanItemDetailService workPlanItemDetailService;
@Resource
private final IErpDataCheckerSealClient erpDataCheckerSealClient;
@Override
@ -661,20 +668,20 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
}
if (moduleList.get(0)) {
// 头记录
JSONObject modelJson = buildModelOne(wo, yo, dsPart);
jsonObj.put("modelOne", modelJson);
JSONObject modelOne = buildModelOne(wo, yo, dsPart);
jsonObj.put("modelOne", modelOne);
}
// 检验记录
if (moduleList.get(1)) {
JSONObject modelJson1 = new JSONObject();
JSONObject modelThree = new JSONObject();
List<JSONObject> checkList = this.getCheckListNotNG(woId, wpList, true);
modelJson1.put("checkList", checkList);
jsonObj.put("modelThree", modelJson1);
modelThree.put("checkList", checkList);
jsonObj.put("modelThree", modelThree);
}
List<JSONObject> modelTwoList = this.buildModelTwo(wo, yo, dsPart, wpList, planList);
jsonObj.put("modelTwo", modelTwoList);
List<JSONObject> modelTwo = this.buildModelTwo(wo, yo, dsPart, wpList, planList);
jsonObj.put("modelTwo", modelTwo);
if (moduleList.get(2)) {
// 镀后入库记录
@ -708,12 +715,19 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
partJson.put("material", dsPart.getMaterial());
partJson.put("cruxMemo", dsPart.getKeyInfo());
partJson.put("memo", dsPart.getRemarks());
partJson.put("area", dsPart.getArea());
if(dsPart.getArea() != null){
partJson.put("area", roundToSixDecimalPlaces(dsPart.getArea()));
}
}
if (yo != null) {
yoJson.put("productType", yo.getProductType());
yoJson.put("prodIdent", yo.getProductIdent());
yoJson.put("poQty", yo.getYpQty());
yoJson.put("poArea", yo.getYpArea());
if(yo.getYpArea() != null){
yoJson.put("poArea", roundToSixDecimalPlaces(yo.getYpArea()));
}
yoJson.put("primaryCraft", yo.getPrimaryCraft());
}
if (wo != null) {
@ -725,6 +739,19 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
return modelJson;
}
/**
* double保留6为小数四舍五入
* @param num
* @return
*/
private double roundToSixDecimalPlaces(Double num) {
// 防止double精度问题,先转为BigDecimal
BigDecimal bigDecimal = new BigDecimal(Double.toString(num));
// 设置保留6位小数,四舍五入模式
bigDecimal = bigDecimal.setScale(6, RoundingMode.HALF_UP);
return bigDecimal.doubleValue();
}
/**
* 构建modelTwo
*
@ -795,8 +822,8 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
List<FeiBaSetEntity> basList = feiBaSetService.listByIds(bas);
List<EquipmentEntity> cardList = mesEquipmentCardService.listByIds(cards);
// 设备编号
String gj = StringUtils.join(rackList.stream().filter(j -> j.getRsType() != null).map(j -> j.getRsType()).collect(Collectors.toList()), "'、'");
String fb = StringUtils.join(basList.stream().filter(j -> j.getFsType() != null).map(j -> j.getFsType()).collect(Collectors.toList()), "、");
String gj = StringUtils.join(rackList.stream().filter(j -> j.getRsCode() != null).map(j -> j.getRsCode()).collect(Collectors.toList()), "'、'");
String fb = StringUtils.join(basList.stream().filter(j -> j.getFsCode() != null).map(j -> j.getFsCode()).collect(Collectors.toList()), "、");
String eq = StringUtils.join(cardList.stream().filter(j -> j.getDeviceCode() != null).map(j -> j.getDeviceCode()).collect(Collectors.toList()), "、");
modelTwo.put("gjCode", gj);
modelTwo.put("fbCode", fb);
@ -832,7 +859,7 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
// 如果是荧光检测工序,需要返回报工人签章图片
if ("荧光检测".equals(prWorkPlan.getPpsName())) {
if (makeRec != null) {
String checkManByNewErpMes = workPlanMapper.getCheckManByNewErpMes(makeRec.getWorkerAccount());
String checkManByNewErpMes = erpDataCheckerSealClient.getCheckManByNewErpMes(makeRec.getWorkerName());
modelTwo.put("workerImgUrl", checkManByNewErpMes);
}
}
@ -926,10 +953,10 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId());
if ("喷砂".equals(process.getName()) || "涂色标".equals(process.getName())) {
dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(null,
workPlan.getPpsId(), Boolean.TRUE);
workPlan.getPpsId(), "0");
} else {
dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(bsCenterTeam.getWcId(),
workPlan.getPpsId(), Boolean.TRUE);
workPlan.getPpsId(), "0");
}
}
@ -987,36 +1014,121 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
private List<JSONObject> getCheckListNotNG(Long woId, List<WorkPlanExpandVO> wpList, Boolean eleOrPrint) {
List<JSONObject> checkList = new ArrayList<>();
//组装检测项集合
Map<String, JSONObject> ccMap = new LinkedHashMap<>();
JSONObject cc;
List<WorkPlanItemVO> piLst = workPlanItemService.listByWoIdNotNG(woId);
Map<Long, WorkPlanExpandVO> workPlanMap = wpList.stream()
.collect(Collectors.toMap(
WorkPlanExpandVO::getId,
Function.identity()
));
Map<String, List<JSONObject>> piMap = new LinkedHashMap<>();
List<JSONObject> lst;
if (CollectionUtils.isNotEmpty(piLst)) {
for (WorkPlanItemVO pi : piLst) {
lst = piMap.get(pi.getItemCode());
WorkPlanExpandVO workPlan = workPlanMap.get(pi.getWpId());
String testOrder = workPlan.getOrders() + "-" + pi.getItemCode();
JSONObject checkDetail = new JSONObject();
checkDetail.put("testOrders", testOrder);
checkDetail.put("checkName", pi.getCheckUserRealName());
if (StringUtils.isNotEmpty(pi.getCheckUserAccount())) {
String checkManByNewErp = workPlanMapper.getCheckManByNewErpMes(pi.getCheckUserAccount());
if (eleOrPrint) {
checkDetail.put("imgUrl", checkManByNewErp);
if (CollectionUtils.isEmpty(lst)) {
lst = new ArrayList<>();
piMap.put(testOrder, lst);
cc = new JSONObject();
cc.put("testOrders", testOrder);
if (pi.getCheckQty() != null && pi.getCheckQty() > 0) {
cc.put("checkQty", pi.getCheckQty());
}
if (pi.getTestQty() != null && pi.getTestQty() > 0) {
cc.put("testQty", pi.getTestQty());
} else {
if (checkManByNewErp != null && checkManByNewErp.indexOf("base64,") > 0) {
String checkManByNewErpSubString = checkManByNewErp.substring(checkManByNewErp.indexOf("base64,") + 7);
checkDetail.put("imgUrl", checkManByNewErpSubString);
cc.put("testQty", "");
}
cc.put("checkResult", WorkPlanItem.checkResultMap.get(pi.getCheckResult()));
if (StringUtils.isNotEmpty(pi.getCheckUserRealName())) {
String checkManByNewErp = null;
try {
checkManByNewErp = erpDataCheckerSealClient.getCheckManByNewErpMes(pi.getCheckUserRealName());
} catch (Exception e) {
// DB Link 等异常降级,避免阻塞 PDF 生成
}
cc.put("checkName", pi.getCheckUserRealName());
if (eleOrPrint) {
cc.put("imgUrl", checkManByNewErp);
} else {
if (checkManByNewErp != null && checkManByNewErp.indexOf("base64,") > 0) {
String checkManByNewErpSubString = checkManByNewErp.substring(checkManByNewErp.indexOf("base64,") + 7);
cc.put("imgUrl", checkManByNewErpSubString);
}
}
if (pi.getCheckDate() != null) {
cc.put("checkDate", pi.getCheckDate().toLocalDate().toString());
} else {
cc.put("checkDate", "");
}
}
ccMap.put(testOrder, cc);
}
if ("厚度检测".equals(pi.getItemName())) {
for (int i = 0; i < 3; i++) {
lst.add(this.buildCCC(pi.getItemName(), pi.getStandardName(), pi.getCheckValue(), pi.getId(), null, pi.getCreateTime()));
}
}
lst.add(this.buildCCC(pi.getItemName(), pi.getStandardName(), pi.getCheckValue(), pi.getId(), null, pi.getCreateTime()));
List<WorkPlanItemDetailVO> idLst;
for (Map.Entry<String, JSONObject> entry : ccMap.entrySet()) {
cc = ccMap.get(entry.getKey());
if (cc != null) {
lst = piMap.get(cc.get("testOrders"));
lst = lst.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()
-> new TreeSet<>(Comparator.comparing(i -> (Date) i.get("createTime")))), ArrayList::new));
if (lst != null && lst.size() > 0) {
for (JSONObject ccc : lst) {
idLst = workPlanItemDetailService.listVOByWorkPlanItemId((Long) ccc.get("wpiId"));
if (idLst != null && idLst.size() > 0) {
lst = new ArrayList<>();
for (WorkPlanItemDetailVO itemDetail : idLst) {
if ("厚度检测".equals(ccc.get("testName"))) {
cc.put("deviceCode", itemDetail.getGaugeValue8());
lst.add(this.buildCCC((String) ccc.get("testName"), (String) ccc.get("trialStandard"), itemDetail.getGaugeValueNotNUll(), null, itemDetail.getGaugeValue8(), (Date) ccc.get("createTime")));
} else if (itemDetail.getMtId() != null) {
lst.add(this.buildCCC((String) ccc.get("testName"), itemDetail.getRuleSize(),
itemDetail.getGaugeValue1(), (Long) ccc.get("wpiId"), itemDetail.getTools(), (Date) ccc.get("createTime")));
cc.put("deviceCode", itemDetail.getTools());
if (cc.get("trialStandard") != null) {
cc.put("trialStandard", (String) cc.get("trialStandard") + ';' + itemDetail.getRuleSize());
} else {
cc.put("trialStandard", itemDetail.getRuleSize());
}
if (cc.get("checkResult") != null) {
cc.put("checkResult", cc.get("checkResult"));
} else {
cc.put("checkResult", itemDetail.getGaugeValue1());
}
}
}
}
cc.put("cccList", lst);
checkList.add(cc);
break;
}
}
}
}
checkList.add(checkDetail);
}
}
return checkList;
}
private JSONObject buildCCC(String testName, String trialStandard, String checkValue, Long wpiId, String tools, Date createTime) {
JSONObject ccc = new JSONObject();
ccc.put("testName", testName);
ccc.put("trialStandard", trialStandard);
ccc.put("checkValue", checkValue);
ccc.put("wpiId", wpiId);
ccc.put("emTools", tools);
ccc.put("createTime", createTime);
return ccc;
}
public void getNewProcess(List<WorkPlan> wpList, JSONObject jsonObj, List<Boolean> modelFlag) {
if (wpList == null || wpList.size() == 0) {
return;
@ -1246,10 +1358,10 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
BsProcessSetEntity process = processSetService.getById(workPlan.getPpsId());
if ("喷砂".equals(process.getName()) || "涂色标".equals(process.getName())) {
dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(null,
workPlan.getPpsId(), Boolean.TRUE);
workPlan.getPpsId(), "0");
} else {
dsRbFilePreserveList = workPlanMapper.getDataByWcIdAndPpsId(bsCenterTeam.getWcId(),
workPlan.getPpsId(), Boolean.TRUE);
workPlan.getPpsId(), "0");
}
}
@ -2125,12 +2237,12 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
if (pi.getCheckUserId() != null) {
R<User> user = userClient.userInfoById(pi.getCheckUserId());
String userName = user.getData().getAccount();
String userName = user.getData().getRealName();
if (null != user && user.getData() != null) {
cc.setCheckName(user.getData().getRealName());
}
//zxh 20250212 从nerp获取检验员印章
String checkManByNewErp = workPlanMapper.getCheckManByNewErpMes(userName);
String checkManByNewErp = erpDataCheckerSealClient.getCheckManByNewErpMes(userName);
if (eleOrPrint) {

@ -0,0 +1,22 @@
package org.springblade.erpdata.feign;
import io.swagger.v3.oas.annotations.Hidden;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springblade.core.tenant.annotation.NonDS;
import org.springblade.erpdata.service.IErpDataCheckerSealService;
import org.springframework.web.bind.annotation.RestController;
@NonDS
@Hidden
@RestController
@AllArgsConstructor
public class ErpDataCheckerSealClient implements IErpDataCheckerSealClient {
@Resource
private final IErpDataCheckerSealService erpDataCheckerSealService;
@Override
public String getCheckManByNewErpMes(String userName) {
return erpDataCheckerSealService.getCheckManByNewErpMes(userName);
}
}

@ -0,0 +1,9 @@
package org.springblade.erpdata.mapper;
import com.baomidou.mybatisplus.core.mapper.Mapper;
public interface ErpDataCheckerSealMapper extends Mapper {
String getCheckManByNewErpMes(String userName);
}

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.erpdata.mapper.ErpDataCheckerSealMapper">
<select id="getCheckManByNewErpMes" resultType="String">
select a.value1,a.value2 from dba_mgr.v_rb_qms_checker_seal a where a.checker_name= #{userName}
</select>
</mapper>

@ -0,0 +1,7 @@
package org.springblade.erpdata.service;
public interface IErpDataCheckerSealService {
String getCheckManByNewErpMes(String userName);
}

@ -0,0 +1,21 @@
package org.springblade.erpdata.service.impl;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springblade.erpdata.mapper.ErpDataCheckerSealMapper;
import org.springblade.erpdata.service.IErpDataCheckerSealService;
import org.springframework.stereotype.Service;
@Service
@AllArgsConstructor
public class ErpDataCheckerSealServiceImpl implements IErpDataCheckerSealService {
@Resource
private final ErpDataCheckerSealMapper erpDataCheckerSealMapper;
@Override
public String getCheckManByNewErpMes(String userName) {
return erpDataCheckerSealMapper.getCheckManByNewErpMes(userName);
}
}
Loading…
Cancel
Save