@@ -9,16 +9,14 @@ import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils ;
import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi ;
import com.zt.plat.module.bpm.api.task.BpmTaskApi ;
import com.zt.plat.module.bpm.api.task.dto.BpmApprovalDetailReqDTO ;
import com.zt.plat.module.bpm.api.task.dto.BpmApprovalDetailRespDTO ;
import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO ;
import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO ;
import com.zt.plat.module.bpm.api.task.dto.* ;
import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum ;
import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.* ;
import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO ;
import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO ;
import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PrchOrdDtlMapper ;
import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper ;
import com.zt.plat.module.contractorder.enums.contract.DictEnum ;
import com.zt.plat.module.contractorder.enums.purchaseorder.PurchaseOrderStatusEnum ;
import com.zt.plat.module.contractorder.service.contract.ContractService ;
import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants ;
@@ -37,6 +35,7 @@ import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated ;
import org.springframework.transaction.annotation.Transactional ;
import java.time.format.DateTimeFormatter ;
import java.util.* ;
import java.util.concurrent.atomic.AtomicInteger ;
@@ -95,7 +94,10 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
String orderNumber = generateOrderNumber ( purchaseOrder . getMtrlTp ( ) ) ;
purchaseOrder . setSystemOrderNumber ( orderNumber ) ;
purchaseOrderMapper . insert ( purchaseOrder ) ;
// 返回
if ( createReqVO . getPrchOrdDtlSaveReqVOS ( ) . isEmpty ( ) ) {
return BeanUtils . toBean ( purchaseOrder , PurchaseOrderRespVO . class ) ;
}
//批量插入订单明细
createReqVO . getPrchOrdDtlSaveReqVOS ( ) . forEach ( prchOrdDtlSaveReqVO - > prchOrdDtlSaveReqVO . setOrdId ( purchaseOrder . getId ( ) ) ) ;
List < PrchOrdDtlRespVO > prchOrdDtlRespVOS = prchOrdDtlService . batchCreatePrchOrdDtl ( createReqVO . getPrchOrdDtlSaveReqVOS ( ) ) ;
@@ -113,13 +115,13 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
PurchaseOrderDO updateObj = BeanUtils . toBean ( updateReqVO , PurchaseOrderDO . class ) ;
purchaseOrderMapper . updateById ( updateObj ) ;
//删除订单明细
prchOrdDtlService. deletePrchOrdDtlListByOrdIds( Collections. singletonList( updateReqVO. getId ( ) ) ) ;
log. info ( " 删除旧的订单明细成功" ) ;
// prchOrdDtlService. deletePrchOrdDtlListByOrdIds( Collections. singletonList( updateReqVO.getId())) ;
// log.info(" 删除旧的订单明细成功") ;
// 返回
//批量插入订单明细
updateReqVO. getPrchOrdDtlSaveReqVOS( ) . forEach( prchOrdDtlSaveReqVO - > prchOrdDtlSaveReqVO. setOrdId( updateReqVO. getId ( ) ) ) ;
prchOrdDtlService. batchCreatePrchOrdDtl( updateReqVO. getPrchOrdDtlSaveReqVOS( ) ) ;
log . info ( " 更新订单明细成功 " ) ;
// updateReqVO. getPrchOrdDtlSaveReqVOS(). forEach( prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO. setOrdId( updateReqVO.getId())) ;
// prchOrdDtlService. batchCreatePrchOrdDtl( updateReqVO. getPrchOrdDtlSaveReqVOS()) ;
log . info ( " 更新订单明细成功 " ) ;
}
@Override
@@ -140,7 +142,8 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
prchOrdDtlService . deletePrchOrdDtlListByOrdIds ( ids ) ;
}
private void validatePurchaseOrderNosExists ( List < String > orderNos ) {
private void validatePurchaseOrderNosExists ( List < String > orderNos ) {
List < PurchaseOrderDO > list = purchaseOrderMapper . selectList ( new LambdaQueryWrapper < PurchaseOrderDO > ( ) . in ( PurchaseOrderDO : : getSystemOrderNumber , orderNos ) ) ;
if ( CollUtil . isEmpty ( list ) | | list . size ( ) ! = orderNos . size ( ) ) {
throw exception ( PURCHASE_ORDER_NOT_EXISTS ) ;
@@ -239,51 +242,127 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Override
@Transactional
public String submitErp061 ( List < Long > ids ) {
//通过订单号查询订单
// 通过订单号查询订单
List < PurchaseOrderWithDetailsVO > purchaseOrderWithDetailsVOS = purchaseOrderMapper . selectOrderByIds ( ids ) ;
if ( ! purchaseOrderWithDetailsVOS . isEmpty ( ) ) {
purchaseOrderWithDetailsVOS . forEach ( purchaseOrderWithDetailsVO - > {
ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO ( ) ;
if ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) ! = null ) {
erpOrderSaveReqVO . setOrderid ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getSystemOrderNumber ( ) ) ;
erpOrderSaveReqVO . setCompCode ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getCompanyNumber ( ) ) ; //公司代码
e rpOrderSaveReqVO. setVendor ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getSupplierNumber ( ) ) ; // 供应商帐号
erpOrderSaveReqVO . setDocType ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getType ( ) ) ; //采购凭证类型
erpOrderSaveReqVO . setDocDate ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getVoucherDate ( ) ) ; //采购凭证日期
erpOrderSaveReqVO . setPurchOrg ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getPurchaseOrganizationCustomsDeclaration ( ) ) ; //采购组织
erpOrderSaveReqVO . setPurGroup ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getPurchaseGroup ( ) ) ; //采购组
erpOrderSaveReqVO . setC urrency ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getCurrencyNumber ( ) ) ; // 货币码
erpOrderSaveReqVO . setExchRate ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getExchangeRate ( ) ) ; //汇率
erpOrderSaveReqVO . setZzhth ( purchaseOrderWithDetailsVO . getP urchaseOrder ( ) . getContract Number ( ) ) ; //纸质合同号
erpOrderSaveReqVO . setZxxyh ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getPaperContractNumber ( ) ) ; //小协议号
PurchaseOrderDO order = purchaseOrderWithDetailsVO . getPurchaseOrder ( ) ;
erpOrderSaveReqVO . setOrderNo ( order . getSystemOrderNumber ( ) ) ;
// 1. 处理抬头信息(Head)
E rpOrderSaveReqVO. Head head = new ErpOrderSaveReqVO . Head ( ) ;
head . setComp_code ( order . getCompanyNumber ( ) ) ; // 公司编码 -> 公司代码
head . setVendor ( order . getSupplierNumber ( ) ) ; // 客商编码 -> 供应商帐号
head . setDoc_type ( order . getType ( ) ) ; // 订单类型 -> 采购凭证类型
head . setDoc_date ( order . getVoucherDate ( ) ! = null ? order . getVoucherDate ( ) . toLocalDate ( ) : null ) ; // 凭证日期 -> 采购凭证日期
head . setP urch_org ( order . getPurchaseOrganizationCustomsDeclaration ( ) ) ; // 采购组织编码 -> 采购组织
head . setPur_group ( order . getPurchaseGroup ( ) ) ; // 采购组编码 -> 采购组
head . setCurrency ( order . getC urrency Number ( ) ) ; // 货币码 -> 货币码
head . setExch_rate ( order . getExchangeRate ( ) ) ; // 汇率 -> 汇率
erpOrderSaveReqVO . setHead ( head ) ;
// 2. 处理抬头扩展信息(Exte)
ErpOrderSaveReqVO . Exte exte = new ErpOrderSaveReqVO . Exte ( ) ;
exte . setZzhth ( order . getPaperContractNumber ( ) ) ; // 合同纸质合同号 -> 纸质合同号
exte . setZxxyh ( order . getAgreementNumber ( ) ) ; // 小协议号 -> 小协议号
exte . setZnote ( order . getRemark ( ) ) ; // 备注 -> 备注
exte . setZlifnr ( order . getAgentNumber ( ) ) ; // 代理方编码 -> 代理方
erpOrderSaveReqVO . setExte ( exte ) ;
List < JSONObject > actsCtgrDtlList = purchaseOrderWithDetailsVO . getOrderDetails ( ) . stream ( )
. map ( PrchOrdDtlDO : : getActsCtgrDtl ) . map ( JSONObject : : parseObject )
. toList ( ) ;
JSONArray jsonArray = JSONArray . from ( actsCtgrDtlList ) ;
erpOrderSaveReqVO . setAccts ( jsonArray ) ;
// 3. 处理行项目信息(Item)
List < PrchOrdDtlDO > details = purchaseOrderWithDetailsVO . getOrderDetails ( ) ;
if ( details ! = null & & ! details . isEmpty ( ) ) {
List < ErpOrderSaveReqVO . Item > items = new ArrayList < > ( ) ;
for ( PrchOrdDtlDO detail : details ) {
ErpOrderSaveReqVO . Item item = new ErpOrderSaveReqVO . Item ( ) ;
// 3.1 行项目基本信息
item . setPo_item ( detail . getLineNum ( ) ! = null ? detail . getLineNum ( ) . intValue ( ) : null ) ; // 行项目 -> 行号
item . setMaterial ( detail . getMtrlNum ( ) ) ; // 物料编码 -> 物料号
item . setPlant ( detail . getRcvFactNum ( ) ) ; // 收货工厂编码 -> 工厂
item . setStge_loc ( detail . getRcvWrhNum ( ) ) ; // 收货库位编码 -> 库存地点
item . setQuantity ( detail . getQty ( ) ) ; // 暂估数量 -> 数量
item . setPo_unit ( detail . getUnt ( ) ) ; // 计量单位 -> 计量单位
item . setNet_price ( detail . getInTaxUprc ( ) ) ; // 含税单价 -> 含税单价
item . setPrice_unit ( detail . getPrcUnt ( ) ! = null ? detail . getPrcUnt ( ) . intValue ( ) : 1 ) ; // 价格单位 -> 价格单位
item . setTax_code ( detail . getTaxNum ( ) ) ; // 税码 -> 税码
item . setGr_basediv ( detail . getIsGrInv ( ) ) ; // 是否基于GR的发票校验 -> 基于GR的发票校验
item . setUnlimited_dlv ( detail . getIsUnlRcv ( ) ) ; // 是否允许无限制收货 -> 允许无限制过量交货
item . setBatch ( detail . getBat ( ) ) ; // 批次 -> 批次
item . setAcctasscat ( detail . getActsCtgr ( ) ) ; // 科目分配类别 -> 科目分配类别
item . setMatl_group ( detail . getMtrlCpntNum ( ) ) ; // 物料组编码 -> 物料组
item . setShort_text ( detail . getShrtTxt ( ) ) ; // 短文本 -> 短文本
item . setRet_item ( detail . getIsRlbkCgo ( ) ) ; // 退货标识 -> 退货项目标识
item . setFree_item ( detail . getIsFreeRcv ( ) ) ; // 是否免费收货标识 -> 免费项目标识
item . setVendrbatch ( String . valueOf ( detail . getOutLineNum ( ) ) ) ; // 外部行项目号 -> 外部行项目号
item . setNote_xq ( detail . getRmkUnt ( ) ) ; // 备注信息-需求单位 -> 备注信息-需求单位
item . setNote_wl ( detail . getRmkMtrl ( ) ) ; // 备注信息-物料详细 -> 备注信息-物料详细
// 处理交货起止日期(格式:YYYYMMDD-YYYYMMDD)
StringBuilder vendMat = new StringBuilder ( ) ;
if ( detail . getBgnDt ( ) ! = null ) {
vendMat . append ( detail . getBgnDt ( ) . format ( DateTimeFormatter . ofPattern ( " yyyyMMdd " ) ) ) ;
}
vendMat . append ( " - " ) ;
if ( detail . getDdlDt ( ) ! = null ) {
vendMat . append ( detail . getDdlDt ( ) . format ( DateTimeFormatter . ofPattern ( " yyyyMMdd " ) ) ) ;
}
item . setVend_mat ( vendMat . toString ( ) ) ;
// 3.2 行项目扩展信息(Itex)
ErpOrderSaveReqVO . Itex itex = new ErpOrderSaveReqVO . Itex ( ) ;
itex . setZmatnr ( detail . getSaleMtrlNum ( ) ) ; // 销售物料号 -> 销售物料号
itex . setZaufnr ( detail . getInOrd ( ) ) ; // 统计型内部订单 -> 统计型内部订单
itex . setZpurty ( detail . getPrchCtgr ( ) ) ; // 采购类别 -> 采购类别
itex . setZmenge ( detail . getOrigWet ( ) ) ; // 原料湿重 -> 原料湿重
item . setItex ( itex ) ;
// 3.4 委托加工物料信息(Comp) - 简化处理, 实际需解析JSON
// List<ErpOrderSaveReqVO.Comp> comps = new ArrayList<>();
// if (detail.getEnttDtl() != null && !detail.getEnttDtl().isEmpty()) {
// // 假设ENTT_DTL是JSON数组, 实际需根据具体格式解析
// ErpOrderSaveReqVO.Comp comp = new ErpOrderSaveReqVO.Comp();
// comp.setSched_line(1); // 计划行号(示例)
// comp.setItem_no(1); // 项目编号(示例)
// // 其他字段需从JSON中解析: material、plant、entry_quantity等
// comps.add(comp);
// }
// item.setComps(comps);
items . add ( item ) ;
}
erpOrderSaveReqVO . setItems ( items ) ;
}
if ( purchaseOrderWithDetailsVO . getOrderDetails ( ) ! = null ) {
purchaseOrderWithDetailsVO . getOrderDetails ( ) . forEach ( orderDetail - > {
erpOrderSaveReqVO . setPoItem ( orderDetail . getLineNum ( ) ) ; //行号
erpOrderSaveReqVO . setMaterial ( orderDetail . getRcvFactNum ( ) ) ; //物料号
erpOrderSaveReqVO . setQuantity ( orderDetail . getQty ( ) ) ; // 数量
erpOrderSaveReqVO . setPoUnit ( orderDetail . getUnt ( ) ) ; // 计量单位
erpOrderSaveReqVO . setNetPrice ( orderDetail . getInTaxUprc ( ) ) ; // 含税单价
erpOrderSaveReqVO . setActsCtgrDtl ( orderDetail . getActsCtgrDtl ( ) ) ;
} ) ;
}
// 4. 推送ERP并处理返回结果
String s = erpOrderService . submitOrderToErp061 ( erpOrderSaveReqVO ) ;
log . info ( " 订单推送成功,订单id【{}】 " , purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getId ( ) ) ;
String erpId = JSONObject . parseObject ( s ) . get ( " id " ) . toString ( ) ;
if ( erpId ! = null ) {
//更新订单
int i = purchaseOrderMapper . updateById ( new PurchaseOrderDO ( ) . setId ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getId ( ) ) . setOrderSAPNumber ( erpId ) ) ;
if ( i > 0 ) {
log . info ( " 更新订单ERPID成功,订单id【{}】 " , purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getId ( ) ) ;
log . info ( " 订单推送成功,订单id【{}】 " , order . getId ( ) ) ;
// 解析ERP返回的ID
JSONObject jsonObject = JSONObject . parseObject ( s ) ;
Str ing erpId = jsonObject . getString ( " id " ) ;
if ( erpId ! = null & & ! erpId . isEmpty ( ) ) {
// 更新订单的 ERP编号
PurchaseOrderDO updateDO = new PurchaseOrderDO ( ) ;
updateDO . setId ( order . getId ( ) ) ;
updateDO . setOrderSAPNumber ( erpId ) ;
int updateCount = purchaseOrderMapper . updateById ( updateDO ) ;
if ( updateCount > 0 ) {
log . info ( " 更新订单ERPID成功,订单id【{}】 " , order . getId ( ) ) ;
} else {
log . info ( " 订单更新失败,订单id【{}】 " , purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getId ( ) ) ;
log . error ( " 订单更新失败,订单id【{}】 " , order . getId ( ) ) ;
throw new RuntimeException ( " 订单更新失败 " ) ;
}
} else {
log . error ( " ERP返回ID为空,订单id【{}】 " , order . getId ( ) ) ;
throw new RuntimeException ( " ERP返回ID为空 " ) ;
}
} ) ;
//推送后把erp订单id设置到订单里
return " ERP推送成功 " ;
} else {
return " 订单不存在 " ;
@@ -341,27 +420,27 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Override
public void updateOrderStatusByIdOrOrderNo ( PurchaseOrderStsReqVO reqVO ) {
// 校验存在
if ( reqVO . getIds ( ) ! = null ) {
validatePurchaseOrderExists ( reqVO . getIds ( ) ) ;
}
if ( reqVO . getOrderNos ( ) ! = null ) {
validatePurchaseOrderNosExists ( reqVO . getOrderNos ( ) ) ;
}
if ( reqVO . getIds ( ) ! = null ) {
validatePurchaseOrderExists ( reqVO . getIds ( ) ) ;
}
if ( reqVO . getOrderNos ( ) ! = null ) {
validatePurchaseOrderNosExists ( reqVO . getOrderNos ( ) ) ;
}
PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum . getByCode ( reqVO . getSts ( ) ) ;
if ( byCode = = null ) {
throw exception ( PURCHASE_ORDER_STATUS_ERROR ) ;
}
purchaseOrderMapper . update ( new LambdaUpdateWrapper < PurchaseOrderDO > ( ) . in ( reqVO . getOrderNos ( ) ! = null , PurchaseOrderDO : : getSystemOrderNumber , reqVO . getOrderNos ( ) ) . in ( reqVO . getIds ( ) ! = null , PurchaseOrderDO : : getId , reqVO . getIds ( ) ) . set ( PurchaseOrderDO : : getStatus , reqVO . getSts ( ) ) ) ;
purchaseOrderMapper . update ( new LambdaUpdateWrapper < PurchaseOrderDO > ( ) . in ( reqVO . getOrderNos ( ) ! = null , PurchaseOrderDO : : getSystemOrderNumber , reqVO . getOrderNos ( ) ) . in ( reqVO . getIds ( ) ! = null , PurchaseOrderDO : : getId , reqVO . getIds ( ) ) . set ( PurchaseOrderDO : : getStatus , reqVO . getSts ( ) ) ) ;
}
@Override
public CommonResult < MaterialRespVO > getMaterial ( String orderNo ) {
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper . selectOne ( new LambdaQueryWrapper < PurchaseOrderDO > ( ) . eq ( PurchaseOrderDO : : getSystemOrderNumber , orderNo ) ) ;
if ( purchaseOrderDO = = null ) {
throw exception ( PURCHASE_ORDER_NOT_EXISTS ) ;
}
if ( purchaseOrderDO = = null ) {
throw exception ( PURCHASE_ORDER_NOT_EXISTS ) ;
}
String mtrlTp = purchaseOrderDO . getMtrlTp ( ) ;
if ( " RAW " . equals ( mtrlTp ) ) {
if ( " RAW " . equals ( mtrlTp ) ) {
//原料
MaterialRespVO materialRespVO = new MaterialRespVO ( ) ;
materialRespVO . setMaterialType ( mtrlTp ) ;
@@ -374,7 +453,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
materialDetails . setMaterialType ( purchaseOrderDO . getMtrlTp ( ) ) ;
materialRespVO . setMaterialDetails ( List . of ( materialDetails ) ) ;
return CommonResult . success ( materialRespVO ) ;
} else {
} else {
List < PrchOrdDtlDO > detailsByOrderIds = prchOrdDtlService . getDetailsByOrderId ( purchaseOrderDO . getId ( ) ) ;
MaterialRespVO materialRespVO = new MaterialRespVO ( ) ;
materialRespVO . setMaterialType ( mtrlTp ) ;
@@ -399,6 +478,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
return contractService . linkOrder ( reqVO ) ;
}
private void setValue ( ErpOrderUpdateReqVO erpOrderUpdateReqVO , PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO ) {
//head
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper . selectById ( purchaseOrderWithDetailsVO . getPurchaseOrder ( ) . getId ( ) ) ;
@@ -428,7 +508,7 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
item . setMaterial ( prchOrdDtlDO . getRcvFactNum ( ) ) ; //物料号
item . setPlant ( prchOrdDtlDO . getRcvFactNum ( ) ) ; //工厂
item . setStge_loc ( prchOrdDtlDO . getRcvWrhNum ( ) ) ; //库位
item . setQuantity ( prchOrdDtlDO . getQty ( ) ) ; // 数量
item . setQuantity ( String . valueOf ( prchOrdDtlDO. getQty ( ) ) ) ;// 数量
item . setPo_unit ( prchOrdDtlDO . getUnt ( ) ) ; // 计量单位
item . setNet_price ( prchOrdDtlDO . getInTaxUprc ( ) ) ; // 含税单价
item . setTax_code ( prchOrdDtlDO . getTaxNum ( ) ) ; //税码
@@ -452,8 +532,57 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
} ) ;
erpOrderUpdateReqVO . setItexs ( itexs ) ;
}
private String generateOrderNumber ( String materialType ) {
return sequenceApi . getNextSequence ( " PURCHASE_ORDER_NUMBER " , null , null ) . getData ( ) ;
}
@Override
public boolean orderPassReject ( PurchaseorderReqVO purchaseorderReqVO ) {
PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper . selectById ( purchaseorderReqVO . getId ( ) ) ;
if ( ObjectUtils . isEmpty ( purchaseOrderDO ) ) {
throw exception ( PURCHASE_ORDER_NOT_EXISTS ) ;
}
AdminUserRespDTO adminUserRespDTO = adminUserApi . getUser ( SecurityFrameworkUtils . getLoginUserId ( ) ) . getData ( ) ;
// 获取当前流程正在审批的任务节点
List < BpmTaskRespDTO > taskList = bpmTaskApi . getTaskListByProcessInstanceId ( purchaseOrderDO . getProcessInstanceId ( ) ) . getData ( ) ;
BpmTaskRespDTO undoTask = taskList . get ( taskList . size ( ) - 1 ) ;
// 判断是否流程已经通过、驳回
BpmApprovalDetailReqDTO badrDto = new BpmApprovalDetailReqDTO ( ) ;
badrDto . setProcessInstanceId ( purchaseOrderDO . getProcessInstanceId ( ) ) ; // 流程实例id
badrDto . setTaskId ( undoTask . getId ( ) ) ; // 当前审核任务节点id
BpmApprovalDetailRespDTO approvalDetail = bpmProcessInstanceApi . getApprovalDetail ( SecurityFrameworkUtils . getLoginUserId ( ) , badrDto ) . getData ( ) ;
//如果审核通过
if ( BpmProcessInstanceStatusEnum . APPROVE . getStatus ( ) . equals ( approvalDetail . getStatus ( ) ) ) {
purchaseOrderDO . setStatus ( PurchaseOrderStatusEnum . TO_SUBMIT_ERP . getCode ( ) ) ;
} else if ( BpmProcessInstanceStatusEnum . REJECT . getStatus ( ) . equals ( approvalDetail . getStatus ( ) ) ) {
//如果审核不通过
purchaseOrderDO . setStatus ( PurchaseOrderStatusEnum . DRAFT . getCode ( ) ) ;
}
//设置审核意见
purchaseOrderDO . setReviewOpinion ( purchaseorderReqVO . getReviewOpinion ( ) ) ;
if ( ObjectUtils . isNotEmpty ( undoTask ) ) {
purchaseOrderDO . setTaskId ( undoTask . getId ( ) ) ;
}
purchaseOrderMapper . updateById ( purchaseOrderDO ) ; //更新状态
// 需要调用bpm 审核接口更新审批中的状态
if ( DictEnum . BSE_CTRT_STS_WAIT_PUSH . getCode ( ) . equals ( purchaseorderReqVO . getStatus ( ) ) & & ObjectUtils . isNotEmpty ( undoTask ) ) {
if ( approvalDetail . getStatus ( ) . equals ( BpmProcessInstanceStatusEnum . RUNNING . getStatus ( ) ) ) {
BpmTaskApproveReqDTO btarDto = new BpmTaskApproveReqDTO ( ) ;
btarDto . setId ( undoTask . getId ( ) ) ;
btarDto . setReason ( purchaseorderReqVO . getReviewOpinion ( ) ) ;
bpmProcessInstanceApi . approveTask ( btarDto ) ;
}
} else if ( DictEnum . BSE_CTRT_STS_REJECTED . getCode ( ) . equals ( purchaseorderReqVO . getStatus ( ) ) & & ObjectUtils . isNotEmpty ( undoTask ) ) {
if ( approvalDetail . getStatus ( ) . equals ( BpmProcessInstanceStatusEnum . RUNNING . getStatus ( ) ) ) {
BpmTaskRejectReqDTO btrrDto = new BpmTaskRejectReqDTO ( ) ;
btrrDto . setId ( undoTask . getId ( ) ) ;
btrrDto . setReason ( purchaseorderReqVO . getReviewOpinion ( ) ) ;
bpmProcessInstanceApi . rejectTask ( btrrDto ) ;
}
}
return false ;
}
}