生产处置单推送ERP逻辑修改

liweidong
maxiangong 2 weeks ago
parent 0bf8004ab0
commit 3ec7c28263
  1. 17
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewDutyDTO.java
  2. 19
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewFaultDTO.java
  3. 44
      blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/quality/pojo/dto/ReviewSheetDTO.java
  4. 4
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/controller/ReviewSheetController.java
  5. 3
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/IReviewSheetService.java
  6. 5
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/InspectionTaskServiceImpl.java
  7. 307
      blade-service/blade-desk/src/main/java/org/springblade/desk/quality/service/impl/ReviewSheetServiceImpl.java

@ -58,4 +58,21 @@ public class ReviewDutyDTO {
* 单位 * 单位
*/ */
private String unit; private String unit;
public ReviewDutyDTO(){
}
public ReviewDutyDTO(String trialId, String trialSeq, String mdsItemCode, String batchNo, String corrMdsItemCode,
String corrBatchNo, String note, Short reqQty, String unit) {
this.trialId = trialId;
this.trialSeq = trialSeq;
this.mdsItemCode = mdsItemCode;
this.batchNo = batchNo;
this.corrMdsItemCode = corrMdsItemCode;
this.corrBatchNo = corrBatchNo;
this.note = note;
this.reqQty = reqQty;
this.unit = unit;
}
} }

@ -42,16 +42,31 @@ public class ReviewFaultDTO {
/** /**
* 比例 * 比例
*/ */
private Double proportion; private String proportion;
/** /**
* 数量 * 数量
*/ */
private Long faultQty; private Integer faultQty;
/** /**
* 描述 * 描述
*/ */
private String describe; private String describe;
public ReviewFaultDTO(){
}
public ReviewFaultDTO(String trialId, String trialSeq, String faultType, String questClass, String questSubclass,
String proportion, Integer faultQty, String describe) {
this.trialId = trialId;
this.trialSeq = trialSeq;
this.faultType = faultType;
this.questClass = questClass;
this.questSubclass = questSubclass;
this.proportion = proportion;
this.faultQty = faultQty;
this.describe = describe;
}
} }

@ -66,15 +66,15 @@ public class ReviewSheetDTO{
*/ */
private String preCode; private String preCode;
/** /**
* 比例 * 比例
*/ */
private Double proporTion; private String proporTion;
/** /**
* 不合格数量 * 不合格数量
*/ */
private Double subQty; private Integer subQty;
/** /**
* 简单原因 * 简单原因
@ -108,4 +108,32 @@ public class ReviewSheetDTO{
*/ */
private String checkDate; private String checkDate;
public ReviewSheetDTO() {
}
public ReviewSheetDTO(String batchNo, String businessNo, String checkUserCode, String easyReason, String levels,
String mdsItemCode, String mdsItemName, Double needQty, String preCode, String proporTion,
Boolean qualityquestion, Integer subQty, String trialType, String seqNo, String seqName, String findUserCode, String hearDis) { //, String checkDate
this.batchNo = batchNo;
this.businessNo = businessNo;
this.checkUserCode = checkUserCode;
this.easyReason = easyReason;
this.findWorkShop = "3400";
this.levels = levels;
this.mdsItemCode = mdsItemCode;
this.mdsItemName = mdsItemName;
this.needQty = needQty;
this.preCode = preCode;
this.proporTion = proporTion;
this.qualityquestion = qualityquestion;
this.subQty = subQty;
this.trialType = trialType;
this.hearDis = hearDis;
this.seqNo = seqNo;
this.seqName = seqName;
this.findUserCode = findUserCode;
// this.checkDate = checkDate;
}
} }

@ -492,8 +492,8 @@ public class ReviewSheetController extends BladeController {
@PostMapping("/fill") @PostMapping("/fill")
@ApiOperationSupport(order = 40) @ApiOperationSupport(order = 40)
@Operation(summary = "填报[生产处置单]", description = "ReviewSheetVO Obj") @Operation(summary = "填报[生产处置单]", description = "ReviewSheetVO Obj")
public R fill(@Valid @RequestBody ReviewSheetDetailVO vo) { public R fill(@Valid @RequestBody ReviewSheetDetailVO vo, BladeUser bladeUser) {
return service.fill(vo); return service.fill(vo, bladeUser);
} }
@GetMapping("/getRSDutyPartList") @GetMapping("/getRSDutyPartList")

@ -6,6 +6,7 @@ package org.springblade.desk.quality.service;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.secure.BladeUser;
import org.springblade.core.tool.api.R; import org.springblade.core.tool.api.R;
import org.springblade.desk.basic.service.en.EnBaseService; import org.springblade.desk.basic.service.en.EnBaseService;
import org.springblade.desk.quality.excel.ReviewSheetExcel; import org.springblade.desk.quality.excel.ReviewSheetExcel;
@ -134,7 +135,7 @@ public interface IReviewSheetService extends EnBaseService<ReviewSheet> {
*/ */
void deleteReviewOrder(String trialId) throws Exception; void deleteReviewOrder(String trialId) throws Exception;
R fill(ReviewSheetDetailVO vo); R fill(ReviewSheetDetailVO vo, BladeUser bladeUser);
R reviewSelf(Long id, Integer selfReviewFlag, String memo); R reviewSelf(Long id, Integer selfReviewFlag, String memo);

@ -2116,8 +2116,9 @@ public class InspectionTaskServiceImpl extends BaseServiceImpl<InspectionTaskMap
rsSubService.save(rs); rsSubService.save(rs);
// //
// todo: fake data // todo: fake data
rs.setUpCode("UPT" + id); // rs.setUpCode("UPT" + id);
rs.setRsCode("RS" + rs.getId()); // todo:fake data // rs.setRsCode("RS" + rs.getId());
// todo:fake data
rsSubService.updateById(rs); rsSubService.updateById(rs);
} }
} }

@ -25,6 +25,8 @@ import org.springblade.desk.basic.constant.BaseRequest;
import org.springblade.desk.basic.constant.BaseValue; import org.springblade.desk.basic.constant.BaseValue;
import org.springblade.desk.basic.service.en.impl.EnBaseServiceImpl; import org.springblade.desk.basic.service.en.impl.EnBaseServiceImpl;
import org.springblade.desk.basic.util.IdUtil; import org.springblade.desk.basic.util.IdUtil;
import org.springblade.desk.dashboard.pojo.entity.BsProcessSetEntity;
import org.springblade.desk.dashboard.service.IBsProcessSetService;
import org.springblade.desk.order.mapper.YieldOrderMapper; import org.springblade.desk.order.mapper.YieldOrderMapper;
import org.springblade.desk.order.pojo.entity.YieldOrder; import org.springblade.desk.order.pojo.entity.YieldOrder;
import org.springblade.desk.produce.mapper.WorkOrderRunMapper; import org.springblade.desk.produce.mapper.WorkOrderRunMapper;
@ -111,6 +113,9 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
private final IWorkPlanItemService workPlanItemService; private final IWorkPlanItemService workPlanItemService;
@Resource
private IBsProcessSetService bsProcessSetService;
@Override @Override
public IPage<ReviewSheetDetailVO> selectReviewSheetPage(IPage<ReviewSheetDetailVO> page, ReviewSheetDetailVO reviewSheet) { public IPage<ReviewSheetDetailVO> selectReviewSheetPage(IPage<ReviewSheetDetailVO> page, ReviewSheetDetailVO reviewSheet) {
return page.setRecords(baseMapper.selectReviewSheetPage(page, reviewSheet)); return page.setRecords(baseMapper.selectReviewSheetPage(page, reviewSheet));
@ -477,8 +482,158 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
this.removeById(reviewSheet); this.removeById(reviewSheet);
} }
// @Override
// public R fill(ReviewSheetDetailVO vo) {
// log.info("ReviewSheetDetailVO vo = {}", vo.toString());
//
// // 删除
// if (StringUtils.isNotBlank(vo.getFaultDeleteIds())) {
// faultService.deleteLogic(Func.toLongList(vo.getFaultDeleteIds()));
// }
//
// List<ReviewFault> listF = null;
//
// if (null != vo.getFaultList() && !vo.getFaultList().isEmpty()) {
// // 关联rsId
// for (ReviewFaultVO voF : vo.getFaultList()) {
// voF.setReviewSheetId(vo.getId());
// }
// listF = BeanUtil.copyToList(vo.getFaultList(), ReviewFault.class);
// // 保存 或 更新
// faultService.saveOrUpdateBatch(listF);
// }
//
// // 删除
// if (StringUtils.isNotBlank(vo.getDutyDeleteIds())) {
// dutyService.deleteLogic(Func.toLongList(vo.getDutyDeleteIds()));
// }
//
// List<ReviewDuty> listD = null;
// if (null != vo.getDutyList() && !vo.getDutyList().isEmpty()) {
// // 关联rsId
// for (ReviewDutyVO voD : vo.getDutyList()) {
// voD.setReviewSheetId(vo.getId());
// }
// listD = BeanUtil.copyToList(vo.getDutyList(), ReviewDuty.class);
// // 保存 或 更新
// dutyService.saveOrUpdateBatch(listD);
// }
//
// // 审理单
// ReviewSheet rs = getById(vo.getId()); // 从数据库中查到
// log.info("ReviewSheet rs = {}", rs);
// log.info("ReviewSheet vo = {}", vo);
// BeanUtil.copyProperties(vo, rs, BaseRequest.ID); // 拷贝id之外的属性。
// // 提交类型
// Integer submitType = vo.getSubmitType();
// // 内部
// Integer bizType = vo.getBizType();
// // biz类型
// rs.setBizType(bizType);
// if (ReviewSheetConst.BizType.T_SELF_REDO.equals(rs.getBizType()) || ReviewSheetConst.BizType.T_SELF_SCRAP.equals(rs.getBizType())) {
// if (ReviewSheetConst.SUBMIT_TYPE.T_SELF.equals(submitType)) { // 内部提交
// // 当前状态
// rs.setStatus(ReviewSheetConst.STATUS.S_JUDGE);
// // 审核状态 内部用不到
// rs.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT);
// }
// }
// // ERP
// if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) {
// if (ReviewSheetConst.SUBMIT_TYPE.T_ERP_TEMP.equals(submitType)) { // 暂存
// // 当前状态
// rs.setStatus(ReviewSheetConst.STATUS.S_NEW);
// // 审核状态
// rs.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT);
// }
// if (ReviewSheetConst.SUBMIT_TYPE.T_ERP_QA.equals(submitType) ||
// ReviewSheetConst.SUBMIT_TYPE.T_ERP_CRAFT.equals(submitType) ||
// ReviewSheetConst.SUBMIT_TYPE.T_ERP_DES.equals(submitType) ||
// ReviewSheetConst.SUBMIT_TYPE.T_ERP_DES_CHANGE.equals(submitType)) { // 外部提交
// // 当前状态
// rs.setStatus(ReviewSheetConst.STATUS.S_HEAR);
// // 审核状态
// rs.setReviewStatus(ReviewSheetConst.ERP_REVIEW_S.REVIEW_STATUS_INIT);
// }
// }
// rs.setToReviewDate(rs.getToReviewDate() == null ? LocalDateTime.now() : rs.getToReviewDate());
// rs.setToReviewUserId(rs.getToReviewUserId() == null ? AuthUtil.getUserId() : rs.getToReviewUserId());
// rs.setToReviewUserName(rs.getToReviewUserName() == null ? AuthUtil.getUser().getNickName() : rs.getToReviewUserName());
// // 保存标记位
// rs.setHasSaved(BaseValue.YES);
// // 处置单
// saveOrUpdate(rs);
// if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) {
// HttpHeaders headers = new HttpHeaders();
// headers.setContentType(MediaType.APPLICATION_JSON);
//
// ReviewSheetDTO dto = new ReviewSheetDTO();
// dto.setBusinessNo(rs.getWoCode());
// dto.setMdsItemCode(dto.getPreCode());
// dto.setTrialStatus(rs.getReviewStatus().toString());
// dto.setHearDis(rs.getSubmitType().toString());
// dto.setTrialType(rs.getReviewOrderMode() + "");
// dto.setPreCode(rs.getUpCode());
// dto.setProporTion(rs.getScale());
// dto.setSubQty(rs.getUnqualifiedQty());
//
// List<ReviewDutyDTO> vods = new ArrayList<>();
//
// if (null != listD && listD.size() > 0) {
// for (ReviewDuty vod : listD) {
// ReviewDutyDTO vodDTO = new ReviewDutyDTO();
// vodDTO.setTrialId(vod.getReviewSheetId() + "");
// vodDTO.setReqQty(vod.getQty());
// vodDTO.setUnit(vod.getUnit());
// vodDTO.setCorrBatchNo(vod.getRelevantBatch());
// vods.add(vodDTO);
// }
// }
//
// List<ReviewFaultDTO> vofs = new ArrayList<>();
// if (null != listF && listF.size() > 0) {
// for (ReviewFault vof : listF) {
// ReviewFaultDTO vofDTO = new ReviewFaultDTO();
// vofDTO.setTrialId(vof.getReviewSheetId() + "");
// vofDTO.setFaultType(vof.getNgType2Id() + "");
// vofDTO.setQuestClass(vof.getNgType3Id() + "");
// vofDTO.setQuestSubclass(vof.getNgType4Id() + "");
// vofDTO.setProportion(vof.getScale());
// vofDTO.setFaultQty(vof.getQty());
// vofDTO.setDescribe(vof.getMemo());
// vofs.add(vofDTO);
// }
// }
//
// JSONObject obj = new JSONObject();
// obj.put("qmsRepairApplyDTO", dto);
// obj.put("qmsRepairPartList", vods);
// obj.put("qmsRepairMalfList", vofs);
// HttpEntity<JSONObject> entity = new HttpEntity<>(obj, headers);
// ResponseEntity<JSONObject> responseEntity;
// JSONObject responseBody;
// try {
// responseEntity = httpClientTemplate.postForEntity(newErpUrl + "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class);
// JSONObject result = responseEntity.getBody();
// if (result == null || !result.getString("retCode").equals("200")) {
// throw new ServiceException("审理单接口调用失败,原因:" + result.getString("errorDesc"));
// }
// responseBody = result.getJSONObject("responseBody");
// if (responseBody == null) {
// throw new ServiceException("审理单,接口返回值null");
// }
// } catch (Exception e) {
// throw new ServiceException("审理单调用异常,原因:" + e.getMessage());
// }
// rs.setErpId(responseBody.getString("trialId"));
// rs.setRsCode(responseBody.getString("trialNo"));
// this.updateById(rs);
// }
// return R.success("成功");
// }
@Override @Override
public R fill(ReviewSheetDetailVO vo) { public R fill(ReviewSheetDetailVO vo, BladeUser bladeUser) {
log.info("ReviewSheetDetailVO vo = {}", vo.toString()); log.info("ReviewSheetDetailVO vo = {}", vo.toString());
// 删除 // 删除
@ -559,74 +714,102 @@ public class ReviewSheetServiceImpl extends EnBaseServiceImpl<ReviewSheetMapper,
// 处置单 // 处置单
saveOrUpdate(rs); saveOrUpdate(rs);
if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) { if (ReviewSheetConst.BizType.T_ERP.equals(rs.getBizType())) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
ReviewSheetDTO dto = new ReviewSheetDTO();
dto.setBusinessNo(rs.getWoCode());
dto.setMdsItemCode(dto.getPreCode());
dto.setTrialStatus(rs.getReviewStatus().toString());
dto.setHearDis(rs.getSubmitType().toString());
dto.setTrialType(rs.getReviewOrderMode() + "");
dto.setPreCode(rs.getUpCode());
dto.setProporTion(rs.getScale());
dto.setSubQty(rs.getUnqualifiedQty());
List<ReviewDutyDTO> vods = new ArrayList<>();
if (null != listD && listD.size() > 0) {
for (ReviewDuty vod : listD) {
ReviewDutyDTO vodDTO = new ReviewDutyDTO();
vodDTO.setTrialId(vod.getReviewSheetId() + "");
vodDTO.setReqQty(vod.getQty());
vodDTO.setUnit(vod.getUnit());
vodDTO.setCorrBatchNo(vod.getRelevantBatch());
vods.add(vodDTO);
}
}
List<ReviewFaultDTO> vofs = new ArrayList<>();
if (null != listF && listF.size() > 0) {
for (ReviewFault vof : listF) {
ReviewFaultDTO vofDTO = new ReviewFaultDTO();
vofDTO.setTrialId(vof.getReviewSheetId() + "");
vofDTO.setFaultType(vof.getNgType2Id() + "");
vofDTO.setQuestClass(vof.getNgType3Id() + "");
vofDTO.setQuestSubclass(vof.getNgType4Id() + "");
vofDTO.setProportion(vof.getScale());
vofDTO.setFaultQty(vof.getQty());
vofDTO.setDescribe(vof.getMemo());
vofs.add(vofDTO);
}
}
JSONObject obj = new JSONObject();
obj.put("qmsRepairApplyDTO", dto);
obj.put("qmsRepairPartList", vods);
obj.put("qmsRepairMalfList", vofs);
HttpEntity<JSONObject> entity = new HttpEntity<>(obj, headers);
ResponseEntity<JSONObject> responseEntity;
JSONObject responseBody;
try { try {
responseEntity = httpClientTemplate.postForEntity(newErpUrl + "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class); JSONObject responseBody = saveReviewData(rs, listD, listF, bladeUser);
JSONObject result = responseEntity.getBody(); rs.setErpId(responseBody.getString("trialId"));
if (result == null || !result.getString("retCode").equals("200")) { rs.setRsCode(responseBody.getString("trialNo"));
throw new ServiceException("审理单接口调用失败,原因:" + result.getString("errorDesc")); this.updateById(rs);
}
responseBody = result.getJSONObject("responseBody");
if (responseBody == null) {
throw new ServiceException("审理单,接口返回值null");
}
} catch (Exception e) { } catch (Exception e) {
throw new ServiceException("审理单调用异常,原因:" + e.getMessage()); return R.fail(e.getMessage());
} }
rs.setErpId(responseBody.getString("trialId"));
rs.setRsCode(responseBody.getString("trialNo"));
this.updateById(rs);
} }
return R.success("成功"); return R.success("成功");
} }
private JSONObject saveReviewData(ReviewSheet rs, List<ReviewDuty> rdList, List<ReviewFault> rfList, BladeUser bladeUser) throws Exception {
InspectionTask wc = inspectionTaskService.getById(rs.getTaskId());
if (wc == null) {
throw new BusinessException("检验任务信息不存在!");
}
WorkPlan wp = workPlanService.getById(wc.getWpId());
if (wp == null) {
throw new BusinessException("车间作业计划信息不存在!");
}
WorkOrder wo = workOrderService.getById(wp.getWoId());
if (wo == null) {
throw new BusinessException("车间订单信息不存在!");
}
YieldOrder yo = yieldOrderMapper.selectById(wo.getYoId());
if (yo == null) {
throw new BusinessException("生产订单信息不存在!");
}
BsProcessSetEntity processSet = bsProcessSetService.getById(wp.getPpsId());
if (processSet == null) {
throw new BusinessException("工序信息不存在!");
}
String findUserCode = null;
String checkUserCode = bladeUser.getAccount();
if (wc.getCheckUserId() != null) {
R<UserInfo> findUserR = userClient.userInfo(wc.getCheckUserId());
if (findUserR.isSuccess()) {
UserInfo findUserInfo = findUserR.getData();
findUserCode = findUserInfo.getUser().getAccount();
}
}
boolean qualityProblem = false;
if (rs.getIsQualityProblem() == 1L) {
qualityProblem = true;
}
ReviewSheetDTO dto = new ReviewSheetDTO(wo.getBatchNo(), wo.getWoCode(), checkUserCode,
wc.getPoorReason(), yo.getProductIdent(), yo.getPartCode(), yo.getPartName(), wo.getMakeQty(), rs.getUpCode(),
rs.getScale() == null ? "" : rs.getScale().toString(), qualityProblem, rs.getUnqualifiedQty() == null ? 0 : rs.getUnqualifiedQty().intValue(), rs.getReviewOrderMode() == null ? "" : rs.getReviewOrderMode().toString(),
wp.getOrders(), processSet.getName(),
findUserCode, rs.getSubmitType() == null ? "" : rs.getSubmitType().toString()); //checkDate
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
List<ReviewDutyDTO> vods = new ArrayList<>();
if (CollectionUtils.isNotEmpty(rdList)) {
int index = 1;
for (ReviewDuty rd : rdList) {
vods.add(new ReviewDutyDTO(null, index + "",
rd.getDutyPart(), rd.getDutyBatch(), rd.getRelevantPart(),
rd.getRelevantBatch(), rd.getMemo(), rd.getQty(), rd.getUnit()));
index++;
}
}
List<ReviewFaultDTO> vofs = new ArrayList<>();
if (CollectionUtils.isNotEmpty(rfList)) {
int index = 1;
for (ReviewFault rf : rfList) {
vofs.add(new ReviewFaultDTO(null, index + "", rf.getNgType2Id() == null ? "" : rf.getNgType2Id().toString(), rf.getNgType3Id() == null ? "" : rf.getNgType3Id().toString(),
rf.getNgType4Id() == null ? "" : rf.getNgType4Id().toString(), rf.getScale() == null ? "" : rf.getScale().toString(), rf.getQty() == null ? 0 :rf.getQty().intValue(), rf.getMemo()));
index++;
}
}
JSONObject obj = new JSONObject();
obj.put("qmsRepairApplyDTO", dto);
obj.put("qmsRepairPartList", vods);
obj.put("qmsRepairMalfList", vofs);
HttpEntity<JSONObject> entity = new HttpEntity<>(obj, headers);
ResponseEntity<JSONObject> responseEntity;
JSONObject responseBody;
try {
responseEntity = httpClientTemplate.postForEntity(newErpUrl + "/api/mms/qms/qmsrepairapply/qmsRepairApplyRest/saveQmsRepairApply/v1", entity, JSONObject.class);
JSONObject result = responseEntity.getBody();
if (result == null || !result.getString("retCode").equals("200")) {
throw new ServiceException("审理单接口调用失败,原因:" + result.getString("errorDesc"));
}
responseBody = result.getJSONObject("responseBody");
if (responseBody == null) {
throw new ServiceException("审理单,接口返回值null");
}
} catch (Exception e) {
throw new ServiceException("审理单调用异常,原因:" + e.getMessage());
}
return responseBody;
}
@Override @Override
public R reviewSelf(Long id, Integer selfReviewFlag, String memo) { public R reviewSelf(Long id, Integer selfReviewFlag, String memo) {
// 参数校验 // 参数校验

Loading…
Cancel
Save