2025-10-10 03:31:43 +00:00
|
|
|
|
package tqq9.lc123.cloud.app.plugin.operate.sys;
|
|
|
|
|
|
|
|
|
|
|
|
import kd.bos.dataentity.OperateOption;
|
|
|
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
|
|
|
import kd.bos.entity.operate.result.IOperateInfo;
|
|
|
|
|
|
import kd.bos.entity.operate.result.OperationResult;
|
|
|
|
|
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
|
|
|
|
|
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
2025-11-29 09:24:48 +00:00
|
|
|
|
import kd.bos.logging.Log;
|
|
|
|
|
|
import kd.bos.logging.LogFactory;
|
2025-10-10 03:31:43 +00:00
|
|
|
|
import kd.bos.orm.query.QFilter;
|
|
|
|
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
2025-11-29 09:24:48 +00:00
|
|
|
|
import kd.bos.servicehelper.QueryServiceHelper;
|
2025-10-10 04:22:01 +00:00
|
|
|
|
import kd.bos.servicehelper.operation.OperationServiceHelper;
|
2025-11-29 09:24:48 +00:00
|
|
|
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
2025-10-10 03:31:43 +00:00
|
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 物料审核操作
|
|
|
|
|
|
* 审核成功后,生成对应的商城商品
|
|
|
|
|
|
*/
|
|
|
|
|
|
public class MaterialAuditOp extends AbstractOperationServicePlugIn {
|
|
|
|
|
|
|
2025-11-29 09:24:48 +00:00
|
|
|
|
private static final Log log = LogFactory.getLog(MaterialAuditOp.class);
|
|
|
|
|
|
|
2025-10-10 03:31:43 +00:00
|
|
|
|
@Override
|
|
|
|
|
|
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
|
|
|
|
|
super.afterExecuteOperationTransaction(e);
|
|
|
|
|
|
OperationResult operationResult = this.getOperationResult();
|
|
|
|
|
|
if (operationResult.isSuccess()){
|
|
|
|
|
|
DynamicObject[] dataEntities = e.getDataEntities();
|
|
|
|
|
|
for (DynamicObject material : dataEntities) {
|
2025-11-29 09:24:48 +00:00
|
|
|
|
material = BusinessDataServiceHelper.loadSingle(material.getPkValue(), "bd_material");
|
|
|
|
|
|
String tqq9_srcnumber = material.getString("tqq9_srcnumber");
|
2025-12-03 02:38:06 +00:00
|
|
|
|
//查询是否有源单编码,如果有就是物料变更,如果没有就是正常物料审核
|
2025-11-29 09:24:48 +00:00
|
|
|
|
if(StringUtils.isNotBlank(tqq9_srcnumber)){
|
2025-12-03 02:38:06 +00:00
|
|
|
|
//物料变更逻辑
|
2025-11-29 09:24:48 +00:00
|
|
|
|
String tqq9_changefields = material.getString("tqq9_changefields_tag");
|
|
|
|
|
|
if(StringUtils.isNotBlank(tqq9_changefields)){
|
|
|
|
|
|
QFilter f = new QFilter("number", "=", tqq9_srcnumber);
|
|
|
|
|
|
boolean exists = QueryServiceHelper.exists("bd_material", new QFilter[]{f});
|
|
|
|
|
|
if(exists){
|
|
|
|
|
|
DynamicObject srcMaterial = BusinessDataServiceHelper.loadSingle("bd_material", new QFilter[]{f});
|
|
|
|
|
|
String[] fieldArr = tqq9_changefields.split(",");
|
|
|
|
|
|
for (String changeField : fieldArr) {
|
|
|
|
|
|
srcMaterial.set(changeField, material.get(changeField));
|
|
|
|
|
|
}
|
|
|
|
|
|
SaveServiceHelper.save(new DynamicObject[]{srcMaterial});
|
|
|
|
|
|
OperationResult opResult = OperationServiceHelper.executeOperate("unaudit", "bd_material", new DynamicObject[]{material}, OperateOption.create());
|
|
|
|
|
|
log.info("反审核物料修改信息["+material.getString("number")+"]的结果:"+opResult.isSuccess());
|
|
|
|
|
|
if(opResult.isSuccess()){
|
|
|
|
|
|
opResult = OperationServiceHelper.executeOperate("delete", "bd_material", new DynamicObject[]{material}, OperateOption.create());
|
|
|
|
|
|
log.info("删除物料修改信息["+material.getString("number")+"]的结果:"+opResult.isSuccess());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
2025-12-03 02:38:06 +00:00
|
|
|
|
//物料新增审核,封装商品逻辑:查询对应的商品是否存在
|
2025-11-29 09:24:48 +00:00
|
|
|
|
DynamicObject goods;
|
|
|
|
|
|
Long materialID = material.getLong("id");
|
|
|
|
|
|
QFilter f = new QFilter("tqq9_mater.id", "=", materialID);
|
|
|
|
|
|
DynamicObject[] goodsArr = BusinessDataServiceHelper.load("tqq9_goodspackage", "id", new QFilter[]{f});
|
|
|
|
|
|
if (goodsArr != null && goodsArr.length > 0){
|
|
|
|
|
|
goods = goodsArr[0];
|
|
|
|
|
|
goods = BusinessDataServiceHelper.loadSingle(goods.getPkValue(), goods.getDynamicObjectType().getName());
|
|
|
|
|
|
}else {
|
|
|
|
|
|
goods = BusinessDataServiceHelper.newDynamicObject("tqq9_goodspackage");
|
|
|
|
|
|
goods.set("number", material.getString("number"));
|
|
|
|
|
|
goods.set("tqq9_mater", material);
|
|
|
|
|
|
}
|
|
|
|
|
|
//创建组织-默认励齿集团
|
|
|
|
|
|
DynamicObject createorg = null;
|
|
|
|
|
|
f = new QFilter("number", "=", "LICHI");
|
|
|
|
|
|
DynamicObject[] orgArr = BusinessDataServiceHelper.load("bos_org", "id,name,number", new QFilter[]{f});
|
|
|
|
|
|
if(orgArr != null && orgArr.length > 0){
|
|
|
|
|
|
createorg = orgArr[0];
|
|
|
|
|
|
}
|
|
|
|
|
|
//币种-默认CNY
|
|
|
|
|
|
DynamicObject currency = null;
|
|
|
|
|
|
f = new QFilter("number", "=", "CNY");
|
|
|
|
|
|
DynamicObject[] currencyArr = BusinessDataServiceHelper.load("bd_currency", "id,name,number", new QFilter[]{f});
|
|
|
|
|
|
if(currencyArr != null && currencyArr.length > 0){
|
|
|
|
|
|
currency = currencyArr[0];
|
|
|
|
|
|
}
|
|
|
|
|
|
//查询税率和税率基础资料
|
|
|
|
|
|
DynamicObject tqq9_ssbm = material.getDynamicObject("tqq9_ssbm");
|
|
|
|
|
|
tqq9_ssbm = BusinessDataServiceHelper.loadSingle(tqq9_ssbm.getPkValue(), tqq9_ssbm.getDynamicObjectType().getName(),"id,name,number,taxrate");
|
|
|
|
|
|
BigDecimal taxrate = tqq9_ssbm.getBigDecimal("taxrate");
|
|
|
|
|
|
if(taxrate != null){
|
|
|
|
|
|
goods.set("tqq9_saletaxdcm", taxrate);
|
|
|
|
|
|
QFilter f1 = new QFilter("taxrate", "=", taxrate.multiply(new BigDecimal(100)));
|
|
|
|
|
|
DynamicObject[] bd_taxratesArr = BusinessDataServiceHelper.load("bd_taxrate", "id,number,name,taxrate", new QFilter[]{f1});
|
|
|
|
|
|
goods.set("tqq9_saletaxrate", bd_taxratesArr[0]);
|
|
|
|
|
|
}
|
2025-10-10 03:31:43 +00:00
|
|
|
|
|
2025-11-29 09:24:48 +00:00
|
|
|
|
//给商品信息赋值
|
|
|
|
|
|
goods.set("createorg", createorg);
|
|
|
|
|
|
goods.set("name", material.getString("name"));
|
|
|
|
|
|
goods.set("tqq9_regproname", material.getString("tqq9_zccpmc"));
|
|
|
|
|
|
goods.set("tqq9_platform", "A,B,C");//平台
|
|
|
|
|
|
goods.set("tqq9_brand", material.getDynamicObject("tqq9_brand"));
|
|
|
|
|
|
goods.set("tqq9_wlcd", material.getDynamicObject("tqq9_wlcd1"));
|
|
|
|
|
|
goods.set("tqq9_taxno", tqq9_ssbm);
|
|
|
|
|
|
goods.set("tqq9_medicaltype", material.getString("tqq9_ylfl"));
|
|
|
|
|
|
goods.set("tqq9_level", material.getString("tqq9_spdj"));
|
|
|
|
|
|
goods.set("tqq9_currency", currency);//币种
|
|
|
|
|
|
goods.set("tqq9_onsale_sh", "B");
|
|
|
|
|
|
goods.set("tqq9_onsale_bj", "B");
|
|
|
|
|
|
goods.set("tqq9_onsale_gz", "B");
|
|
|
|
|
|
goods.set("tqq9_saleunit", material.getDynamicObject("baseunit"));//销售单位
|
|
|
|
|
|
goods.set("tqq9_keepcondition", material.getString("tqq9_ccystj"));
|
|
|
|
|
|
goods.set("tqq9_medicalclass", material.getDynamicObject("tqq9_ylflml"));
|
|
|
|
|
|
goods.set("tqq9_skutype2", material.getString("tqq9_combofield_spflii"));
|
|
|
|
|
|
goods.set("tqq9_ckutype3", material.getString("tqq9_combofield_spfliii"));
|
|
|
|
|
|
goods.set("tqq9_skutype4", material.getString("tqq9_spfliii"));
|
|
|
|
|
|
goods.set("tqq9_isauto", true);
|
|
|
|
|
|
goods.set("enable", "1");
|
|
|
|
|
|
goods.set("status", "A");
|
2025-12-03 02:38:06 +00:00
|
|
|
|
operationResult = OperationServiceHelper.executeOperate("save",
|
2025-11-29 09:24:48 +00:00
|
|
|
|
"tqq9_goodspackage", new DynamicObject[]{goods}, OperateOption.create());
|
2025-12-03 02:38:06 +00:00
|
|
|
|
if(!operationResult.isSuccess()){
|
|
|
|
|
|
log.info("物料["+material.getString("number")+"]审核封装商品保存出错msg:"+operationResult.getMessage());
|
|
|
|
|
|
List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo();
|
2025-11-29 09:24:48 +00:00
|
|
|
|
for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
|
2025-12-03 02:38:06 +00:00
|
|
|
|
String message = iOperateInfo.getMessage();
|
|
|
|
|
|
log.info("物料["+material.getString("number")+"]审核封装商品保存出错:"+message);
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
operationResult = OperationServiceHelper.executeOperate("submit",
|
|
|
|
|
|
"tqq9_goodspackage", new DynamicObject[]{goods}, OperateOption.create());
|
|
|
|
|
|
if(operationResult.isSuccess()){
|
|
|
|
|
|
operationResult = OperationServiceHelper.executeOperate("audit",
|
|
|
|
|
|
"tqq9_goodspackage", new DynamicObject[]{goods}, OperateOption.create());
|
|
|
|
|
|
if(operationResult.isSuccess()){
|
|
|
|
|
|
log.info("物料["+material.getString("number")+"]审核封装商品审核成功。");
|
|
|
|
|
|
}else{
|
|
|
|
|
|
log.info("物料["+material.getString("number")+"]审核封装商品审核出错msg:"+operationResult.getMessage());
|
|
|
|
|
|
List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo();
|
|
|
|
|
|
for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
|
|
|
|
|
|
String message = iOperateInfo.getMessage();
|
|
|
|
|
|
log.info("物料["+material.getString("number")+"]审核封装商品审核出错:"+message);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}else{
|
|
|
|
|
|
log.info("物料["+material.getString("number")+"]审核封装商品提交出错msg:"+operationResult.getMessage());
|
|
|
|
|
|
List<IOperateInfo> allErrorOrValidateInfo = operationResult.getAllErrorOrValidateInfo();
|
|
|
|
|
|
for (IOperateInfo iOperateInfo : allErrorOrValidateInfo) {
|
|
|
|
|
|
String message = iOperateInfo.getMessage();
|
|
|
|
|
|
log.info("物料["+material.getString("number")+"]审核封装商品提交出错:"+message);
|
|
|
|
|
|
}
|
2025-11-29 09:24:48 +00:00
|
|
|
|
}
|
2025-10-10 03:31:43 +00:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|