丽知:委外采购(付款单)->采购付款申请(新)、代理采购(付款单)->采购付款申请(店群专用)调拨单内部交易(付款单)->特殊业务处理(新)。对接钉钉。
This commit is contained in:
parent
b6d160cfc6
commit
a51094efe8
|
@ -0,0 +1,15 @@
|
|||
package com.hzya.frame.plugin.lets.dingtalk.dao;
|
||||
|
||||
import com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity;
|
||||
import com.hzya.frame.basedao.dao.IBaseDao;
|
||||
|
||||
/**
|
||||
* (ding_u8c_bill: table)表数据库访问层
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2024-10-28 15:45:32
|
||||
*/
|
||||
public interface IDingU8cBillDao extends IBaseDao<DingU8cBillEntity, String> {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
package com.hzya.frame.plugin.lets.dingtalk.dao.impl;
|
||||
|
||||
import com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity;
|
||||
import com.hzya.frame.plugin.lets.dingtalk.dao.IDingU8cBillDao;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import com.hzya.frame.basedao.dao.MybatisGenericDao;
|
||||
/**
|
||||
* (DingU8cBill)表数据库访问层
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2024-10-28 15:45:32
|
||||
*/
|
||||
@Repository("dingU8cBillDao")
|
||||
public class DingU8cBillDaoImpl extends MybatisGenericDao<DingU8cBillEntity, String> implements IDingU8cBillDao{
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
package com.hzya.frame.plugin.lets.dingtalk.entity;
|
||||
|
||||
import java.util.Date;
|
||||
import com.hzya.frame.web.entity.BaseEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* (DingU8cBill)实体类
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2024-10-28 15:45:32
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class DingU8cBillEntity extends BaseEntity {
|
||||
|
||||
/** 公司主键 */
|
||||
private String u8cPkCorp;
|
||||
/** 公司编码 */
|
||||
private String u8cCodeCorp;
|
||||
/** u8c单据类型 */
|
||||
private String u8cBillType;
|
||||
/** u8c单据号 */
|
||||
private String u8cBillCode;
|
||||
/** u8c单据主键 */
|
||||
private String u8cBillId;
|
||||
/** 是否推送成功 */
|
||||
private String pushStatus;
|
||||
/** 推送日志 */
|
||||
private String pushInfo;
|
||||
/** 钉钉审批实例id */
|
||||
private String dingTalkProcessId;
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,229 @@
|
|||
<?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="com.hzya.frame.plugin.lets.dingtalk.dao.impl.DingU8cBillDaoImpl">
|
||||
|
||||
<resultMap id="get-DingU8cBillEntity-result" type="com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity" >
|
||||
<result property="id" column="id" jdbcType="INTEGER"/>
|
||||
<result property="u8cPkCorp" column="u8c_pk_corp" jdbcType="VARCHAR"/>
|
||||
<result property="u8cCodeCorp" column="u8c_code_corp" jdbcType="VARCHAR"/>
|
||||
<result property="u8cBillType" column="u8c_bill_type" jdbcType="VARCHAR"/>
|
||||
<result property="u8cBillCode" column="u8c_bill_code" jdbcType="VARCHAR"/>
|
||||
<result property="u8cBillId" column="u8c_bill_id" jdbcType="VARCHAR"/>
|
||||
<result property="pushStatus" column="push_status" jdbcType="VARCHAR"/>
|
||||
<result property="pushInfo" column="push_info" jdbcType="VARCHAR"/>
|
||||
<result property="dingTalkProcessId" column="ding_talk_process_id" jdbcType="VARCHAR"/>
|
||||
<result property="modify_time" column="modify_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="create_time" column="create_time" jdbcType="TIMESTAMP"/>
|
||||
<result property="sts" column="sts" jdbcType="VARCHAR"/>
|
||||
</resultMap>
|
||||
<!-- 查询的字段-->
|
||||
<sql id = "DingU8cBillEntity_Base_Column_List">
|
||||
id
|
||||
,u8c_pk_corp
|
||||
,u8c_code_corp
|
||||
,u8c_bill_type
|
||||
,u8c_bill_code
|
||||
,u8c_bill_id
|
||||
,push_status
|
||||
,push_info
|
||||
,ding_talk_process_id
|
||||
,modify_time
|
||||
,create_time
|
||||
,sts
|
||||
</sql>
|
||||
<!-- 查询 采用==查询 -->
|
||||
<select id="entity_list_base" resultMap="get-DingU8cBillEntity-result" parameterType = "com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity">
|
||||
select
|
||||
<include refid="DingU8cBillEntity_Base_Column_List" />
|
||||
from ding_u8c_bill
|
||||
<trim prefix="where" prefixOverrides="and">
|
||||
<if test="id != null"> and id = #{id} </if>
|
||||
<if test="u8cPkCorp != null and u8cPkCorp != ''"> and u8c_pk_corp = #{u8cPkCorp} </if>
|
||||
<if test="u8cCodeCorp != null and u8cCodeCorp != ''"> and u8c_code_corp = #{u8cCodeCorp} </if>
|
||||
<if test="u8cBillType != null and u8cBillType != ''"> and u8c_bill_type = #{u8cBillType} </if>
|
||||
<if test="u8cBillCode != null and u8cBillCode != ''"> and u8c_bill_code = #{u8cBillCode} </if>
|
||||
<if test="u8cBillId != null and u8cBillId != ''"> and u8c_bill_id = #{u8cBillId} </if>
|
||||
<if test="pushStatus != null and pushStatus != ''"> and push_status = #{pushStatus} </if>
|
||||
<if test="pushInfo != null and pushInfo != ''"> and push_info = #{pushInfo} </if>
|
||||
<if test="dingTalkProcessId != null and dingTalkProcessId != ''"> and ding_talk_process_id = #{dingTalkProcessId} </if>
|
||||
<if test="modify_time != null"> and modify_time = #{modify_time} </if>
|
||||
<if test="create_time != null"> and create_time = #{create_time} </if>
|
||||
<if test="sts != null and sts != ''"> and sts = #{sts} </if>
|
||||
and sts='Y'
|
||||
</trim>
|
||||
</select>
|
||||
|
||||
<!-- 查询符合条件的数量 -->
|
||||
<select id="entity_count" resultType="Integer" parameterType = "com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity">
|
||||
select count(1) from ding_u8c_bill
|
||||
<trim prefix="where" prefixOverrides="and">
|
||||
<if test="id != null"> and id = #{id} </if>
|
||||
<if test="u8cPkCorp != null and u8cPkCorp != ''"> and u8c_pk_corp = #{u8cPkCorp} </if>
|
||||
<if test="u8cCodeCorp != null and u8cCodeCorp != ''"> and u8c_code_corp = #{u8cCodeCorp} </if>
|
||||
<if test="u8cBillType != null and u8cBillType != ''"> and u8c_bill_type = #{u8cBillType} </if>
|
||||
<if test="u8cBillCode != null and u8cBillCode != ''"> and u8c_bill_code = #{u8cBillCode} </if>
|
||||
<if test="u8cBillId != null and u8cBillId != ''"> and u8c_bill_id = #{u8cBillId} </if>
|
||||
<if test="pushStatus != null and pushStatus != ''"> and push_status = #{pushStatus} </if>
|
||||
<if test="pushInfo != null and pushInfo != ''"> and push_info = #{pushInfo} </if>
|
||||
<if test="dingTalkProcessId != null and dingTalkProcessId != ''"> and ding_talk_process_id = #{dingTalkProcessId} </if>
|
||||
<if test="modify_time != null"> and modify_time = #{modify_time} </if>
|
||||
<if test="create_time != null"> and create_time = #{create_time} </if>
|
||||
<if test="sts != null and sts != ''"> and sts = #{sts} </if>
|
||||
and sts='Y'
|
||||
</trim>
|
||||
</select>
|
||||
|
||||
<!-- 分页查询列表 采用like格式 -->
|
||||
<select id="entity_list_like" resultMap="get-DingU8cBillEntity-result" parameterType = "com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity">
|
||||
select
|
||||
<include refid="DingU8cBillEntity_Base_Column_List" />
|
||||
from ding_u8c_bill
|
||||
<trim prefix="where" prefixOverrides="and">
|
||||
<if test="id != null"> and id like concat('%',#{id},'%') </if>
|
||||
<if test="u8cPkCorp != null and u8cPkCorp != ''"> and u8c_pk_corp like concat('%',#{u8cPkCorp},'%') </if>
|
||||
<if test="u8cCodeCorp != null and u8cCodeCorp != ''"> and u8c_code_corp like concat('%',#{u8cCodeCorp},'%') </if>
|
||||
<if test="u8cBillType != null and u8cBillType != ''"> and u8c_bill_type like concat('%',#{u8cBillType},'%') </if>
|
||||
<if test="u8cBillCode != null and u8cBillCode != ''"> and u8c_bill_code like concat('%',#{u8cBillCode},'%') </if>
|
||||
<if test="u8cBillId != null and u8cBillId != ''"> and u8c_bill_id like concat('%',#{u8cBillId},'%') </if>
|
||||
<if test="pushStatus != null and pushStatus != ''"> and push_status like concat('%',#{pushStatus},'%') </if>
|
||||
<if test="pushInfo != null and pushInfo != ''"> and push_info like concat('%',#{pushInfo},'%') </if>
|
||||
<if test="dingTalkProcessId != null and dingTalkProcessId != ''"> and ding_talk_process_id like concat('%',#{dingTalkProcessId},'%') </if>
|
||||
<if test="modify_time != null"> and modify_time like concat('%',#{modify_time},'%') </if>
|
||||
<if test="create_time != null"> and create_time like concat('%',#{create_time},'%') </if>
|
||||
<if test="sts != null and sts != ''"> and sts like concat('%',#{sts},'%') </if>
|
||||
and sts='Y'
|
||||
</trim>
|
||||
</select>
|
||||
|
||||
<!-- 查询列表 字段采用or格式 -->
|
||||
<select id="DingU8cBillentity_list_or" resultMap="get-DingU8cBillEntity-result" parameterType = "com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity">
|
||||
select
|
||||
<include refid="DingU8cBillEntity_Base_Column_List" />
|
||||
from ding_u8c_bill
|
||||
<trim prefix="where" prefixOverrides="and">
|
||||
<if test="id != null"> or id = #{id} </if>
|
||||
<if test="u8cPkCorp != null and u8cPkCorp != ''"> or u8c_pk_corp = #{u8cPkCorp} </if>
|
||||
<if test="u8cCodeCorp != null and u8cCodeCorp != ''"> or u8c_code_corp = #{u8cCodeCorp} </if>
|
||||
<if test="u8cBillType != null and u8cBillType != ''"> or u8c_bill_type = #{u8cBillType} </if>
|
||||
<if test="u8cBillCode != null and u8cBillCode != ''"> or u8c_bill_code = #{u8cBillCode} </if>
|
||||
<if test="u8cBillId != null and u8cBillId != ''"> or u8c_bill_id = #{u8cBillId} </if>
|
||||
<if test="pushStatus != null and pushStatus != ''"> or push_status = #{pushStatus} </if>
|
||||
<if test="pushInfo != null and pushInfo != ''"> or push_info = #{pushInfo} </if>
|
||||
<if test="dingTalkProcessId != null and dingTalkProcessId != ''"> or ding_talk_process_id = #{dingTalkProcessId} </if>
|
||||
<if test="modify_time != null"> or modify_time = #{modify_time} </if>
|
||||
<if test="create_time != null"> or create_time = #{create_time} </if>
|
||||
<if test="sts != null and sts != ''"> or sts = #{sts} </if>
|
||||
and sts='Y'
|
||||
</trim>
|
||||
</select>
|
||||
|
||||
<!--新增所有列-->
|
||||
<insert id="entity_insert" parameterType = "com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity" keyProperty="id" useGeneratedKeys="true">
|
||||
insert into ding_u8c_bill(
|
||||
<trim suffix="" suffixOverrides=",">
|
||||
<if test="id != null"> id , </if>
|
||||
<if test="u8cPkCorp != null and u8cPkCorp != ''"> u8c_pk_corp , </if>
|
||||
<if test="u8cCodeCorp != null and u8cCodeCorp != ''"> u8c_code_corp , </if>
|
||||
<if test="u8cBillType != null and u8cBillType != ''"> u8c_bill_type , </if>
|
||||
<if test="u8cBillCode != null and u8cBillCode != ''"> u8c_bill_code , </if>
|
||||
<if test="u8cBillId != null and u8cBillId != ''"> u8c_bill_id , </if>
|
||||
<if test="pushStatus != null and pushStatus != ''"> push_status , </if>
|
||||
<if test="pushInfo != null and pushInfo != ''"> push_info , </if>
|
||||
<if test="dingTalkProcessId != null and dingTalkProcessId != ''"> ding_talk_process_id , </if>
|
||||
<if test="modify_time != null"> modify_time , </if>
|
||||
<if test="create_time != null"> create_time , </if>
|
||||
<if test="sts != null and sts != ''"> sts , </if>
|
||||
<if test="sts == null ">sts,</if>
|
||||
</trim>
|
||||
)values(
|
||||
<trim suffix="" suffixOverrides=",">
|
||||
<if test="id != null"> #{id} ,</if>
|
||||
<if test="u8cPkCorp != null and u8cPkCorp != ''"> #{u8cPkCorp} ,</if>
|
||||
<if test="u8cCodeCorp != null and u8cCodeCorp != ''"> #{u8cCodeCorp} ,</if>
|
||||
<if test="u8cBillType != null and u8cBillType != ''"> #{u8cBillType} ,</if>
|
||||
<if test="u8cBillCode != null and u8cBillCode != ''"> #{u8cBillCode} ,</if>
|
||||
<if test="u8cBillId != null and u8cBillId != ''"> #{u8cBillId} ,</if>
|
||||
<if test="pushStatus != null and pushStatus != ''"> #{pushStatus} ,</if>
|
||||
<if test="pushInfo != null and pushInfo != ''"> #{pushInfo} ,</if>
|
||||
<if test="dingTalkProcessId != null and dingTalkProcessId != ''"> #{dingTalkProcessId} ,</if>
|
||||
<if test="modify_time != null"> #{modify_time} ,</if>
|
||||
<if test="create_time != null"> #{create_time} ,</if>
|
||||
<if test="sts != null and sts != ''"> #{sts} ,</if>
|
||||
<if test="sts == null ">'Y',</if>
|
||||
</trim>
|
||||
)
|
||||
</insert>
|
||||
<!-- 批量新增 -->
|
||||
<insert id="entityInsertBatch" keyProperty="id" useGeneratedKeys="true">
|
||||
insert into ding_u8c_bill(u8c_pk_corp, u8c_code_corp, u8c_bill_type, u8c_bill_code, u8c_bill_id, push_status, push_info, ding_talk_process_id, modify_time, create_time, sts, sts)
|
||||
values
|
||||
<foreach collection="entities" item="entity" separator=",">
|
||||
(#{entity.u8cPkCorp},#{entity.u8cCodeCorp},#{entity.u8cBillType},#{entity.u8cBillCode},#{entity.u8cBillId},#{entity.pushStatus},#{entity.pushInfo},#{entity.dingTalkProcessId},#{entity.modify_time},#{entity.create_time},#{entity.sts}, 'Y')
|
||||
</foreach>
|
||||
</insert>
|
||||
<!-- 批量新增或者修改-->
|
||||
<insert id="entityInsertOrUpdateBatch" keyProperty="id" useGeneratedKeys="true">
|
||||
insert into ding_u8c_bill(u8c_pk_corp, u8c_code_corp, u8c_bill_type, u8c_bill_code, u8c_bill_id, push_status, push_info, ding_talk_process_id, modify_time, create_time, sts)
|
||||
values
|
||||
<foreach collection="entities" item="entity" separator=",">
|
||||
(#{entity.u8cPkCorp},#{entity.u8cCodeCorp},#{entity.u8cBillType},#{entity.u8cBillCode},#{entity.u8cBillId},#{entity.pushStatus},#{entity.pushInfo},#{entity.dingTalkProcessId},#{entity.modify_time},#{entity.create_time},#{entity.sts})
|
||||
</foreach>
|
||||
on duplicate key update
|
||||
u8c_pk_corp = values(u8c_pk_corp),
|
||||
u8c_code_corp = values(u8c_code_corp),
|
||||
u8c_bill_type = values(u8c_bill_type),
|
||||
u8c_bill_code = values(u8c_bill_code),
|
||||
u8c_bill_id = values(u8c_bill_id),
|
||||
push_status = values(push_status),
|
||||
push_info = values(push_info),
|
||||
ding_talk_process_id = values(ding_talk_process_id),
|
||||
modify_time = values(modify_time),
|
||||
create_time = values(create_time),
|
||||
sts = values(sts)</insert>
|
||||
<!--通过主键修改方法-->
|
||||
<update id="entity_update" parameterType = "com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity" >
|
||||
update ding_u8c_bill set
|
||||
<trim suffix="" suffixOverrides=",">
|
||||
<if test="u8cPkCorp != null and u8cPkCorp != ''"> u8c_pk_corp = #{u8cPkCorp},</if>
|
||||
<if test="u8cCodeCorp != null and u8cCodeCorp != ''"> u8c_code_corp = #{u8cCodeCorp},</if>
|
||||
<if test="u8cBillType != null and u8cBillType != ''"> u8c_bill_type = #{u8cBillType},</if>
|
||||
<if test="u8cBillCode != null and u8cBillCode != ''"> u8c_bill_code = #{u8cBillCode},</if>
|
||||
<if test="u8cBillId != null and u8cBillId != ''"> u8c_bill_id = #{u8cBillId},</if>
|
||||
<if test="pushStatus != null and pushStatus != ''"> push_status = #{pushStatus},</if>
|
||||
<if test="pushInfo != null and pushInfo != ''"> push_info = #{pushInfo},</if>
|
||||
<if test="dingTalkProcessId != null and dingTalkProcessId != ''"> ding_talk_process_id = #{dingTalkProcessId},</if>
|
||||
<if test="modify_time != null"> modify_time = #{modify_time},</if>
|
||||
<if test="create_time != null"> create_time = #{create_time},</if>
|
||||
<if test="sts != null and sts != ''"> sts = #{sts},</if>
|
||||
</trim>
|
||||
where id = #{id}
|
||||
</update>
|
||||
<!-- 逻辑删除 -->
|
||||
<update id="entity_logicDelete" parameterType = "com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity" >
|
||||
update ding_u8c_bill set sts= 'N' ,modify_time = #{modify_time},modify_user_id = #{modify_user_id}
|
||||
where id = #{id}
|
||||
</update>
|
||||
<!-- 多条件逻辑删除 -->
|
||||
<update id="entity_logicDelete_Multi_Condition" parameterType = "com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity" >
|
||||
update ding_u8c_bill set sts= 'N' ,modify_time = #{modify_time},modify_user_id = #{modify_user_id}
|
||||
<trim prefix="where" prefixOverrides="and">
|
||||
<if test="id != null"> and id = #{id} </if>
|
||||
<if test="u8cPkCorp != null and u8cPkCorp != ''"> and u8c_pk_corp = #{u8cPkCorp} </if>
|
||||
<if test="u8cCodeCorp != null and u8cCodeCorp != ''"> and u8c_code_corp = #{u8cCodeCorp} </if>
|
||||
<if test="u8cBillType != null and u8cBillType != ''"> and u8c_bill_type = #{u8cBillType} </if>
|
||||
<if test="u8cBillCode != null and u8cBillCode != ''"> and u8c_bill_code = #{u8cBillCode} </if>
|
||||
<if test="u8cBillId != null and u8cBillId != ''"> and u8c_bill_id = #{u8cBillId} </if>
|
||||
<if test="pushStatus != null and pushStatus != ''"> and push_status = #{pushStatus} </if>
|
||||
<if test="pushInfo != null and pushInfo != ''"> and push_info = #{pushInfo} </if>
|
||||
<if test="dingTalkProcessId != null and dingTalkProcessId != ''"> and ding_talk_process_id = #{dingTalkProcessId} </if>
|
||||
<if test="sts != null and sts != ''"> and sts = #{sts} </if>
|
||||
and sts='Y'
|
||||
</trim>
|
||||
</update>
|
||||
<!--通过主键删除-->
|
||||
<delete id="entity_delete">
|
||||
delete from ding_u8c_bill where id = #{id}
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -24,27 +24,36 @@ public class PushController extends DefaultController {
|
|||
@Autowired
|
||||
private PushU8CService pushU8CService;
|
||||
|
||||
/** 委外采购(付款单)->采购付款申请(新) **/
|
||||
/** 委外采购(付款单)->采购付款申请(新) **/
|
||||
@RequestMapping(value = "U8COutSourceBill")
|
||||
@ResponseBody
|
||||
public JsonResultEntity pushU8COutSourceBill(@RequestBody DjFileVO djFileVO){
|
||||
String processInstanceId = pushU8CService.outSource(djFileVO);
|
||||
if("".equals(processInstanceId)){
|
||||
return getFailureMessageEntity(null);
|
||||
}
|
||||
return getSuccessMessageEntity(processInstanceId);
|
||||
}
|
||||
|
||||
/** 代理采购(付款单)->采购付款申请(店群专用) **/
|
||||
/** 代理采购(付款单)->采购付款申请(店群专用) **/
|
||||
@RequestMapping(value = "U8CAgencyBill")
|
||||
@ResponseBody
|
||||
public JsonResultEntity pushU8CAgencyBill(@RequestBody DjFileVO djFileVO){
|
||||
System.out.println("com.hzya.frame.plugin.lets.dingtalk.push.pushController.pushU8CAgencyBill");
|
||||
return getSuccessMessageEntity("112233445566778899");
|
||||
String processInstanceId = pushU8CService.agency(djFileVO);
|
||||
if("".equals(processInstanceId)){
|
||||
return getFailureMessageEntity(null);
|
||||
}
|
||||
return getSuccessMessageEntity(processInstanceId);
|
||||
}
|
||||
|
||||
/** 调拨单内部交易(付款单)->特殊业务处理(新) **/
|
||||
/** 调拨单内部交易(付款单)->特殊业务处理(新) **/
|
||||
@RequestMapping(value = "U8CTransferBill")
|
||||
@ResponseBody
|
||||
public JsonResultEntity pushU8CTransferBill(@RequestBody DjFileVO djFileVO){
|
||||
System.out.println("com.hzya.frame.plugin.lets.dingtalk.push.pushController.pushU8CTransferBill");
|
||||
return getSuccessMessageEntity("112233445566778899");
|
||||
String processInstanceId = pushU8CService.transfer(djFileVO);
|
||||
if("".equals(processInstanceId)){
|
||||
return getFailureMessageEntity(null);
|
||||
}
|
||||
return getSuccessMessageEntity(processInstanceId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,8 +6,11 @@ import cn.hutool.json.JSONUtil;
|
|||
import com.aliyun.dingtalkoauth2_1_0.models.GetAccessTokenResponseBody;
|
||||
import com.aliyun.dingtalkworkflow_1_0.models.StartProcessInstanceRequest;
|
||||
import com.aliyun.dingtalkworkflow_1_0.models.StartProcessInstanceResponse;
|
||||
import com.dingtalk.api.response.OapiV2DepartmentGetResponse;
|
||||
import com.dingtalk.api.response.OapiV2UserGetResponse;
|
||||
import com.dingtalk.api.response.OapiV2UserGetbymobileResponse;
|
||||
import com.hzya.frame.plugin.lets.dingtalk.dao.IDingU8cBillDao;
|
||||
import com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity;
|
||||
import com.hzya.frame.plugin.lets.dingtalk.push.serivce.PushU8CService;
|
||||
import com.hzya.frame.plugin.lets.dingtalk.utils.DingTalkUtils;
|
||||
import com.hzya.frame.plugin.lets.dingtalk.utils.FileUtil;
|
||||
|
@ -15,6 +18,7 @@ import com.hzya.frame.plugin.lets.dingtalk.vo.*;
|
|||
import com.hzya.frame.plugin.lets.plugin.adjust.AdjustInPluginInitializer;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
|
@ -27,6 +31,7 @@ import java.nio.file.Path;
|
|||
import java.nio.file.Paths;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
|
@ -65,82 +70,133 @@ public class PushU8CServiceImpl implements PushU8CService {
|
|||
@Value("${DING.APPROVE_FOLDER_SPACE.PURCHASE_PAYMENT_REQUEST_SHOP}")
|
||||
private String PURCHASE_PAYMENT_REQUEST_SHOP_FOLDER;
|
||||
|
||||
|
||||
Logger logger = LoggerFactory.getLogger(PushU8CServiceImpl.class);
|
||||
|
||||
|
||||
/** 委外采购(付款单)->采购付款申请(新) */
|
||||
/**
|
||||
* 委外采购(付款单)->采购付款申请(新)
|
||||
*/
|
||||
@Override
|
||||
public String outSource(DjFileVO djFileVO) {
|
||||
String instanceId = "";
|
||||
//校验参数
|
||||
try {
|
||||
checkParameter(djFileVO);
|
||||
try{
|
||||
//获取钉钉参数
|
||||
GetAccessTokenResponseBody tokenBody = DingTalkUtils.getTokenBody(APPKEY, AppSecret);
|
||||
|
||||
//制单人的钉钉unionid:通过手机号获取钉钉的userid在获取unionid 13783530043
|
||||
OapiV2UserGetbymobileResponse userByMobile = DingTalkUtils.getUserByMobile(tokenBody.getAccessToken(), "13783530043");
|
||||
if (djFileVO.getDjzbVO().getParentvo().getLrr_code() == null || "".equals(djFileVO.getDjzbVO().getParentvo().getLrr_code())) {
|
||||
Assert.state(false, "录入人手机号为空!!!");
|
||||
}
|
||||
OapiV2UserGetbymobileResponse userByMobile = DingTalkUtils.getUserByMobile(tokenBody.getAccessToken(), djFileVO.getDjzbVO().getParentvo().getLrr_code());
|
||||
String userid = userByMobile.getResult().getUserid();
|
||||
OapiV2UserGetResponse userById = DingTalkUtils.getUserById(tokenBody.getAccessToken(), userid);
|
||||
String unionid = userById.getResult().getUnionid();
|
||||
|
||||
|
||||
//base转文件流-上传钉盘-拿到钉盘信息。可能是List集合
|
||||
List<FileModuleVO> fileModuleVOList = baseTransformFile2uploadDing(djFileVO.getSysFileVOS(),tokenBody.getAccessToken(),unionid,SPACEID,PURCHASE_PAYMENT_REQUEST_NEW_FOLDER);
|
||||
System.out.println(fileModuleVOList);
|
||||
List<FileModuleVO> fileModuleVOList = baseTransformFile2uploadDing(djFileVO.getSysFileVOS(), tokenBody.getAccessToken(), unionid, SPACEID, PURCHASE_PAYMENT_REQUEST_NEW_FOLDER);
|
||||
|
||||
//推送钉钉--》发起审批实例
|
||||
excuteDingTalkOutSource(tokenBody.getAccessToken(),PURCHASE_PAYMENT_REQUEST_NEW,djFileVO.getDjzbVO(),fileModuleVOList);
|
||||
instanceId = excuteDingTalkOutSource(tokenBody.getAccessToken(), userid, PURCHASE_PAYMENT_REQUEST_NEW, djFileVO.getDjzbVO(), fileModuleVOList);
|
||||
|
||||
|
||||
|
||||
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
logger.error("委外采购(付款单)->采购付款申请(新)报错",e);
|
||||
} catch (Exception e) {
|
||||
logger.error("委外采购(付款单)->采购付款申请(新)报错", e);
|
||||
}
|
||||
return "110";
|
||||
return instanceId;
|
||||
}
|
||||
|
||||
/** 代理采购(付款单)->采购付款申请(店群专用) */
|
||||
/**
|
||||
* 代理采购(付款单)->采购付款申请(店群专用)
|
||||
*/
|
||||
@Override
|
||||
public String agency(DjFileVO djFileVO) {
|
||||
String instanceId = "";
|
||||
try {
|
||||
checkParameter(djFileVO);
|
||||
return null;
|
||||
//获取钉钉参数
|
||||
GetAccessTokenResponseBody tokenBody = DingTalkUtils.getTokenBody(APPKEY, AppSecret);
|
||||
//制单人的钉钉unionid:通过手机号获取钉钉的userid在获取unionid 13783530043
|
||||
if (djFileVO.getDjzbVO().getParentvo().getLrr_code() == null || "".equals(djFileVO.getDjzbVO().getParentvo().getLrr_code())) {
|
||||
Assert.state(false, "录入人手机号为空!!!");
|
||||
}
|
||||
//制单人的钉钉unionid:通过手机号获取钉钉的userid在获取unionid 13783530043
|
||||
OapiV2UserGetbymobileResponse userByMobile = DingTalkUtils.getUserByMobile(tokenBody.getAccessToken(), djFileVO.getDjzbVO().getParentvo().getLrr_code());
|
||||
String userid = userByMobile.getResult().getUserid();
|
||||
OapiV2UserGetResponse userById = DingTalkUtils.getUserById(tokenBody.getAccessToken(), userid);
|
||||
String unionid = userById.getResult().getUnionid();
|
||||
|
||||
//base转文件流-上传钉盘-拿到钉盘信息。可能是List集合
|
||||
List<FileModuleVO> fileModuleVOList = baseTransformFile2uploadDing(djFileVO.getSysFileVOS(), tokenBody.getAccessToken(), unionid, SPACEID, PURCHASE_PAYMENT_REQUEST_SHOP_FOLDER);
|
||||
|
||||
//推送钉钉--》发起审批实例
|
||||
instanceId = excuteDingTalkAgency(tokenBody.getAccessToken(), userid, PURCHASE_PAYMENT_REQUEST_SHOP, djFileVO.getDjzbVO(), fileModuleVOList);
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("代理采购(付款单)->采购付款申请(店群专用)报错", e);
|
||||
}
|
||||
return instanceId;
|
||||
}
|
||||
|
||||
/** 调拨单内部交易(付款单)->特殊业务处理(新) */
|
||||
/**
|
||||
* 调拨单内部交易(付款单)->特殊业务处理(新)
|
||||
*/
|
||||
@Override
|
||||
public String transfer(DjFileVO djFileVO) {
|
||||
String instanceId = "";
|
||||
try {
|
||||
checkParameter(djFileVO);
|
||||
return null;
|
||||
//获取钉钉参数
|
||||
GetAccessTokenResponseBody tokenBody = DingTalkUtils.getTokenBody(APPKEY, AppSecret);
|
||||
//制单人的钉钉unionid:通过手机号获取钉钉的userid在获取unionid 13783530043
|
||||
if (djFileVO.getDjzbVO().getParentvo().getLrr_code() == null || "".equals(djFileVO.getDjzbVO().getParentvo().getLrr_code())) {
|
||||
Assert.state(false, "录入人手机号为空!!!");
|
||||
}
|
||||
//制单人的钉钉unionid:通过手机号获取钉钉的userid在获取unionid 13783530043
|
||||
OapiV2UserGetbymobileResponse userByMobile = DingTalkUtils.getUserByMobile(tokenBody.getAccessToken(), djFileVO.getDjzbVO().getParentvo().getLrr_code());
|
||||
String userid = userByMobile.getResult().getUserid();
|
||||
OapiV2UserGetResponse userById = DingTalkUtils.getUserById(tokenBody.getAccessToken(), userid);
|
||||
String unionid = userById.getResult().getUnionid();
|
||||
//base转文件流-上传钉盘-拿到钉盘信息。可能是List集合
|
||||
List<FileModuleVO> fileModuleVOList = baseTransformFile2uploadDing(djFileVO.getSysFileVOS(), tokenBody.getAccessToken(), unionid, SPACEID, SPECIAL_SERVICE_PROCESSING_FOLDER);
|
||||
|
||||
//推送钉钉--》发起审批实例
|
||||
instanceId = excuteDingTalkTransfer(tokenBody.getAccessToken(), userid, SPECIAL_SERVICE_PROCESSING, djFileVO.getDjzbVO(), fileModuleVOList);
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error("调拨单内部交易(付款单)->特殊业务处理(新)报错", e);
|
||||
}
|
||||
return instanceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查参数,VO不能为空,文件不能空
|
||||
*
|
||||
* @param djFileVO:djzbVO+sysFileVOS
|
||||
*/
|
||||
public void checkParameter(DjFileVO djFileVO){
|
||||
Assert.notNull(djFileVO.getDjzbVO(),"u8c单据推送钉钉表单,检查参数,VO不能为空");
|
||||
public void checkParameter(DjFileVO djFileVO) {
|
||||
Assert.notNull(djFileVO.getDjzbVO(), "u8c单据推送钉钉表单,检查参数,VO不能为空");
|
||||
if (djFileVO.getSysFileVOS().size() == 0) {
|
||||
Assert.state(false,"u8c单据推送钉钉表单,检查参数,文件不能空");
|
||||
Assert.state(false, "u8c单据推送钉钉表单,检查参数,文件不能空");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件转换
|
||||
* 将base64转为文件流上传钉盘,并返回钉钉的 List<FileModuleVO>
|
||||
*
|
||||
* @Param fileVOS 文件集合
|
||||
* @Param token token
|
||||
* @Param unionid unionid
|
||||
* @Param spaceId 空间信息
|
||||
* @Param dingFileUrlID 钉盘审批实例中附件地址
|
||||
*/
|
||||
public List<FileModuleVO> baseTransformFile2uploadDing(List<SysFileVO> fileVOS,String token,String unionid,String spaceId,String dingFileUrlID) throws IOException {
|
||||
List<FileModuleVO> fileModuleVOList=new ArrayList<>();
|
||||
public List<FileModuleVO> baseTransformFile2uploadDing(List<SysFileVO> fileVOS, String token, String unionid, String spaceId, String dingFileUrlID) throws IOException {
|
||||
List<FileModuleVO> fileModuleVOList = new ArrayList<>();
|
||||
for (SysFileVO fileVO : fileVOS) {
|
||||
// 指定输出文件路径
|
||||
Path outputPath = Paths.get(fileVO.getFileName()+"."+fileVO.getType());
|
||||
Path outputPath = Paths.get(fileVO.getFileName() + "." + fileVO.getType());
|
||||
// 1. 解码Base64字符串并写入文件
|
||||
byte[] decodedBytes = Base64.getDecoder().decode(fileVO.getBaseCode());
|
||||
Files.write(outputPath, decodedBytes);
|
||||
|
@ -153,7 +209,7 @@ public class PushU8CServiceImpl implements PushU8CService {
|
|||
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
byteArrayOutputStream.write(buffer, 0, bytesRead);
|
||||
}
|
||||
}catch(Exception e){
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
// 3. 打印ByteArrayOutputStream的内容(可选)
|
||||
|
@ -166,62 +222,66 @@ public class PushU8CServiceImpl implements PushU8CService {
|
|||
return fileModuleVOList;
|
||||
}
|
||||
|
||||
/**\
|
||||
|
||||
@Autowired
|
||||
private IDingU8cBillDao dingU8cBillDao;
|
||||
|
||||
/**
|
||||
* 委外采购(付款单)->采购付款申请(新):推送钉钉审批实例
|
||||
*
|
||||
* @param accessToken token
|
||||
* @param userId userId
|
||||
* @param processCode 钉钉模板Code
|
||||
* @param djzbVO U8C单据VO
|
||||
* @param fileModuleVOList 钉钉文件信息,用于上传审批实例使用
|
||||
*/
|
||||
public void excuteDingTalkOutSource(String accessToken,String processCode,DjzbVO djzbVO,List<FileModuleVO> fileModuleVOList) throws Exception {
|
||||
try {
|
||||
public String excuteDingTalkOutSource(String accessToken, String userId, String processCode, DjzbVO djzbVO, List<FileModuleVO> fileModuleVOList) throws Exception {
|
||||
|
||||
DjzbVO.Arap_djzb parentvo = djzbVO.getParentvo();
|
||||
List<DjzbVO.Arap_djfb> childrens = djzbVO.getChildren();
|
||||
|
||||
//公司
|
||||
//部门
|
||||
//发起人
|
||||
|
||||
String instanceId = "";
|
||||
try {
|
||||
//部门查询
|
||||
Long dingDeptId = queryDingDeptId(parentvo.getDeptid_name(), accessToken, userId);
|
||||
if (dingDeptId == null) {
|
||||
Assert.state(false, "根据u8c部门查询钉钉部门失败,可能该录入人:{},不在钉钉部门:{} 下。", parentvo.getLrr_name(), parentvo.getDeptid_name());
|
||||
}
|
||||
|
||||
//formComponentValues-->表单数据内容,控件列表,最大列表长度:150。
|
||||
List<StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues> form = new ArrayList<>();
|
||||
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用归属公司").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用归属部门(选择至末级部门)").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("品牌").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用所属类目").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("付款类型").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("付款比例").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("类目所属(供应链)").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("项目编号").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("项目名称").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("类型").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用归属公司").setValue(parentvo.getDwbm_name()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用归属部门(选择至末级部门)").setValue(parentvo.getDeptid_name()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("品牌").setValue(parentvo.getPinpai()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用所属类目").setValue(parentvo.getBusitypename()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("付款类型").setValue(parentvo.getPrepay()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("付款比例").setValue(parentvo.getFkbl()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("类目所属(供应链)").setValue("供应链类"));
|
||||
// form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("项目编号").setValue("1"));
|
||||
// form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("项目名称").setValue("1"));
|
||||
// form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("类型").setValue("1"));
|
||||
//列表
|
||||
List<List<DingTableVO>> dingTableVOSMaterialList = new ArrayList<>();
|
||||
for (DjzbVO.Arap_djfb children : childrens) {
|
||||
List<DingTableVO> dingTableVOS = new ArrayList<>();
|
||||
dingTableVOS.add(new DingTableVO("存货分类", "2"));
|
||||
dingTableVOS.add(new DingTableVO("产品名称", "2"));
|
||||
dingTableVOS.add(new DingTableVO("产品数量", "2"));
|
||||
dingTableVOS.add(new DingTableVO("付款金额(元)", "665"));
|
||||
dingTableVOS.add(new DingTableVO("税率", "13"));
|
||||
// dingTableVOS.add(new DingTableVO("存货分类", "存货分类"));
|
||||
dingTableVOS.add(new DingTableVO("产品名称", children.getCinventoryid_name()));
|
||||
dingTableVOS.add(new DingTableVO("产品数量", children.getDfshl()));
|
||||
dingTableVOS.add(new DingTableVO("付款金额(元)", children.getBbye()));
|
||||
dingTableVOS.add(new DingTableVO("税率", children.getSl()));
|
||||
dingTableVOSMaterialList.add(dingTableVOS);
|
||||
}
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("付款明细").setValue(JSONUtil.toJsonStr(dingTableVOSMaterialList)));
|
||||
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("开票抬头").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("开票方").setValue("1"));
|
||||
// form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("开票抬头").setValue(parentvo.getDwname()));
|
||||
// form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("开票方").setValue(parentvo.getCustname()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("对方类型").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("支付方式-银行").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("银行支行名称").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("申请支付日期").setValue("2024-10-27"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("备注").setValue("1"));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("支付方式-银行").setValue(parentvo.getAccountname() + parentvo.getAccount() + parentvo.getBanktypename()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("银行支行名称").setValue(parentvo.getBankdocname()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("申请支付日期").setValue(parentvo.getDjrq()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("备注").setValue(parentvo.getScomment()));
|
||||
//附件
|
||||
// form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("上传相关附件(业务相关证明、关联原合同审批件)").setValue(JSONUtil.toJsonStr(fileModuleVOList)));
|
||||
// form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setComponentType("DDAttachment").setId("DDAttachment_1PDRXW3QT4G00").setName("上传相关附件(业务相关证明、关联原合同审批件)").setValue(JSONUtil.toJsonStr(fileModuleVOList)));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setComponentType("DDAttachment").setId("DDAttachment_1PDRXW3QT4G00").setName("上传相关附件").setValue(JSONUtil.toJsonStr(fileModuleVOList)));
|
||||
|
||||
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setComponentType("DDAttachment").setId("DDAttachment_1PDRXW3QT4G00").setName("上传相关附件(业务相关证明、关联原合同审批件)").setValue(JSONUtil.toJsonStr(fileModuleVOList)));
|
||||
/**
|
||||
* 推送钉钉--》发起审批实例
|
||||
* accessToken-->
|
||||
|
@ -232,29 +292,192 @@ public class PushU8CServiceImpl implements PushU8CService {
|
|||
* approvers-->不使用审批流模板时,直接指定的审批人列表,最大列表长度:20。
|
||||
* formComponentValues-->表单数据内容,控件列表,最大列表长度:150。
|
||||
*/
|
||||
StartProcessInstanceResponse startProcessInstanceResponse = DingTalkUtils.InitiateApprovalInstance(accessToken, "6715600736721738", processCode, -1L, Long.valueOf(U8C_TEST_AGENTID), null, form);
|
||||
StartProcessInstanceResponse startProcessInstanceResponse = DingTalkUtils.InitiateApprovalInstance(accessToken, userId, processCode, dingDeptId, Long.valueOf(U8C_TEST_AGENTID), null, form);
|
||||
JSONObject jsonObject = JSONUtil.parseObj(startProcessInstanceResponse);
|
||||
String statusCode = jsonObject.get("statusCode").toString();
|
||||
if (statusCode!=null&&!statusCode.equals("200")) {
|
||||
if (statusCode != null && !statusCode.equals("200")) {
|
||||
Assert.state(false, "委外采购(付款单)->采购付款申请(新):推送钉钉审批实例失败。失败原因:{}", JSONUtil.toJsonStr(jsonObject.get("body")));
|
||||
}
|
||||
logger.info("推送钉钉-->发起审批实例:委外采购(付款单)->采购付款申请(新)-->执行成功");
|
||||
|
||||
//审批实例id
|
||||
String instanceId = JSONUtil.parseObj(jsonObject.get("body")).get("instanceId").toString();
|
||||
System.out.println(instanceId);
|
||||
instanceId = JSONUtil.parseObj(jsonObject.get("body")).get("instanceId").toString();
|
||||
|
||||
//记录成功记录
|
||||
DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity(parentvo.getDwbm(), parentvo.getDwbm_code(), parentvo.getBusitypecode(), parentvo.getDjbh(), parentvo.getVouchid(), "Y", "success", instanceId);
|
||||
dingU8cBillEntity.setCreate_time(new Date());
|
||||
try {
|
||||
dingU8cBillDao.save(dingU8cBillEntity);
|
||||
} catch (Exception e) {
|
||||
DingU8cBillEntity dingU8cBillEntity1 = new DingU8cBillEntity();
|
||||
dingU8cBillEntity1.setU8cPkCorp(parentvo.getDwbm());
|
||||
dingU8cBillEntity1.setU8cCodeCorp(parentvo.getDwbm_code());
|
||||
dingU8cBillEntity1.setU8cBillType(parentvo.getBusitypecode());
|
||||
dingU8cBillEntity1.setU8cBillCode(parentvo.getDjbh());
|
||||
dingU8cBillEntity1.setU8cBillId(parentvo.getVouchid());
|
||||
dingU8cBillEntity1.setPushStatus("Y");
|
||||
dingU8cBillEntity1.setPushInfo(e.getMessage());
|
||||
dingU8cBillEntity1.setDingTalkProcessId(instanceId);
|
||||
dingU8cBillEntity1.setCreate_time(new Date());
|
||||
dingU8cBillDao.save(dingU8cBillEntity1);
|
||||
}
|
||||
return instanceId;
|
||||
|
||||
|
||||
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
logger.error(e.getMessage());
|
||||
e.printStackTrace();
|
||||
//记录失败记录
|
||||
DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity(parentvo.getDwbm(), parentvo.getDwbm_code(), parentvo.getBusitypecode(), parentvo.getDjbh(), parentvo.getVouchid(), "N", e.getMessage(), null);
|
||||
dingU8cBillEntity.setCreate_time(new Date());
|
||||
try {
|
||||
dingU8cBillDao.save(dingU8cBillEntity);
|
||||
} catch (Exception e1) {
|
||||
DingU8cBillEntity dingU8cBillEntity1 = new DingU8cBillEntity();
|
||||
dingU8cBillEntity1.setU8cPkCorp(parentvo.getDwbm());
|
||||
dingU8cBillEntity1.setU8cCodeCorp(parentvo.getDwbm_code());
|
||||
dingU8cBillEntity1.setU8cBillType(parentvo.getBusitypecode());
|
||||
dingU8cBillEntity1.setU8cBillCode(parentvo.getDjbh());
|
||||
dingU8cBillEntity1.setU8cBillId(parentvo.getVouchid());
|
||||
dingU8cBillEntity1.setPushStatus("N");
|
||||
dingU8cBillEntity1.setPushInfo(e.getMessage());
|
||||
dingU8cBillEntity1.setDingTalkProcessId(null);
|
||||
dingU8cBillEntity1.setCreate_time(new Date());
|
||||
dingU8cBillDao.save(dingU8cBillEntity1);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 代理采购(付款单)->采购付款申请(店群专用)
|
||||
*/
|
||||
public String excuteDingTalkAgency(String accessToken, String userId, String processCode, DjzbVO djzbVO, List<FileModuleVO> fileModuleVOList) throws Exception {
|
||||
DjzbVO.Arap_djzb parentvo = djzbVO.getParentvo();
|
||||
List<DjzbVO.Arap_djfb> childrens = djzbVO.getChildren();
|
||||
String instanceId = "";
|
||||
try {
|
||||
//部门查询
|
||||
Long dingDeptId = queryDingDeptId(parentvo.getDeptid_name(), accessToken, userId);
|
||||
if (dingDeptId == null) {
|
||||
Assert.state(false, "根据u8c部门查询钉钉部门失败,可能该录入人:{},不在钉钉部门:{} 下。", parentvo.getLrr_name(), parentvo.getDeptid_name());
|
||||
}
|
||||
//formComponentValues-->表单数据内容,控件列表,最大列表长度:150。
|
||||
List<StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues> form = new ArrayList<>();
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用归属公司").setValue(parentvo.getDwbm_name()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用归属部门(选择至末级部门)").setValue(parentvo.getDeptid_name()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("项目所属类目").setValue("红人代运营"));//固定值
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用所属类目").setValue("运营类"));//固定值
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("总价").setValue(parentvo.getNtaxpricemny()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("实际应支付金额").setValue(parentvo.getBbje()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("归档编号").setValue(parentvo.getGdbh()));
|
||||
// form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("备注").setValue(parentvo.getScomment()));
|
||||
//附件
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setComponentType("DDAttachment").setId("DDAttachment_D7JK56572Y00").setName("附件").setValue(JSONUtil.toJsonStr(fileModuleVOList)));
|
||||
|
||||
//推送钉钉审批实例
|
||||
StartProcessInstanceResponse startProcessInstanceResponse = DingTalkUtils.InitiateApprovalInstance(accessToken, userId, processCode, dingDeptId, Long.valueOf(U8C_TEST_AGENTID), null, form);
|
||||
JSONObject jsonObject = JSONUtil.parseObj(startProcessInstanceResponse);
|
||||
String statusCode = jsonObject.get("statusCode").toString();
|
||||
if (statusCode != null && !statusCode.equals("200")) {
|
||||
Assert.state(false, "代理采购(付款单)->采购付款申请(店群专用):推送钉钉审批实例失败。失败原因:{}", JSONUtil.toJsonStr(jsonObject.get("body")));
|
||||
}
|
||||
logger.info("推送钉钉-->发起审批实例:代理采购(付款单)->采购付款申请(店群专用)-->执行成功");
|
||||
|
||||
instanceId = JSONUtil.parseObj(jsonObject.get("body")).get("instanceId").toString();
|
||||
|
||||
//记录成功记录
|
||||
DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity(parentvo.getDwbm(), parentvo.getDwbm_code(), parentvo.getBusitypecode(), parentvo.getDjbh(), parentvo.getVouchid(), "Y", "success", instanceId);
|
||||
dingU8cBillEntity.setCreate_time(new Date());
|
||||
dingU8cBillDao.save(dingU8cBillEntity);
|
||||
|
||||
return instanceId;
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error(e.getMessage());
|
||||
//记录失败记录
|
||||
DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity(parentvo.getDwbm(), parentvo.getDwbm_code(), parentvo.getBusitypecode(), parentvo.getDjbh(), parentvo.getVouchid(), "N", e.getMessage(), null);
|
||||
dingU8cBillEntity.setCreate_time(new Date());
|
||||
dingU8cBillDao.save(dingU8cBillEntity);
|
||||
}
|
||||
return instanceId;
|
||||
}
|
||||
|
||||
/**
|
||||
* 调拨单内部交易(付款单)->特殊业务处理(新)
|
||||
*/
|
||||
public String excuteDingTalkTransfer(String accessToken, String userId, String processCode, DjzbVO djzbVO, List<FileModuleVO> fileModuleVOList) throws Exception {
|
||||
DjzbVO.Arap_djzb parentvo = djzbVO.getParentvo();
|
||||
List<DjzbVO.Arap_djfb> childrens = djzbVO.getChildren();
|
||||
String instanceId = "";
|
||||
try {
|
||||
//部门查询
|
||||
Long dingDeptId = queryDingDeptId(parentvo.getDeptid_name(), accessToken, userId);
|
||||
if (dingDeptId == null) {
|
||||
Assert.state(false, "根据u8c部门查询钉钉部门失败,可能该录入人:{},不在钉钉部门:{} 下。", parentvo.getLrr_name(), parentvo.getDeptid_name());
|
||||
}
|
||||
//formComponentValues-->表单数据内容,控件列表,最大列表长度:150。
|
||||
List<StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues> form = new ArrayList<>();
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用所属公司").setValue(parentvo.getDwbm_name()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用所属部门").setValue(parentvo.getDeptid_name()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("项目所属类目").setValue("综合"));//固定值
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("费用所属项目").setValue("内部往来"));//固定值
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("申请事由").setValue(parentvo.getScomment()));
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("申请金额(元)").setValue(parentvo.getBbje()));
|
||||
// form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setName("备注").setValue(parentvo.getScomment()));
|
||||
//附件
|
||||
form.add(new StartProcessInstanceRequest.StartProcessInstanceRequestFormComponentValues().setComponentType("DDAttachment").setId("DDAttachment_1XN8VWYAKBTS0").setName("附件").setValue(JSONUtil.toJsonStr(fileModuleVOList)));
|
||||
//推送钉钉审批实例
|
||||
StartProcessInstanceResponse startProcessInstanceResponse = DingTalkUtils.InitiateApprovalInstance(accessToken, userId, processCode, dingDeptId, Long.valueOf(U8C_TEST_AGENTID), null, form);
|
||||
JSONObject jsonObject = JSONUtil.parseObj(startProcessInstanceResponse);
|
||||
String statusCode = jsonObject.get("statusCode").toString();
|
||||
if (statusCode != null && !statusCode.equals("200")) {
|
||||
Assert.state(false, "调拨单内部交易(付款单)->特殊业务处理(新):推送钉钉审批实例失败。失败原因:{}", JSONUtil.toJsonStr(jsonObject.get("body")));
|
||||
}
|
||||
logger.info("推送钉钉-->发起审批实例:调拨单内部交易(付款单)->特殊业务处理(新)-->执行成功");
|
||||
|
||||
instanceId = JSONUtil.parseObj(jsonObject.get("body")).get("instanceId").toString();
|
||||
|
||||
//记录成功记录
|
||||
DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity(parentvo.getDwbm(), parentvo.getDwbm_code(), parentvo.getBusitypecode(), parentvo.getDjbh(), parentvo.getVouchid(), "Y", "success", instanceId);
|
||||
dingU8cBillEntity.setCreate_time(new Date());
|
||||
dingU8cBillDao.save(dingU8cBillEntity);
|
||||
|
||||
} catch (Exception e) {
|
||||
logger.error(e.getMessage());
|
||||
//记录失败记录
|
||||
DingU8cBillEntity dingU8cBillEntity = new DingU8cBillEntity(parentvo.getDwbm(), parentvo.getDwbm_code(), parentvo.getBusitypecode(), parentvo.getDjbh(), parentvo.getVouchid(), "N", e.getMessage(), null);
|
||||
dingU8cBillEntity.setCreate_time(new Date());
|
||||
dingU8cBillDao.save(dingU8cBillEntity);
|
||||
}
|
||||
|
||||
return instanceId;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询钉钉部门
|
||||
*
|
||||
* @return 钉钉部门id
|
||||
* @Param u8cDeptName u8c部门名称
|
||||
* @Param token
|
||||
* @Param userId
|
||||
*/
|
||||
public Long queryDingDeptId(String u8cDeptName, String token, String userId) {
|
||||
try {
|
||||
Assert.notNull(u8cDeptName, "查询钉钉部门u8c部门名称不能为空!!!");
|
||||
OapiV2UserGetResponse user = DingTalkUtils.getUserById(token, userId);
|
||||
List<Long> deptIdList = user.getResult().getDeptIdList();
|
||||
//查询钉钉部门
|
||||
for (Long deptId : deptIdList) {
|
||||
OapiV2DepartmentGetResponse dingDept = DingTalkUtils.getDeptByDeptId(token, deptId);
|
||||
String dingDeptName = dingDept.getResult().getName();
|
||||
if (u8cDeptName.equals(dingDeptName)) {
|
||||
return deptId;
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
logger.error(e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
package com.hzya.frame.plugin.lets.dingtalk.service;
|
||||
|
||||
import com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity;
|
||||
import com.hzya.frame.basedao.service.IBaseService;
|
||||
/**
|
||||
* (DingU8cBill)表服务接口
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2024-10-28 15:45:32
|
||||
*/
|
||||
public interface IDingU8cBillService extends IBaseService<DingU8cBillEntity, String>{
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.hzya.frame.plugin.lets.dingtalk.service.impl;
|
||||
|
||||
import com.hzya.frame.plugin.lets.dingtalk.entity.DingU8cBillEntity;
|
||||
import com.hzya.frame.plugin.lets.dingtalk.dao.IDingU8cBillDao;
|
||||
import com.hzya.frame.plugin.lets.dingtalk.service.IDingU8cBillService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import javax.annotation.Resource;
|
||||
import com.hzya.frame.basedao.service.impl.BaseService;
|
||||
/**
|
||||
* (DingU8cBill)表服务实现类
|
||||
*
|
||||
* @author makejava
|
||||
* @since 2024-10-28 15:45:32
|
||||
*/
|
||||
@Service(value = "dingU8cBillServiceImpl")
|
||||
public class DingU8cBillServiceImpl extends BaseService<DingU8cBillEntity, String> implements IDingU8cBillService {
|
||||
|
||||
private IDingU8cBillDao dingU8cBillDao;
|
||||
|
||||
@Autowired
|
||||
public void setDingU8cBillDao(IDingU8cBillDao dao) {
|
||||
this.dingU8cBillDao = dao;
|
||||
this.dao = dao;
|
||||
}
|
||||
}
|
|
@ -15,7 +15,30 @@ public class DjzbVO {
|
|||
|
||||
@Data
|
||||
public static class Arap_djzb {
|
||||
private String bbje;//本币金额合计
|
||||
private String bbje;//本币金额合计、实际应支付金额 or 申请金额(元)
|
||||
private String busitypecode;//单据类型编码
|
||||
private String busitypename;//单据类型名称、费用所属类目
|
||||
private String deptid_code;//部门编码
|
||||
private String deptid_name;//部门名称
|
||||
private String dwbm_code;//公司编码
|
||||
private String dwbm_name;//公司名称
|
||||
private String hbbm_code;//客商编码、开票方编码
|
||||
private String hbbm_name;//客商名称、开票方名称
|
||||
private String lrr_code;//录入人编码
|
||||
private String lrr_name;//录入人名称
|
||||
private String ntaxpricemny;//总价
|
||||
private String gdbh;//归档编码
|
||||
private String pinpai;//品牌
|
||||
private String fkbl;// 付款比例
|
||||
private String accountname;//户名
|
||||
private String account;//账号
|
||||
private String banktypename;//银行
|
||||
private String bankdocname;//银行所在地区
|
||||
private String scomment;//备注、银行所在地区
|
||||
private String prepay;//预收付标志、付款类型
|
||||
|
||||
|
||||
|
||||
private String bzbm;//币种主键
|
||||
private String bzbm_code;//币种编码
|
||||
private String bzbm_name;//币种名称
|
||||
|
@ -50,33 +73,23 @@ public class DjzbVO {
|
|||
private String def8;//自定义项名称8
|
||||
private String def9;//自定义项名称9
|
||||
private String deptid;//部门主键
|
||||
private String deptid_code;//部门编码
|
||||
private String deptid_name;//部门名称
|
||||
private String dfyhzh;//付款银行帐号
|
||||
private String djbh;//单据编号
|
||||
private String djdl;//单据大类
|
||||
private String djkjnd;//会计年度
|
||||
private String djkjqj;//会计期间
|
||||
private String djrq;//单据日期
|
||||
private String djrq;//单据日期、申请支付日期
|
||||
private String djzt;//单据状态
|
||||
private String dwbm;//公司主键
|
||||
private String dwbm_code;//公司编码
|
||||
private String dwbm_name;//公司名称
|
||||
private String dzrq;//对帐日期
|
||||
private String enduser;//最终修改人(5.1开始支持)
|
||||
private String hbbm;//客商主键
|
||||
private String hbbm_code;//客商编码
|
||||
private String hbbm_name;//客商名称
|
||||
private String lrr;//录入人主键
|
||||
private String lrr_code;//录入人编码
|
||||
private String lrr_name;//录入人名称
|
||||
private String paydate;//支付日期(5.1及以后版本支持)
|
||||
private String prepay;//预收付标志
|
||||
private String qcbz;//是期初
|
||||
private String qrr;//确认人主键
|
||||
private String qrr_code;//确认人编码
|
||||
private String qrr_name;//确认人名称
|
||||
private String scomment;//备注
|
||||
private String shr;//审核人主键
|
||||
private String shr_code;//审核人编码
|
||||
private String shr_name;//审核人名称
|
||||
|
@ -137,14 +150,20 @@ public class DjzbVO {
|
|||
|
||||
@Data
|
||||
public static class Arap_djfb {
|
||||
private String bbye;//付款明细-付款金额(元)
|
||||
private String invcl_code;//付款明细-类目所属编码
|
||||
private String invcl_name;//付款明细-类目所属名称
|
||||
private String dfshl;//付款明细-数量
|
||||
private String cinventoryid_code;//存货编码、付款明细-产品编码
|
||||
private String cinventoryid_name;//存货名称、付款明细-产品名称
|
||||
|
||||
|
||||
private String bbhl;//本币汇率
|
||||
private String bfyhzh;//本方银行帐号主键
|
||||
private String bzbm;//币种主键
|
||||
private String bzbm_code;//币种编码
|
||||
private String bzbm_name;//币种名称
|
||||
private String cinventoryid;//存货主键
|
||||
private String cinventoryid_code;//存货编码
|
||||
private String cinventoryid_name;//存货名称
|
||||
private String contractno;//采购合同号 5.1开始支持
|
||||
private String ddh;//订单号 5.0sp开始支持
|
||||
private String def1;//自定义项名称1
|
||||
|
@ -194,8 +213,8 @@ public class DjzbVO {
|
|||
private String fkyhzh;//付款银行帐号编码
|
||||
private String fph;//发票号 5.0sp开始支持
|
||||
private String hbbm;//客商主键
|
||||
private String hbbm_code;//客商编码
|
||||
private String hbbm_name;//客商名称
|
||||
private String hbbm_code;//客商编码、开票方编码
|
||||
private String hbbm_name;//客商名称、开票方名称
|
||||
private String hsdj;//含税单价
|
||||
private String jfbbje;//借方本币金额
|
||||
private String jfbbsj;//借方本币税金
|
||||
|
|
Loading…
Reference in New Issue