refactor(qc): 重构箱变-质检报告推启源MES
- 修改包名和类名,优化代码结构 - 增加供应商和人员信息查询 - 更新数据同步逻辑,增加更多业务字段- 优化错误提示信息,提高可读性 - 新增 ReportInsertBP 和 ReportUpdateBP 类,用于处理质检报告插入和更新业务
This commit is contained in:
parent
c8dfca7a08
commit
052be292f2
|
@ -0,0 +1,93 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package nc.bs.qc.c003.maintain;
|
||||
|
||||
import nc.bs.qc.c003.maintain.rule.ChkBillCodeUniqueRule;
|
||||
import nc.bs.qc.c003.maintain.rule.InsertAndDelBatchCodeBeforeRule;
|
||||
import nc.bs.qc.c003.maintain.rule.ReportChkChkBatUnique;
|
||||
import nc.bs.qc.c003.maintain.rule.SyncQcQmsRule;
|
||||
import nc.bs.qc.c003.maintain.rule.insert.CreatChkBatchRule;
|
||||
import nc.bs.qc.c003.maintain.rule.insert.FillUpDataRule;
|
||||
import nc.bs.qc.c003.maintain.rule.insert.InsertBatchCodeAfterRule;
|
||||
import nc.bs.qc.c003.maintain.rule.insert.InsertBillCodeRule;
|
||||
import nc.bs.qc.c003.maintain.rule.insert.MatchReportTypeRule;
|
||||
import nc.bs.qc.c003.maintain.rule.insert.RowNoFillUpRule;
|
||||
import nc.bs.qc.c003.maintain.rule.insert.WriteC001WhenInsertRule;
|
||||
import nc.bs.qc.c003.maintain.rule.insert.WriteC002WhenInsertRule;
|
||||
import nc.bs.qc.c003.plugin.ReportBPPlugInPoint;
|
||||
import nc.bs.qc.pub.rule.QCRowNoCheckRule;
|
||||
import nc.bs.qc.pub.rule.QCWriteOperateLogRule;
|
||||
import nc.impl.pubapp.bd.material.assistant.MarAssistantSaveRule;
|
||||
import nc.impl.pubapp.bd.userdef.UserDefSaveRule;
|
||||
import nc.impl.pubapp.pattern.data.bill.BillInsert;
|
||||
import nc.impl.pubapp.pattern.rule.processer.AroundProcesser;
|
||||
import nc.vo.pubapp.util.SetAddAuditInfoRule;
|
||||
import nc.vo.qc.c003.entity.ReportHeaderVO;
|
||||
import nc.vo.qc.c003.entity.ReportItemVO;
|
||||
import nc.vo.qc.c003.entity.ReportVO;
|
||||
import nc.vo.qc.c003.rule.FillupFacceptjudgeRule;
|
||||
import nc.vo.qc.c003.rule.MaterialInStorckOrgRule;
|
||||
import nc.vo.qc.c003.rule.ReportCheckFlowRule;
|
||||
import nc.vo.qc.c003.rule.ReportItemsCheckRule;
|
||||
import nc.vo.qc.c003.rule.ReportNumCheckRule;
|
||||
import nc.vo.qc.c003.util.ReportAddStockStateRule;
|
||||
import nc.vo.qc.pub.rule.CheckBillNumRule;
|
||||
import nc.vo.scmpub.rule.QcCenterEnableCheckRule;
|
||||
import nccloud.dto.qc.c003.constance.QCReportOprLogConst;
|
||||
|
||||
public class ReportInsertBP {
|
||||
public ReportInsertBP() {
|
||||
}
|
||||
|
||||
public ReportVO[] insertReport(ReportVO[] aggVO) {
|
||||
AroundProcesser<ReportVO> processer = new AroundProcesser(ReportBPPlugInPoint.ReportInsertBP);
|
||||
this.addBeforeRule(processer);
|
||||
this.addAfterFinalRule(processer);
|
||||
processer.before(aggVO);
|
||||
BillInsert<ReportVO> bo = new BillInsert();
|
||||
ReportVO[] vos = (ReportVO[])bo.insert(aggVO);
|
||||
processer.after(aggVO);
|
||||
return vos;
|
||||
}
|
||||
|
||||
private void addAfterFinalRule(AroundProcesser<ReportVO> processer) {
|
||||
processer.addAfterFinalRule(new ChkBillCodeUniqueRule());
|
||||
processer.addAfterFinalRule(new WriteC001WhenInsertRule());
|
||||
processer.addAfterFinalRule(new WriteC002WhenInsertRule());
|
||||
processer.addAfterFinalRule(new InsertBatchCodeAfterRule());
|
||||
processer.addAfterRule(new QCWriteOperateLogRule(QCReportOprLogConst.maintainService.getCode(), QCReportOprLogConst.addAction.getCode()));
|
||||
processer.addAfterFinalRule(new SyncQcQmsRule());
|
||||
}
|
||||
|
||||
private void addBeforeRule(AroundProcesser<ReportVO> processer) {
|
||||
processer.addBeforeRule(new FillUpDataRule());
|
||||
processer.addBeforeRule(new SetAddAuditInfoRule());
|
||||
String[] hKeys = new String[2];
|
||||
hKeys[0] = "nchecknum";
|
||||
hKeys[1] = "ncheckastnum";
|
||||
String[] bKeys = new String[2];
|
||||
bKeys[0] = "nnum";
|
||||
bKeys[1] = "nastnum";
|
||||
processer.addBeforeRule(new CheckBillNumRule(hKeys, bKeys));
|
||||
processer.addBeforeRule(new InsertBillCodeRule());
|
||||
processer.addBeforeRule(new CreatChkBatchRule());
|
||||
processer.addBeforeRule(new ReportChkChkBatUnique());
|
||||
processer.addBeforeRule(new FillupFacceptjudgeRule());
|
||||
processer.addBeforeRule(new RowNoFillUpRule());
|
||||
processer.addBeforeRule(new QCRowNoCheckRule(ReportItemVO.class, "crowno"));
|
||||
processer.addBeforeRule(new MatchReportTypeRule());
|
||||
processer.addBeforeRule(new ReportItemsCheckRule());
|
||||
processer.addBeforeRule(new ReportNumCheckRule());
|
||||
processer.addBeforeRule(new InsertAndDelBatchCodeBeforeRule(true));
|
||||
MarAssistantSaveRule<ReportVO> mar = new MarAssistantSaveRule();
|
||||
processer.addBeforeRule(mar);
|
||||
processer.addBeforeRule(new QcCenterEnableCheckRule());
|
||||
processer.addBeforeRule(new UserDefSaveRule(new Class[]{ReportHeaderVO.class, ReportItemVO.class}));
|
||||
processer.addBeforeRule(new ReportAddStockStateRule());
|
||||
processer.addBeforeRule(new ReportCheckFlowRule());
|
||||
processer.addBeforeRule(new MaterialInStorckOrgRule());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
//
|
||||
// Source code recreated from a .class file by IntelliJ IDEA
|
||||
// (powered by FernFlower decompiler)
|
||||
//
|
||||
|
||||
package nc.bs.qc.c003.maintain;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
import nc.bs.qc.c003.maintain.rule.ChkBillCodeUniqueRule;
|
||||
import nc.bs.qc.c003.maintain.rule.ReportChkChkBatUnique;
|
||||
import nc.bs.qc.c003.maintain.rule.SyncQcQmsRule;
|
||||
import nc.bs.qc.c003.maintain.rule.update.FillUpDataUpdateRule;
|
||||
import nc.bs.qc.c003.maintain.rule.update.UpdChkBatCode;
|
||||
import nc.bs.qc.c003.maintain.rule.update.UpdateBatchCodeAfterRule;
|
||||
import nc.bs.qc.c003.maintain.rule.update.UpdateBatchCodeBeforeRule;
|
||||
import nc.bs.qc.c003.maintain.rule.update.UpdateBillCodeRule;
|
||||
import nc.bs.qc.c003.maintain.rule.update.WriteC001WhenUpdateRule;
|
||||
import nc.bs.qc.c003.plugin.ReportBPPlugInPoint;
|
||||
import nc.bs.qc.pub.rule.QCRowNoCheckRule;
|
||||
import nc.bs.qc.pub.rule.QCWriteOperateLogRule;
|
||||
import nc.bs.scmpub.rule.VOSagaFrozenValidateRule;
|
||||
import nc.impl.pubapp.bd.material.assistant.MarAssistantSaveRule;
|
||||
import nc.impl.pubapp.pattern.data.bill.BillUpdate;
|
||||
import nc.impl.pubapp.pattern.rule.processer.CompareAroundProcesser;
|
||||
import nc.vo.pubapp.util.SetUpdateAuditInfoRule;
|
||||
import nc.vo.qc.c003.entity.ReportItemVO;
|
||||
import nc.vo.qc.c003.entity.ReportVO;
|
||||
import nc.vo.qc.c003.rule.MaterialInStorckOrgRule;
|
||||
import nc.vo.qc.c003.rule.ReportItemsCheckRule;
|
||||
import nc.vo.qc.c003.rule.ReportNumCheckRule;
|
||||
import nc.vo.qc.c003.util.ReportAddStockStateRule;
|
||||
import nc.vo.qc.c003.util.ReportVOInfoUtils;
|
||||
import nc.vo.qc.pub.rule.CheckBillNumRule;
|
||||
import nc.vo.qc.pub.rule.NoPassUpdateRule;
|
||||
import nccloud.dto.qc.c003.constance.QCReportOprLogConst;
|
||||
|
||||
public class ReportUpdateBP {
|
||||
public ReportUpdateBP() {
|
||||
}
|
||||
|
||||
public ReportVO[] updateReport(ReportVO[] voArray, ReportVO[] originBills) {
|
||||
CompareAroundProcesser<ReportVO> processer = new CompareAroundProcesser(ReportBPPlugInPoint.ReportUpdateBP);
|
||||
this.addBeforeRule(processer);
|
||||
this.addAfterRule(processer);
|
||||
ReportVOInfoUtils.handlerIndate((Map) null, voArray);
|
||||
processer.before(voArray, originBills);
|
||||
BillUpdate<ReportVO> bo = new BillUpdate();
|
||||
ReportVO[] vos = (ReportVO[]) bo.update(voArray, originBills);
|
||||
processer.after(voArray, originBills);
|
||||
(new QCWriteOperateLogRule(QCReportOprLogConst.maintainService.getCode(), QCReportOprLogConst.updateAction.getCode())).process(originBills, voArray);
|
||||
return vos;
|
||||
}
|
||||
|
||||
private void addAfterRule(CompareAroundProcesser<ReportVO> processer) {
|
||||
processer.addAfterRule(new ChkBillCodeUniqueRule());
|
||||
processer.addAfterRule(new UpdChkBatCode());
|
||||
processer.addAfterRule(new ReportChkChkBatUnique());
|
||||
processer.addAfterRule(new WriteC001WhenUpdateRule());
|
||||
processer.addAfterRule(new UpdateBatchCodeAfterRule());
|
||||
processer.addAfterRule(new SyncQcQmsRule());
|
||||
}
|
||||
|
||||
private void addBeforeRule(CompareAroundProcesser<ReportVO> processer) {
|
||||
processer.addBeforeRule(new VOSagaFrozenValidateRule(true));
|
||||
processer.addBeforeRule(new UpdateBillCodeRule());
|
||||
processer.addBeforeRule(new FillUpDataUpdateRule());
|
||||
String[] hKeys = new String[2];
|
||||
hKeys[0] = "nchecknum";
|
||||
hKeys[1] = "ncheckastnum";
|
||||
String[] bKeys = new String[2];
|
||||
bKeys[0] = "nnum";
|
||||
bKeys[1] = "nastnum";
|
||||
processer.addBeforeRule(new CheckBillNumRule(hKeys, bKeys));
|
||||
processer.addBeforeRule(new SetUpdateAuditInfoRule());
|
||||
processer.addBeforeRule(new ReportItemsCheckRule());
|
||||
processer.addBeforeRule(new QCRowNoCheckRule(ReportItemVO.class, "crowno"));
|
||||
processer.addBeforeRule(new ReportNumCheckRule());
|
||||
processer.addBeforeRule(new UpdateBatchCodeBeforeRule());
|
||||
MarAssistantSaveRule<ReportVO> mar = new MarAssistantSaveRule();
|
||||
processer.addBeforeRule(mar);
|
||||
processer.addBeforeRule(new NoPassUpdateRule());
|
||||
processer.addBeforeRule(new ReportAddStockStateRule());
|
||||
processer.addBeforeRule(new MaterialInStorckOrgRule());
|
||||
}
|
||||
}
|
|
@ -1,15 +1,19 @@
|
|||
package nc.impl.qc.c003.approve.action.rule;
|
||||
package nc.bs.qc.c003.maintain.rule;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||
import nc.bs.dao.BaseDAO;
|
||||
import nc.bs.framework.common.NCLocator;
|
||||
import nc.bs.logging.Log;
|
||||
import nc.bs.uapbd.util.MyHelper;
|
||||
import nc.bs.uapbd.util.ThirdPartyPostRequestUtil;
|
||||
import nc.impl.pubapp.pattern.rule.IRule;
|
||||
import nc.itf.bd.supplier.baseinfo.ISupplierBaseInfoQryService;
|
||||
import nc.vo.bd.material.MaterialVO;
|
||||
import nc.vo.bd.material.measdoc.MeasdocVO;
|
||||
import nc.vo.bd.psn.PsndocVO;
|
||||
import nc.vo.bd.supplier.SupplierVersionVO;
|
||||
import nc.vo.org.OrgVO;
|
||||
import nc.vo.pub.BusinessException;
|
||||
import nc.vo.pubapp.pattern.exception.ExceptionUtils;
|
||||
|
@ -53,7 +57,6 @@ public class SyncQcQmsRule implements IRule<ReportVO> {
|
|||
* 构建同步数据
|
||||
*/
|
||||
private void buildSyncData(ReportVO[] useVOs) throws BusinessException {
|
||||
BaseDAO baseDAO = new BaseDAO();
|
||||
for (ReportVO vo : useVOs) {
|
||||
ReportHeaderVO hvo = vo.getHVO();
|
||||
ReportItemVO[] bvo = vo.getBVO();
|
||||
|
@ -63,35 +66,48 @@ public class SyncQcQmsRule implements IRule<ReportVO> {
|
|||
if (checkIfOrg(orgCode, configParams)) {
|
||||
continue;
|
||||
}
|
||||
// 查询供应商信息
|
||||
String pk_supplier_v = hvo.getPk_supplier_v();
|
||||
ISupplierBaseInfoQryService baseQryService = NCLocator.getInstance().lookup(ISupplierBaseInfoQryService.class);
|
||||
SupplierVersionVO supplierVersionVO = baseQryService.querySupplierVersionByVID(pk_supplier_v);
|
||||
// 查询人员信息
|
||||
String pkApplyer = hvo.getPk_applyer();
|
||||
String applyerName = MyHelper.getStrValByCondition(PsndocVO.getDefaultTableName(), PsndocVO.NAME,
|
||||
PsndocVO.PK_PSNDOC + " = '" + pkApplyer + "'");
|
||||
// 组装数据
|
||||
JSONObject singleObj = new JSONObject();
|
||||
long cts = System.currentTimeMillis();
|
||||
singleObj.put("batchid", cts);
|
||||
singleObj.put("csdh", hvo.getVapplybillcode());// 送检单号,采购送检单的唯一标识编号
|
||||
singleObj.put("sjrq", hvo.getDapplydate().toString());// 送检日期,格式建议为 yyyy-MM-dd
|
||||
singleObj.put("wlgysid", "");// 供应商编码
|
||||
singleObj.put("wlgysmc", "");// 供应商名称
|
||||
singleObj.put("sjr", hvo.getPk_applyer());// 送检人,负责提交送检单的人员姓名
|
||||
singleObj.put("wlgysid", supplierVersionVO.getCode());// 供应商编码
|
||||
singleObj.put("wlgysmc", supplierVersionVO.getName());// 供应商名称
|
||||
singleObj.put("sjr", applyerName);// 送检人,负责提交送检单的人员姓名
|
||||
singleObj.put("cghth", "");// 采购合同号,关联对应的采购合同
|
||||
singleObj.put("bz", "");// 摘要备注,用于填写送检单的补充说明信息
|
||||
singleObj.put("bz", hvo.getVmemo());// 摘要备注,用于填写送检单的补充说明信息
|
||||
|
||||
String pkMaterial = hvo.getPk_material();
|
||||
Map<String, Object> materialMap = MyHelper.getMapValByCondition(MaterialVO.getDefaultTableName(), "code,name,materialspec,materialtype",
|
||||
"pk_material = '" + pkMaterial + "'");
|
||||
String cunitid = hvo.getCunitid();// 主单位
|
||||
String cunitname = MyHelper.getStrValByCondition(MeasdocVO.getDefaultTableName(), MeasdocVO.NAME,
|
||||
MeasdocVO.PK_MEASDOC + " = '" + cunitid + "'");
|
||||
// 处理Content数组
|
||||
JSONArray contentArray = new JSONArray();
|
||||
for (ReportItemVO item : bvo) {
|
||||
JSONObject itemObj = new JSONObject();
|
||||
itemObj.put("wlbh", materialMap.getOrDefault("code", "")); // 物料编码
|
||||
itemObj.put("wlmc", materialMap.getOrDefault("name", "")); // 物料名称
|
||||
String materialtype = materialMap.getOrDefault("materialtype", "") + "";
|
||||
String materialspec = materialMap.getOrDefault("materialspec", "") + "";
|
||||
itemObj.put("wlxhgg", materialtype + materialspec); // 物料型号规格
|
||||
itemObj.put("sjsl", ""); // 送检数量(设计单位),按设计计量单位统计的送检数量
|
||||
itemObj.put("jldw", ""); // 计量单位
|
||||
itemObj.put("bz", ""); // 明细备注,用于填写该送检物料的补充说明
|
||||
contentArray.add(itemObj);
|
||||
JSONObject itemObj = new JSONObject();
|
||||
itemObj.put("wlbh", materialMap.getOrDefault("code", "")); // 物料编码
|
||||
itemObj.put("wlmc", materialMap.getOrDefault("name", "")); // 物料名称
|
||||
String materialtype = materialMap.getOrDefault("materialtype", "") + "";
|
||||
String materialspec = materialMap.getOrDefault("materialspec", "") + "";
|
||||
itemObj.put("wlxhgg", materialtype + materialspec); // 物料型号规格
|
||||
itemObj.put("sjsl", hvo.getNapplynum().toString()); // 送检数量(设计单位),按设计计量单位统计的送检数量
|
||||
itemObj.put("jldw", cunitname); // 计量单位
|
||||
String bz = "";
|
||||
if (bvo != null && bvo.length > 0) {
|
||||
bz = bvo[0].getVbdef1(); // BOM备注
|
||||
}
|
||||
itemObj.put("bz", bz); // 明细备注,用于填写该送检物料的补充说明
|
||||
contentArray.add(itemObj);
|
||||
|
||||
singleObj.put("Content", contentArray);
|
||||
/* {
|
Loading…
Reference in New Issue