提交代码
parent
26a1acb114
commit
497177d521
102
pom.xml
102
pom.xml
|
@ -42,9 +42,10 @@
|
|||
<hutool.version>5.8.20</hutool.version>
|
||||
<aspectjweaver.version>1.9.1</aspectjweaver.version>
|
||||
<lowagie.version>2.1.7</lowagie.version>
|
||||
<poi-tl.version>1.6.0-beta1</poi-tl.version>
|
||||
<poi-tl.version>1.12.0</poi-tl.version>
|
||||
<lowagie.iTextAsian.version>1.0</lowagie.iTextAsian.version>
|
||||
<itextpdf.version>5.5.13</itextpdf.version>
|
||||
<aspose.words.version>15.8.0</aspose.words.version>
|
||||
</properties>
|
||||
|
||||
<!-- 依赖声明 -->
|
||||
|
@ -125,6 +126,57 @@
|
|||
<version>${poi.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 生成pdf-->
|
||||
<dependency>
|
||||
<groupId>com.lowagie</groupId>
|
||||
<artifactId>itext</artifactId>
|
||||
<version>${lowagie.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.lowagie</groupId>
|
||||
<artifactId>itext-rtf</artifactId>
|
||||
<version>${lowagie.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.lowagie</groupId>
|
||||
<artifactId>iTextAsian</artifactId>
|
||||
<version>${lowagie.iTextAsian.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!--根据word模板生成word文件-->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi</artifactId>
|
||||
<version>${poi.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml-schemas</artifactId>
|
||||
<version>4.1.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.deepoove</groupId>
|
||||
<artifactId>poi-tl</artifactId>
|
||||
<version>${poi-tl.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!--word文件转化为PDF文件-->
|
||||
<dependency>
|
||||
<groupId>org.aspectj</groupId>
|
||||
<artifactId>aspectjweaver</artifactId>
|
||||
<version>${aspectjweaver.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.aspose</groupId>
|
||||
<artifactId>aspose-words</artifactId>
|
||||
<version>${aspose.words.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 代码生成使用模板 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.velocity</groupId>
|
||||
|
@ -230,54 +282,6 @@
|
|||
<version>${yanzhu.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!--根据word模板生成word文件 开始-->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi</artifactId>
|
||||
<version>${poi.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.lowagie</groupId>
|
||||
<artifactId>itext</artifactId>
|
||||
<version>${lowagie.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.lowagie</groupId>
|
||||
<artifactId>itext-rtf</artifactId>
|
||||
<version>${lowagie.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.deepoove</groupId>
|
||||
<artifactId>poi-tl</artifactId>
|
||||
<version>${poi-tl.version}</version>
|
||||
</dependency>
|
||||
<!--根据word模板生成word文件 结束-->
|
||||
|
||||
<!--word文件转化为PDF文件 开始-->
|
||||
<dependency>
|
||||
<groupId>org.aspectj</groupId>
|
||||
<artifactId>aspectjweaver</artifactId>
|
||||
<version>${aspectjweaver.version}</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.aspose</groupId>
|
||||
<artifactId>aspose-words</artifactId>
|
||||
<version>15.8.0</version>
|
||||
</dependency>
|
||||
<!--word文件转化为PDF文件 结束-->
|
||||
|
||||
<!--pdf签名使用工具类-->
|
||||
<dependency>
|
||||
<groupId>com.itextpdf</groupId>
|
||||
<artifactId>itextpdf</artifactId>
|
||||
<version>${itextpdf.version}</version>
|
||||
</dependency>
|
||||
<!--pdf签名使用工具类-->
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.mpxj</groupId>
|
||||
<artifactId>mpxj</artifactId>
|
||||
|
|
|
@ -7,6 +7,7 @@ package com.yanzhu.common.core.enums;
|
|||
*/
|
||||
public enum UseStateEnums {
|
||||
|
||||
AW("0", "待入场"),
|
||||
IN("1", "进场"),
|
||||
OUT("2", "离场");
|
||||
|
||||
|
|
|
@ -11,6 +11,11 @@ import java.io.Serializable;
|
|||
@Data
|
||||
public class FlowSaveXmlVo implements Serializable {
|
||||
|
||||
/**
|
||||
* 项目主键
|
||||
*/
|
||||
private String proId;
|
||||
|
||||
/**
|
||||
* 流程名称
|
||||
*/
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package com.yanzhu.flowable.mapper;
|
||||
|
||||
import com.yanzhu.flowable.domain.dto.FlowProcDefDto;
|
||||
import com.yanzhu.flowable.domain.my.FlowDeptVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 流程定义查询
|
||||
|
@ -15,8 +18,39 @@ public interface FlowDeployMapper {
|
|||
|
||||
/**
|
||||
* 流程定义列表
|
||||
* @param name
|
||||
* @param name 流程名称
|
||||
* @param category 流程分类
|
||||
* @param comId 单位主键
|
||||
* @param proId 项目主键
|
||||
* @param proName 项目主键
|
||||
* @return
|
||||
*/
|
||||
List<FlowProcDefDto> selectDeployList(String name);
|
||||
List<FlowProcDefDto> selectDeployList(@Param("name") String name, @Param("category") String category,@Param("comId") Long comId, @Param("proId") Long proId, @Param("proName") String proName);
|
||||
|
||||
/**
|
||||
* 删除流程定义和项目关联
|
||||
*
|
||||
* @param proId 流程主键
|
||||
* @param type 流程主键
|
||||
* @return 结果
|
||||
*/
|
||||
List<Map<String,Object>> selectProcdefDeptByParam(@Param("proId") Long proId, @Param("type") String type);
|
||||
|
||||
/**
|
||||
* 删除流程定义和项目关联
|
||||
*
|
||||
* @param defId 流程主键
|
||||
* @param proId 流程主键
|
||||
* @param type 流程主键
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteProcdefDeptByParam(@Param("defId") String defId, @Param("proId") String proId, @Param("type") String type);
|
||||
|
||||
/**
|
||||
* 保存流程定义和项目关联
|
||||
*
|
||||
* @param flowDeptVo 工作流项目单位关系
|
||||
* @return 结果
|
||||
*/
|
||||
void saveProcdefDeptByParam(FlowDeptVo flowDeptVo);
|
||||
}
|
||||
|
|
|
@ -115,6 +115,8 @@ public class ProProjectInfoSubdepts extends BaseEntity
|
|||
private String leaderCardImgInv;
|
||||
/** 委托人半身照片 */
|
||||
private String leaderUserPicture;
|
||||
/** 委托代理人学历 */
|
||||
private String leaderDegreeGrade;
|
||||
|
||||
/**
|
||||
* 用户信息
|
||||
|
@ -354,6 +356,14 @@ public class ProProjectInfoSubdepts extends BaseEntity
|
|||
this.proProjectInfoSubdeptsUsers = proProjectInfoSubdeptsUsers;
|
||||
}
|
||||
|
||||
public String getLeaderDegreeGrade() {
|
||||
return leaderDegreeGrade;
|
||||
}
|
||||
|
||||
public void setLeaderDegreeGrade(String leaderDegreeGrade) {
|
||||
this.leaderDegreeGrade = leaderDegreeGrade;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
|
|
@ -28,6 +28,9 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity
|
|||
/** 主键 */
|
||||
private Long id;
|
||||
|
||||
/** 上级主键 */
|
||||
private Long parId;
|
||||
|
||||
@Excel(name = "姓名")
|
||||
private String userName;
|
||||
@Excel(name = "身份证")
|
||||
|
@ -140,6 +143,10 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity
|
|||
* 用户岗位
|
||||
*/
|
||||
private String userPost;
|
||||
/**
|
||||
* 二维码
|
||||
*/
|
||||
private String qrCode;
|
||||
|
||||
public String getEnterState() {
|
||||
return enterState;
|
||||
|
@ -237,6 +244,15 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity
|
|||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
public Long getParId() {
|
||||
return parId;
|
||||
}
|
||||
|
||||
public void setParId(Long parId) {
|
||||
this.parId = parId;
|
||||
}
|
||||
|
||||
public void setComId(Long comId)
|
||||
{
|
||||
this.comId = comId;
|
||||
|
@ -459,6 +475,14 @@ public class ProProjectInfoSubdeptsUsers extends BaseEntity
|
|||
this.userPost = userPost;
|
||||
}
|
||||
|
||||
public String getQrCode() {
|
||||
return qrCode;
|
||||
}
|
||||
|
||||
public void setQrCode(String qrCode) {
|
||||
this.qrCode = qrCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
|
|
@ -58,4 +58,5 @@ public interface ProProjectInfoSubdeptsGroupMapper
|
|||
* @return 结果
|
||||
*/
|
||||
public int deleteProProjectInfoSubdeptsGroupByIds(Long[] ids);
|
||||
|
||||
}
|
||||
|
|
|
@ -15,17 +15,61 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
rp.key_ as flowKey,
|
||||
rp.version_ as version,
|
||||
rp.suspension_state_ as suspensionState,
|
||||
rd.deploy_time_ as deploymentTime
|
||||
rd.deploy_time_ as deploymentTime,
|
||||
sd.dept_id as deptId,
|
||||
sd.dept_name as deptName,
|
||||
pi.id as projectId,
|
||||
pi.project_name as projectName
|
||||
FROM
|
||||
act_re_procdef rp
|
||||
LEFT JOIN act_re_deployment rd ON rp.deployment_id_ = rd.id_
|
||||
LEFT JOIN act_re_procdef_dept rpd ON rpd.PROCDEF_ID_ = rp.ID_
|
||||
LEFT JOIN pro_project_info pi on pi.id = rpd.PROJ_ID_
|
||||
LEFT JOIN sys_dept sd on sd.dept_id = pi.com_id
|
||||
<where>
|
||||
<if test="name != null and name != ''">
|
||||
and rd.name_ like concat('%', #{name}, '%')
|
||||
</if>
|
||||
<if test="category != null and category != ''">
|
||||
and rd.category_ = #{category}
|
||||
</if>
|
||||
<if test="comId != null">
|
||||
and rpd.DEPT_ID_ = #{comId}
|
||||
</if>
|
||||
<if test="proId != null">
|
||||
and rpd.PROJ_ID_ = #{proId}
|
||||
</if>
|
||||
<if test="proName != null and proName != ''">
|
||||
and pi.project_name like concat('%', #{proName}, '%')
|
||||
</if>
|
||||
</where>
|
||||
order by rd.deploy_time_ desc
|
||||
</select>
|
||||
|
||||
<select id="selectProcdefDeptByParam" resultType="Map">
|
||||
select * from where PROJ_ID_ = #{proId} and TYPE_ = #{type}
|
||||
</select>
|
||||
|
||||
<delete id="deleteProcdefDeptByParam">
|
||||
delete from act_re_procdef_dept where PROCDEF_ID_ = #{defId} and PROJ_ID_ = #{proId} and TYPE_ = #{type}
|
||||
</delete>
|
||||
|
||||
<insert id="saveProcdefDeptByParam" parameterType="com.yanzhu.flowable.domain.my.FlowDeptVo">
|
||||
insert into act_re_procdef_dept
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="procdefId != null">PROCDEF_ID_,</if>
|
||||
<if test="prtype != null">TYPE_,</if>
|
||||
<if test="deptId != null">DEPT_ID_,</if>
|
||||
<if test="projId != null">PROJ_ID_,</if>
|
||||
<if test="sort != null">SORT_,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="procdefId != null">#{procdefId},</if>
|
||||
<if test="prtype != null">#{prtype},</if>
|
||||
<if test="deptId != null">#{deptId},</if>
|
||||
<if test="projId != null">#{projId},</if>
|
||||
<if test="sort != null">#{sort},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
</mapper>
|
|
@ -41,7 +41,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<select id="selectProProjectInfoSubdeptsGroupList" parameterType="ProProjectInfoSubdeptsGroup" resultMap="ProProjectInfoSubdeptsGroupResult">
|
||||
<include refid="selectProProjectInfoSubdeptsGroupVo"/>
|
||||
<where>
|
||||
psg.is_del = 0
|
||||
psg.is_del != 2
|
||||
<if test="comId != null "> and psg.com_id = #{comId}</if>
|
||||
<if test="projectId != null "> and psg.project_id = #{projectId}</if>
|
||||
<if test="activeComId != null "> and psg.com_id = #{activeComId}</if>
|
||||
|
@ -51,11 +51,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="subDeptType != null and subDeptType != ''"> and psg.sub_dept_type = #{subDeptType}</if>
|
||||
<if test="subDeptName != null and subDeptName != ''"> and psg.sub_dept_name like concat('%', #{subDeptName}, '%')</if>
|
||||
<if test="subDeptCode != null and subDeptCode != ''"> and psg.sub_dept_code = #{subDeptCode}</if>
|
||||
<if test="groupLeaderPhone != null and groupLeaderPhone != ''"> and psg.group_leader_phone = #{groupLeaderPhone}</if>
|
||||
<if test="groupName != null and groupName != ''"> and psg.group_name like concat('%', #{groupName}, '%')</if>
|
||||
<if test="craftType != null and craftType != ''"> and psg.craft_type = #{craftType}</if>
|
||||
<if test="craftPost != null and craftPost != ''"> and psg.craft_post = #{craftPost}</if>
|
||||
</where>
|
||||
order by id desc
|
||||
order by psg.id desc
|
||||
</select>
|
||||
|
||||
<select id="selectProProjectInfoSubdeptsGroupById" parameterType="Long" resultMap="ProProjectInfoSubdeptsGroupResult">
|
||||
|
|
|
@ -6,6 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
|
||||
<resultMap type="ProProjectInfoSubdeptsUsers" id="ProProjectInfoSubdeptsUsersResult">
|
||||
<result property="id" column="id" />
|
||||
<result property="parId" column="par_id" />
|
||||
<result property="comId" column="com_id" />
|
||||
<result property="comName" column="comName"/>
|
||||
<result property="projectId" column="project_id" />
|
||||
|
@ -17,6 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="userId" column="user_id" />
|
||||
<result property="subDeptGroup" column="sub_dept_group" />
|
||||
<result property="subDeptGroupName" column="sub_dept_group_name" />
|
||||
<result property="userPost" column="user_post" />
|
||||
<result property="craftType" column="craft_type" />
|
||||
<result property="craftPost" column="craft_post" />
|
||||
<result property="eduStatus" column="edu_status" />
|
||||
|
@ -25,6 +27,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="eduDate" column="edu_date" />
|
||||
<result property="approveStatus" column="approve_status" />
|
||||
<result property="useStatus" column="use_status" />
|
||||
<result property="qrCode" column="qr_code" />
|
||||
<result property="subStep" column="sub_step" />
|
||||
<result property="illnessStatus" column="illness_status" />
|
||||
<result property="supIllnessStatus" column="sup_illness_status" />
|
||||
|
@ -64,9 +67,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="loginDate" column="login_date" />
|
||||
</resultMap>
|
||||
<sql id="selectProProjectInfoSubdeptsUsersVo">
|
||||
SELECT pi.project_name, psu.id, psu.com_id, psu.project_id, psu.sub_dept_id, psu.sub_dept_type, psu.sub_dept_name, psu.sub_dept_power_path, psu.user_id, psu.sub_dept_group,
|
||||
psu.sub_dept_group_name, psu.craft_type, psu.craft_post, psu.edu_status, psu.edu_file_path, psu.edu_sign_path, psu.edu_date, psu.approve_status,
|
||||
psu.use_status, psu.sub_step, psu.illness_status, psu.sup_illness_status, psu.is_del, psu.create_by, psu.create_time, psu.update_by, psu.update_time,
|
||||
SELECT psu.id, psu.par_id, psu.com_id, psu.project_id, pi.project_name, psu.sub_dept_id, psu.sub_dept_type, psu.sub_dept_name, psu.sub_dept_power_path, psu.user_id, psu.sub_dept_group,
|
||||
psu.sub_dept_group_name, psu.user_post, psu.craft_type, psu.craft_post, psu.edu_status, psu.edu_file_path, psu.edu_sign_path, psu.edu_date, psu.approve_status,
|
||||
psu.use_status, psu.qr_code, psu.sub_step, psu.illness_status, psu.sup_illness_status, psu.is_del, psu.create_by, psu.create_time, psu.update_by, psu.update_time,
|
||||
psu.remark, psu.degree_grade, su.`user_name`,su.`nick_name`,su.`user_type`,su.`card_type`,su.`card_code`,su.admitGuid,su.admitGuid usAdmitGuid,
|
||||
dic1.dict_label craft_type_name,dic2.dict_label craft_post_name,psu.enter_state,sd.dept_name comName,
|
||||
su.`user_picture`, su.`card_img_inv`,su.`card_img_pos`,su.`user_infos`,su.`email`,su.`phonenumber`,su.`sex`,su.`avatar`,su.`login_ip`,su.`login_date`
|
||||
|
@ -82,6 +85,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<include refid="selectProProjectInfoSubdeptsUsersVo"/>
|
||||
<where>
|
||||
<if test="comId != null "> and psu.com_id = #{comId}</if>
|
||||
<if test="parId != null "> and psu.par_id = #{parId}</if>
|
||||
<if test="projectId != null "> and psu.project_id = #{projectId}</if>
|
||||
<if test="subDeptId != null "> and psu.sub_dept_id = #{subDeptId}</if>
|
||||
<if test="subDeptType != null and subDeptType != ''"> and psu.sub_dept_type = #{subDeptType}</if>
|
||||
|
@ -89,6 +93,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="userId != null "> and psu.user_id = #{userId}</if>
|
||||
<if test="subDeptGroup != null "> and psu.sub_dept_group = #{subDeptGroup}</if>
|
||||
<if test="subDeptGroupName != null and subDeptGroupName != ''"> and psu.sub_dept_group_name like concat('%', #{subDeptGroupName}, '%')</if>
|
||||
<if test="userPost != null and userPost != ''"> and psu.user_post = #{userPost}</if>
|
||||
<if test="craftType != null and craftType != ''"> and psu.craft_type = #{craftType}</if>
|
||||
<if test="craftPost != null and craftPost != ''"> and psu.craft_post = #{craftPost}</if>
|
||||
<if test="eduStatus != null and eduStatus != ''"> and psu.edu_status = #{eduStatus}</if>
|
||||
|
@ -122,6 +127,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<insert id="insertProProjectInfoSubdeptsUsers" parameterType="ProProjectInfoSubdeptsUsers" useGeneratedKeys="true" keyProperty="id">
|
||||
insert into pro_project_info_subdepts_users
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="parId != null">par_id,</if>
|
||||
<if test="comId != null">com_id,</if>
|
||||
<if test="projectId != null">project_id,</if>
|
||||
<if test="subDeptId != null">sub_dept_id,</if>
|
||||
|
@ -131,6 +137,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="userId != null">user_id,</if>
|
||||
<if test="subDeptGroup != null">sub_dept_group,</if>
|
||||
<if test="subDeptGroupName != null">sub_dept_group_name,</if>
|
||||
<if test="userPost != null">user_post,</if>
|
||||
<if test="craftType != null">craft_type,</if>
|
||||
<if test="craftPost != null">craft_post,</if>
|
||||
<if test="eduStatus != null">edu_status,</if>
|
||||
|
@ -139,6 +146,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="eduDate != null">edu_date,</if>
|
||||
<if test="approveStatus != null">approve_status,</if>
|
||||
<if test="useStatus != null">use_status,</if>
|
||||
<if test="qrCode != null">qr_code,</if>
|
||||
<if test="subStep != null">sub_step,</if>
|
||||
<if test="illnessStatus != null">illness_status,</if>
|
||||
<if test="supIllnessStatus != null">sup_illness_status,</if>
|
||||
|
@ -152,6 +160,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="degreeGrade != null">degree_grade,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="parId != null">#{parId},</if>
|
||||
<if test="comId != null">#{comId},</if>
|
||||
<if test="projectId != null">#{projectId},</if>
|
||||
<if test="subDeptId != null">#{subDeptId},</if>
|
||||
|
@ -161,6 +170,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="userId != null">#{userId},</if>
|
||||
<if test="subDeptGroup != null">#{subDeptGroup},</if>
|
||||
<if test="subDeptGroupName != null">#{subDeptGroupName},</if>
|
||||
<if test="userPost != null">#{userPost},</if>
|
||||
<if test="craftType != null">#{craftType},</if>
|
||||
<if test="craftPost != null">#{craftPost},</if>
|
||||
<if test="eduStatus != null">#{eduStatus},</if>
|
||||
|
@ -169,6 +179,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="eduDate != null">#{eduDate},</if>
|
||||
<if test="approveStatus != null">#{approveStatus},</if>
|
||||
<if test="useStatus != null">#{useStatus},</if>
|
||||
<if test="qrCode != null">#{qrCode},</if>
|
||||
<if test="subStep != null">#{subStep},</if>
|
||||
<if test="illnessStatus != null">#{illnessStatus},</if>
|
||||
<if test="supIllnessStatus != null">#{supIllnessStatus},</if>
|
||||
|
@ -186,6 +197,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<update id="updateProProjectInfoSubdeptsUsers" parameterType="ProProjectInfoSubdeptsUsers">
|
||||
update pro_project_info_subdepts_users
|
||||
<trim prefix="SET" suffixOverrides=",">
|
||||
<if test="parId != null">par_id = #{parId},</if>
|
||||
<if test="comId != null">com_id = #{comId},</if>
|
||||
<if test="projectId != null">project_id = #{projectId},</if>
|
||||
<if test="subDeptId != null">sub_dept_id = #{subDeptId},</if>
|
||||
|
@ -195,6 +207,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="userId != null">user_id = #{userId},</if>
|
||||
<if test="subDeptGroup != null">sub_dept_group = #{subDeptGroup},</if>
|
||||
<if test="subDeptGroupName != null">sub_dept_group_name = #{subDeptGroupName},</if>
|
||||
<if test="userPost != null">user_post = #{userPost},</if>
|
||||
<if test="craftType != null">craft_type = #{craftType},</if>
|
||||
<if test="craftPost != null">craft_post = #{craftPost},</if>
|
||||
<if test="eduStatus != null">edu_status = #{eduStatus},</if>
|
||||
|
@ -203,6 +216,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="eduDate != null">edu_date = #{eduDate},</if>
|
||||
<if test="approveStatus != null">approve_status = #{approveStatus},</if>
|
||||
<if test="useStatus != null">use_status = #{useStatus},</if>
|
||||
<if test="qrCode != null">qr_code = #{qrCode},</if>
|
||||
<if test="subStep != null">sub_step = #{subStep},</if>
|
||||
<if test="illnessStatus != null">illness_status = #{illnessStatus},</if>
|
||||
<if test="supIllnessStatus != null">sup_illness_status = #{supIllnessStatus},</if>
|
||||
|
@ -291,7 +305,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</select>
|
||||
|
||||
<select id="findActReProcdefDept" resultType="Map">
|
||||
select * from act_re_procdef_dept where PROJ_ID_ = #{proId} and TYPE_ = #{defType} order by SORT_
|
||||
select * from act_re_procdef_dept where PROJ_ID_ = #{proId} and TYPE_ = #{defType} order by SORT_ desc
|
||||
</select>
|
||||
|
||||
</mapper>
|
|
@ -57,6 +57,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="deptId != null and deptId != 0">
|
||||
AND rd.dept_id = #{deptId}
|
||||
</if>
|
||||
<if test="projectId != null and projectId != 0">
|
||||
AND (d.dept_id = #{projectId} or find_in_set(#{projectId},d.ancestors))
|
||||
</if>
|
||||
<if test="roleName != null and roleName != ''">
|
||||
AND r.role_name like concat('%', #{roleName}, '%')
|
||||
</if>
|
||||
|
|
|
@ -73,6 +73,28 @@ public class SysFileController
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件上传请求
|
||||
*/
|
||||
@PostMapping("/NoSecurity/signUpload")
|
||||
public R<SysFile> noSecuritySignUpload(MultipartFile file)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 上传并返回访问地址
|
||||
String url = sysFileService.uploadSignetFile(file);
|
||||
SysFile sysFile = new SysFile();
|
||||
sysFile.setName(FileUtils.getName(url));
|
||||
sysFile.setUrl(url);
|
||||
return R.ok(sysFile);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.error("上传文件失败", e);
|
||||
return R.fail(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件上传请求
|
||||
*/
|
||||
|
@ -120,4 +142,30 @@ public class SysFileController
|
|||
log.error("下载文件失败", e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件通用下载...
|
||||
* @param fileName
|
||||
* @param response
|
||||
*/
|
||||
@GetMapping("/NoSecurity/download")
|
||||
public void noSecurityDownloadFile(String fileName, HttpServletResponse response) {
|
||||
try
|
||||
{
|
||||
if (!FileUtils.checkAllowDownload(fileName))
|
||||
{
|
||||
throw new Exception(StringUtils.format("文件名称({})非法,不允许下载。 ", fileName));
|
||||
}
|
||||
String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1);
|
||||
String filePath = sysFileService.findFilePath(fileName);
|
||||
|
||||
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
||||
FileUtils.setAttachmentResponseHeader(response, realFileName);
|
||||
FileUtils.writeBytes(filePath, response.getOutputStream());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
log.error("下载文件失败", e);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,12 +1,12 @@
|
|||
package com.yanzhu.file.service;
|
||||
|
||||
import com.github.tobato.fastdfs.domain.fdfs.StorePath;
|
||||
import com.github.tobato.fastdfs.service.FastFileStorageClient;
|
||||
import com.yanzhu.common.core.utils.file.FileTypeUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import com.github.tobato.fastdfs.domain.fdfs.StorePath;
|
||||
import com.github.tobato.fastdfs.service.FastFileStorageClient;
|
||||
import com.yanzhu.common.core.utils.file.FileTypeUtils;
|
||||
|
||||
/**
|
||||
* FastDFS 文件存储
|
||||
|
@ -40,6 +40,20 @@ public class FastDfsSysFileServiceImpl implements ISysFileService
|
|||
return domain + "/" + storePath.getFullPath();
|
||||
}
|
||||
|
||||
/**
|
||||
* 签名文件上传接口
|
||||
*
|
||||
* @param file 上传的文件
|
||||
* @return 访问地址
|
||||
* @throws Exception
|
||||
*/
|
||||
public String uploadSignetFile(MultipartFile file) throws Exception
|
||||
{
|
||||
StorePath storePath = storageClient.uploadFile(file.getInputStream(), file.getSize(),
|
||||
FileTypeUtils.getExtension(file), null);
|
||||
return domain + "/" + storePath.getFullPath();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件地址...
|
||||
*
|
||||
|
|
|
@ -18,6 +18,15 @@ public interface ISysFileService
|
|||
*/
|
||||
public String uploadFile(MultipartFile file) throws Exception;
|
||||
|
||||
/**
|
||||
* 签名文件上传接口
|
||||
*
|
||||
* @param file 上传的文件
|
||||
* @return 访问地址
|
||||
* @throws Exception
|
||||
*/
|
||||
public String uploadSignetFile(MultipartFile file) throws Exception;
|
||||
|
||||
/**
|
||||
* 获取文件地址...
|
||||
*
|
||||
|
|
|
@ -47,6 +47,19 @@ public class LocalSysFileServiceImpl implements ISysFileService
|
|||
return localFilePrefix + name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 签名文件上传接口
|
||||
*
|
||||
* @param file 上传的文件
|
||||
* @return 访问地址
|
||||
* @throws Exception
|
||||
*/
|
||||
public String uploadSignetFile(MultipartFile file) throws Exception
|
||||
{
|
||||
String name = FileUploadUtils.signetUpload(localFilePath, file);
|
||||
return localFilePrefix + name;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件地址...
|
||||
*
|
||||
|
|
|
@ -2,11 +2,11 @@ package com.yanzhu.file.service;
|
|||
|
||||
import com.yanzhu.file.config.MinioConfig;
|
||||
import com.yanzhu.file.utils.FileUploadUtils;
|
||||
import io.minio.MinioClient;
|
||||
import io.minio.PutObjectArgs;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import io.minio.MinioClient;
|
||||
import io.minio.PutObjectArgs;
|
||||
|
||||
/**
|
||||
* Minio 文件存储
|
||||
|
@ -43,6 +43,26 @@ public class MinioSysFileServiceImpl implements ISysFileService
|
|||
return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 签名文件上传接口
|
||||
*
|
||||
* @param file 上传的文件
|
||||
* @return 访问地址
|
||||
* @throws Exception
|
||||
*/
|
||||
public String uploadSignetFile(MultipartFile file) throws Exception
|
||||
{
|
||||
String fileName = FileUploadUtils.extractFilename(file);
|
||||
PutObjectArgs args = PutObjectArgs.builder()
|
||||
.bucket(minioConfig.getBucketName())
|
||||
.object(fileName)
|
||||
.stream(file.getInputStream(), file.getSize(), -1)
|
||||
.contentType(file.getContentType())
|
||||
.build();
|
||||
client.putObject(args);
|
||||
return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取文件地址...
|
||||
*
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.yanzhu.file.utils;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Paths;
|
||||
|
@ -9,7 +11,6 @@ import java.util.Objects;
|
|||
import cn.hutool.core.img.ImgUtil;
|
||||
import cn.hutool.core.io.FileUtil;
|
||||
import com.yanzhu.common.core.utils.file.FileUtils;
|
||||
import com.yanzhu.common.core.utils.file.ImageUtils;
|
||||
import org.apache.commons.io.FilenameUtils;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import com.yanzhu.common.core.exception.file.FileNameLengthLimitExceededException;
|
||||
|
@ -21,6 +22,8 @@ import com.yanzhu.common.core.utils.file.FileTypeUtils;
|
|||
import com.yanzhu.common.core.utils.file.MimeTypeUtils;
|
||||
import com.yanzhu.common.core.utils.uuid.Seq;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
|
||||
/**
|
||||
* 文件上传工具类
|
||||
*
|
||||
|
@ -58,6 +61,26 @@ public class FileUploadUtils
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据文件路径上传
|
||||
*
|
||||
* @param baseDir 相对应用的基目录
|
||||
* @param file 上传的文件
|
||||
* @return 文件名称
|
||||
* @throws IOException
|
||||
*/
|
||||
public static final String signetUpload(String baseDir, MultipartFile file) throws IOException
|
||||
{
|
||||
try
|
||||
{
|
||||
return signetUpload(baseDir, file, MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
throw new IOException(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件上传
|
||||
*
|
||||
|
@ -91,6 +114,39 @@ public class FileUploadUtils
|
|||
return getPathFileName(fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 文件上传
|
||||
*
|
||||
* @param baseDir 相对应用的基目录
|
||||
* @param file 上传的文件
|
||||
* @param allowedExtension 上传文件类型
|
||||
* @return 返回上传成功的文件名
|
||||
* @throws FileSizeLimitExceededException 如果超出最大大小
|
||||
* @throws FileNameLengthLimitExceededException 文件名太长
|
||||
* @throws IOException 比如读写文件出错时
|
||||
* @throws InvalidExtensionException 文件校验异常
|
||||
*/
|
||||
public static final String signetUpload(String baseDir, MultipartFile file, String[] allowedExtension)
|
||||
throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException,
|
||||
InvalidExtensionException
|
||||
{
|
||||
int fileNamelength = Objects.requireNonNull(file.getOriginalFilename()).length();
|
||||
if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
|
||||
{
|
||||
throw new FileNameLengthLimitExceededException(FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
|
||||
}
|
||||
|
||||
assertAllowed(file, allowedExtension);
|
||||
|
||||
String fileName = extractFilename(file);
|
||||
|
||||
String absPath = getAbsoluteFile(baseDir, fileName).getAbsolutePath();
|
||||
file.transferTo(Paths.get(absPath));
|
||||
// 压缩图片
|
||||
makeSignImage(absPath);
|
||||
return getPathFileName(fileName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 图谱压缩 xx.min.jpg
|
||||
* @param absPath
|
||||
|
@ -115,6 +171,89 @@ public class FileUploadUtils
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 签名图片裁剪白边
|
||||
* @param absPath
|
||||
*/
|
||||
private static void makeSignImage(String absPath) {
|
||||
try {
|
||||
String ext = FileUtils.getFileExt(absPath).toLowerCase();
|
||||
String exts = Arrays.toString(new String[]{"jpg", "jpeg", "png", "bmp"});
|
||||
if (exts.contains(ext)) {
|
||||
if (new File(absPath).exists()) {
|
||||
BufferedImage bufferedImage = ImageIO.read(org.apache.commons.io.FileUtils.getFile(absPath));
|
||||
// 这里裁剪图片可能报错,报错用原图
|
||||
int[] array = bufferedImageToIntArray(bufferedImage,bufferedImage.getWidth(),bufferedImage.getHeight());
|
||||
// blank是作为四周边距留白
|
||||
int blank = 30;
|
||||
boolean cutResult = false;
|
||||
try {
|
||||
// 图片裁剪
|
||||
ImgUtil.cut(FileUtil.file(absPath),
|
||||
FileUtil.file(absPath + ".v1.png"), new Rectangle(array[0]-blank,array[1]-blank,array[2]+blank*2, array[3]+blank*2));
|
||||
ImgUtil.rotate(FileUtil.file(absPath+".v1.png"),270,FileUtil.file(absPath + ".sign.png"));
|
||||
cutResult = true;
|
||||
}catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
}
|
||||
absPath = cutResult?(absPath+".sign.png"):absPath;
|
||||
int w = ImgUtil.read(FileUtil.file(absPath)).getWidth()/20;
|
||||
ImgUtil.scale(FileUtil.file(absPath),
|
||||
FileUtil.file(absPath + ".min.png"), w);
|
||||
}
|
||||
}
|
||||
}catch (Exception ex){
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片裁剪
|
||||
* @param image
|
||||
* @return
|
||||
*/
|
||||
public static int[] bufferedImageToIntArray(BufferedImage image, int width, int height) {
|
||||
try {
|
||||
int rgb = 0;
|
||||
int x1 = width;
|
||||
int y1 = height;
|
||||
int x2 = 0;
|
||||
int y2 = 0;
|
||||
int temp1 = 0;
|
||||
int temp2 = 0;
|
||||
// 方式一:通过getRGB()方式获得像素数组
|
||||
for (int i = 0; i < width; i++) {
|
||||
for (int j = 0; j < height; j++) {
|
||||
rgb = image.getRGB(i, j);
|
||||
if (rgb == -16777216) {
|
||||
temp1 = i;
|
||||
temp2 = j;
|
||||
// 计算最左侧
|
||||
if (x1 >= temp1) {
|
||||
x1 = temp1;
|
||||
}
|
||||
// 计算最右侧
|
||||
if (x2 <= temp1) {
|
||||
x2 = temp1;
|
||||
}
|
||||
// 计算最下方
|
||||
if (y2 <= temp2) {
|
||||
y2 = temp2;
|
||||
}
|
||||
// 计算最上方
|
||||
if (y1 >= temp2) {
|
||||
y1 = temp2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return new int[] {x1, y1, x2 - x1, y2 - y1};
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 编码文件名
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.yanzhu.flowable.controller;
|
||||
|
||||
import com.yanzhu.common.core.text.Convert;
|
||||
import com.yanzhu.common.core.utils.StringUtils;
|
||||
import com.yanzhu.common.core.web.controller.BaseController;
|
||||
import com.yanzhu.common.core.web.domain.AjaxResult;
|
||||
|
@ -61,9 +62,11 @@ public class FlowDefinitionController extends BaseController {
|
|||
|
||||
@GetMapping(value = "/list")
|
||||
@ApiOperation(value = "流程定义列表", response = FlowProcDefDto.class)
|
||||
public TableDataInfo list(@ApiParam(value = "流程名称", required = false) @RequestParam(required = false) String name) {
|
||||
public TableDataInfo list(@ApiParam(value = "流程名称", required = false) @RequestParam(required = false) String name,
|
||||
@ApiParam(value = "流程分类", required = false) @RequestParam(required = false) String category,
|
||||
@ApiParam(value = "项目单位", required = false) @RequestParam(required = false) String proName) {
|
||||
startPage();
|
||||
List<FlowProcDefDto> list = flowDefinitionService.list(name);
|
||||
List<FlowProcDefDto> list = flowDefinitionService.list(name,category,proName);
|
||||
return getDataTable(list);
|
||||
}
|
||||
|
||||
|
@ -139,11 +142,10 @@ public class FlowDefinitionController extends BaseController {
|
|||
InputStream in = null;
|
||||
try {
|
||||
String xml = vo.getXml();
|
||||
//将xml数据进行base64解码
|
||||
xml = StringUtils.utf8Str(xml);
|
||||
//in = new ByteArrayInputStream(vo.getXml().getBytes(StandardCharsets.UTF_8));
|
||||
in = new ByteArrayInputStream(xml.getBytes(StandardCharsets.UTF_8));
|
||||
flowDefinitionService.importFile(vo.getName(), vo.getCategory(), in);
|
||||
// 将xml数据进行base64解码
|
||||
byte[] xmlBytes = Base64.getDecoder().decode(xml);
|
||||
in = new ByteArrayInputStream(xmlBytes);
|
||||
flowDefinitionService.importFile(Convert.toLong(vo.getProId()), vo.getName(), vo.getCategory(), in);
|
||||
} catch (Exception e) {
|
||||
log.error("导入失败:", e);
|
||||
return AjaxResult.error(e.getMessage());
|
||||
|
|
|
@ -18,10 +18,12 @@ public interface IFlowDefinitionService {
|
|||
|
||||
/**
|
||||
* 流程定义列表
|
||||
*
|
||||
* @param name 流程名称
|
||||
* @param category 流程分类
|
||||
* @param proName 项目单位
|
||||
* @return 流程定义分页列表数据
|
||||
*/
|
||||
List<FlowProcDefDto> list(String name);
|
||||
List<FlowProcDefDto> list(String name, String category, String proName);
|
||||
|
||||
/**
|
||||
* 导入流程文件
|
||||
|
@ -33,6 +35,17 @@ public interface IFlowDefinitionService {
|
|||
*/
|
||||
void importFile(String name, String category, InputStream in);
|
||||
|
||||
/**
|
||||
* 导入流程文件
|
||||
* 当每个key的流程第一次部署时,指定版本为1。对其后所有使用相同key的流程定义,
|
||||
* 部署时版本会在该key当前已部署的最高版本号基础上加1。key参数用于区分流程定义
|
||||
* @param proId 项目主键
|
||||
* @param name 流程名称
|
||||
* @param category 流程类型
|
||||
* @param in 流程文件
|
||||
*/
|
||||
void importFile(Long proId, String name, String category, InputStream in);
|
||||
|
||||
/**
|
||||
* 读取xml
|
||||
* @param deployId
|
||||
|
|
|
@ -1,16 +1,20 @@
|
|||
package com.yanzhu.flowable.service.impl;
|
||||
|
||||
import com.yanzhu.common.core.constant.CacheConstants;
|
||||
import com.yanzhu.common.core.text.Convert;
|
||||
import com.yanzhu.common.core.web.domain.AjaxResult;
|
||||
import com.yanzhu.common.redis.service.RedisService;
|
||||
import com.yanzhu.common.security.utils.SecurityUtils;
|
||||
import com.yanzhu.flowable.common.constant.ProcessConstants;
|
||||
import com.yanzhu.flowable.common.enums.FlowComment;
|
||||
import com.yanzhu.flowable.domain.SysForm;
|
||||
import com.yanzhu.flowable.domain.dto.FlowProcDefDto;
|
||||
import com.yanzhu.flowable.domain.my.FlowDeptVo;
|
||||
import com.yanzhu.flowable.factory.FlowServiceFactory;
|
||||
import com.yanzhu.flowable.mapper.FlowDeployMapper;
|
||||
import com.yanzhu.flowable.service.IFlowDefinitionService;
|
||||
import com.yanzhu.flowable.service.ISysDeployFormService;
|
||||
import com.yanzhu.manage.domain.ProProjectInfo;
|
||||
import com.yanzhu.system.api.domain.SysUser;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
@ -21,6 +25,7 @@ import org.flowable.engine.repository.ProcessDefinitionQuery;
|
|||
import org.flowable.engine.runtime.ProcessInstance;
|
||||
import org.flowable.image.impl.DefaultProcessDiagramGenerator;
|
||||
import org.flowable.task.api.Task;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
@ -42,12 +47,15 @@ import java.util.Objects;
|
|||
@Slf4j
|
||||
public class FlowDefinitionServiceImpl extends FlowServiceFactory implements IFlowDefinitionService {
|
||||
|
||||
@Resource
|
||||
private ISysDeployFormService sysDeployFormService;
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
|
||||
@Resource
|
||||
private FlowDeployMapper flowDeployMapper;
|
||||
|
||||
@Resource
|
||||
private ISysDeployFormService sysDeployFormService;
|
||||
|
||||
private static final String BPMN_FILE_SUFFIX = ".bpmn";
|
||||
|
||||
@Override
|
||||
|
@ -58,24 +66,24 @@ public class FlowDefinitionServiceImpl extends FlowServiceFactory implements IFl
|
|||
return count > 0 ? true : false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 流程定义列表
|
||||
*
|
||||
* @param name 流程名称
|
||||
* @param category 流程分类
|
||||
* @param proName 项目单位
|
||||
* @return 流程定义分页列表数据
|
||||
*/
|
||||
@Override
|
||||
public List<FlowProcDefDto> list(String name) {
|
||||
|
||||
final List<FlowProcDefDto> dataList = flowDeployMapper.selectDeployList(name);
|
||||
public List<FlowProcDefDto> list(String name, String category, String proName) {
|
||||
final List<FlowProcDefDto> dataList = flowDeployMapper.selectDeployList(name,category,SecurityUtils.getLoginUser().getProjectDeptId(),SecurityUtils.getLoginUser().getProjectId(),proName);
|
||||
// 加载挂表单
|
||||
for (FlowProcDefDto procDef : dataList) {
|
||||
/**for (FlowProcDefDto procDef : dataList) {
|
||||
SysForm sysForm = sysDeployFormService.selectSysDeployFormByDeployId(procDef.getDeploymentId());
|
||||
if (Objects.nonNull(sysForm)) {
|
||||
procDef.setFormName(sysForm.getFormName());
|
||||
procDef.setFormId(sysForm.getFormId());
|
||||
}
|
||||
}
|
||||
}*/
|
||||
return dataList;
|
||||
}
|
||||
|
||||
|
@ -119,6 +127,33 @@ public class FlowDefinitionServiceImpl extends FlowServiceFactory implements IFl
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入流程文件
|
||||
* 当每个key的流程第一次部署时,指定版本为1。对其后所有使用相同key的流程定义,
|
||||
* 部署时版本会在该key当前已部署的最高版本号基础上加1。key参数用于区分流程定义
|
||||
* @param proId 项目主键
|
||||
* @param name 流程名称
|
||||
* @param category 流程类型
|
||||
* @param in 流程文件
|
||||
*/
|
||||
@Override
|
||||
public void importFile(Long proId, String name, String category, InputStream in){
|
||||
|
||||
// 获取项目缓存信息
|
||||
ProProjectInfo info = redisService.getCacheObject(CacheConstants.PRO_PROJECT+proId);
|
||||
Deployment deploy = repositoryService.createDeployment().addInputStream(name + BPMN_FILE_SUFFIX, in).name(name).category(category).deploy();
|
||||
ProcessDefinition definition = repositoryService.createProcessDefinitionQuery().deploymentId(deploy.getId()).singleResult();
|
||||
repositoryService.setProcessDefinitionCategory(definition.getId(), category);
|
||||
// 修改项目单位和流程关系...
|
||||
FlowDeptVo flowDeptVo = new FlowDeptVo();
|
||||
flowDeptVo.setProcdefId(definition.getId());
|
||||
flowDeptVo.setPrtype(category);
|
||||
flowDeptVo.setDeptId(info.getComId());
|
||||
flowDeptVo.setProjId(proId);
|
||||
flowDeptVo.setSort(Convert.toStr(definition.getVersion(),"0"));
|
||||
flowDeployMapper.saveProcdefDeptByParam(flowDeptVo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取xml
|
||||
*
|
||||
|
|
|
@ -97,6 +97,17 @@
|
|||
<artifactId>poi</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- excel工具 -->
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.poi</groupId>
|
||||
<artifactId>poi-ooxml-schemas</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.lowagie</groupId>
|
||||
<artifactId>itext</artifactId>
|
||||
|
@ -110,9 +121,6 @@
|
|||
<dependency>
|
||||
<groupId>com.lowagie</groupId>
|
||||
<artifactId>iTextAsian</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${pom.basedir}\libs\iTextAsian-1.0.0.jar</systemPath>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
@ -130,9 +138,6 @@
|
|||
<dependency>
|
||||
<groupId>com.aspose</groupId>
|
||||
<artifactId>aspose-words</artifactId>
|
||||
<version>15.8.0</version>
|
||||
<scope>system</scope>
|
||||
<systemPath>${pom.basedir}\libs\aspose-words-15.8.0-jdk16.jar</systemPath>
|
||||
</dependency>
|
||||
<!--word文件转化为PDF文件 结束-->
|
||||
|
||||
|
@ -140,6 +145,7 @@
|
|||
<dependency>
|
||||
<groupId>com.itextpdf</groupId>
|
||||
<artifactId>itextpdf</artifactId>
|
||||
<version>${itextpdf.version}</version>
|
||||
</dependency>
|
||||
<!--pdf签名使用工具类-->
|
||||
|
||||
|
|
|
@ -2,8 +2,10 @@ package com.yanzhu.manage.controller.wechat;
|
|||
|
||||
import com.yanzhu.common.core.web.controller.BaseController;
|
||||
import com.yanzhu.common.core.web.domain.AjaxResult;
|
||||
import com.yanzhu.common.security.utils.DictUtils;
|
||||
import com.yanzhu.manage.domain.BusExamUser;
|
||||
import com.yanzhu.manage.domain.ProProjectInfoSubdepts;
|
||||
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
|
||||
import com.yanzhu.manage.domain.SignetFileVo;
|
||||
import com.yanzhu.manage.service.*;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -39,6 +41,15 @@ public class WxController extends BaseController {
|
|||
@Autowired
|
||||
private IProProjectInfoSubdeptsUsersService proProjectInfoSubdeptsUsersService;
|
||||
|
||||
/**
|
||||
* 查询数据字典缓存
|
||||
*/
|
||||
@GetMapping("/findDictCache/{type}")
|
||||
public AjaxResult findDictCache(@PathVariable("type") String type)
|
||||
{
|
||||
return success(DictUtils.getDictCache(type));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取我的项目列表
|
||||
*/
|
||||
|
@ -54,13 +65,24 @@ public class WxController extends BaseController {
|
|||
@PostMapping("/registerSubDepts")
|
||||
public AjaxResult registerSubDepts(@RequestBody ProProjectInfoSubdepts proProjectInfoSubdepts)
|
||||
{
|
||||
int res;
|
||||
if(Objects.isNull(proProjectInfoSubdepts.getId())){
|
||||
res = proProjectInfoSubdeptsService.insertProProjectInfoSubdepts(proProjectInfoSubdepts);
|
||||
return success(proProjectInfoSubdeptsService.insertProProjectInfoSubdeptsWX(proProjectInfoSubdepts));
|
||||
}else{
|
||||
res = proProjectInfoSubdeptsService.updateProProjectInfoSubdepts(proProjectInfoSubdepts);
|
||||
return success(proProjectInfoSubdeptsService.updateProProjectInfoSubdeptsWX(proProjectInfoSubdepts));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增分包单位人员
|
||||
*/
|
||||
@PostMapping("/registerSubDeptsUsers")
|
||||
public AjaxResult registerSubDeptsUsers(@RequestBody ProProjectInfoSubdeptsUsers ProProjectInfoSubdeptsUsers)
|
||||
{
|
||||
if(Objects.isNull(ProProjectInfoSubdeptsUsers.getId())){
|
||||
return success(proProjectInfoSubdeptsUsersService.insertProProjectInfoSubdeptsUsersWX(ProProjectInfoSubdeptsUsers));
|
||||
}else{
|
||||
return success(proProjectInfoSubdeptsUsersService.updateProProjectInfoSubdeptsUsersWX(ProProjectInfoSubdeptsUsers));
|
||||
}
|
||||
return toAjax(res);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -74,6 +96,16 @@ public class WxController extends BaseController {
|
|||
return success(proProjectInfoSubdeptsService.findProSubDeptsInfo(proId,phoneNumber));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询分包单位人员
|
||||
* @param id 人员主键
|
||||
*/
|
||||
@GetMapping("/findProSubDeptsUser/{id}")
|
||||
public AjaxResult findProSubDeptsUserById(@PathVariable("id")Long id)
|
||||
{
|
||||
return success(proProjectInfoSubdeptsUsersService.selectProProjectInfoSubdeptsUsersById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询分包人员信息
|
||||
* @param proId 项目主键
|
||||
|
@ -154,7 +186,6 @@ public class WxController extends BaseController {
|
|||
@PostMapping("/submitUserSignets")
|
||||
public AjaxResult submitUserSignets(@RequestBody SignetFileVo signetFileVo)
|
||||
{
|
||||
proProjectInfoSubdeptsUsersService.submitUserSignets(signetFileVo);
|
||||
return success();
|
||||
return success(proProjectInfoSubdeptsUsersService.submitUserSignets(signetFileVo));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ package com.yanzhu.manage.enums;
|
|||
public enum CraftPostEnums {
|
||||
|
||||
WTDL("1022", "委托代理人"),
|
||||
XMJL("1023", "委托代理人");
|
||||
XMJL("1023", "项目经理");
|
||||
|
||||
private final String code;
|
||||
private final String info;
|
||||
|
|
|
@ -37,6 +37,14 @@ public interface IProProjectInfoSubdeptsService
|
|||
*/
|
||||
public int insertProProjectInfoSubdepts(ProProjectInfoSubdepts proProjectInfoSubdepts);
|
||||
|
||||
/**
|
||||
* 新增分包单位 微信
|
||||
*
|
||||
* @param proProjectInfoSubdepts 分包单位
|
||||
* @return 结果
|
||||
*/
|
||||
public ProProjectInfoSubdepts insertProProjectInfoSubdeptsWX(ProProjectInfoSubdepts proProjectInfoSubdepts);
|
||||
|
||||
/**
|
||||
* 修改分包单位
|
||||
*
|
||||
|
@ -45,6 +53,14 @@ public interface IProProjectInfoSubdeptsService
|
|||
*/
|
||||
public int updateProProjectInfoSubdepts(ProProjectInfoSubdepts proProjectInfoSubdepts);
|
||||
|
||||
/**
|
||||
* 修改分包单位
|
||||
*
|
||||
* @param proProjectInfoSubdepts 分包单位
|
||||
* @return 结果
|
||||
*/
|
||||
public ProProjectInfoSubdepts updateProProjectInfoSubdeptsWX(ProProjectInfoSubdepts proProjectInfoSubdepts);
|
||||
|
||||
/**
|
||||
* 修改分包单位
|
||||
*
|
||||
|
|
|
@ -38,6 +38,14 @@ public interface IProProjectInfoSubdeptsUsersService
|
|||
*/
|
||||
public int insertProProjectInfoSubdeptsUsers(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers);
|
||||
|
||||
/**
|
||||
* 新增分包单位工人
|
||||
*
|
||||
* @param proProjectInfoSubdeptsUsers 分包单位工人
|
||||
* @return 结果
|
||||
*/
|
||||
public ProProjectInfoSubdeptsUsers insertProProjectInfoSubdeptsUsersWX(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers);
|
||||
|
||||
/**
|
||||
* 修改分包单位工人
|
||||
*
|
||||
|
@ -46,6 +54,14 @@ public interface IProProjectInfoSubdeptsUsersService
|
|||
*/
|
||||
public int updateProProjectInfoSubdeptsUsers(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers);
|
||||
|
||||
/**
|
||||
* 修改分包单位工人
|
||||
*
|
||||
* @param proProjectInfoSubdeptsUsers 分包单位工人
|
||||
* @return 结果
|
||||
*/
|
||||
public ProProjectInfoSubdeptsUsers updateProProjectInfoSubdeptsUsersWX(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers);
|
||||
|
||||
/**
|
||||
* 批量删除分包单位工人
|
||||
*
|
||||
|
@ -75,7 +91,7 @@ public interface IProProjectInfoSubdeptsUsersService
|
|||
* 提交文件签署
|
||||
* @param signetFileVo
|
||||
*/
|
||||
public void submitUserSignets(SignetFileVo signetFileVo);
|
||||
public ProProjectInfoSubdeptsUsers submitUserSignets(SignetFileVo signetFileVo);
|
||||
|
||||
/**
|
||||
* 大屏-项目详情-在岗人员统计
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package com.yanzhu.manage.service;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import com.alibaba.fastjson2.JSONObject;
|
||||
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
|
||||
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.Map;
|
||||
|
@ -11,9 +9,10 @@ import java.util.Map;
|
|||
* 宇泛服务封装
|
||||
*/
|
||||
public interface IUniService {
|
||||
|
||||
/**
|
||||
* 鉴权接口
|
||||
* @param data
|
||||
* @param projectId
|
||||
* @return
|
||||
*/
|
||||
public Map<String,String> auth(long projectId) throws NoSuchAlgorithmException;
|
||||
|
@ -53,7 +52,6 @@ public interface IUniService {
|
|||
*/
|
||||
public JSONObject admitPage(JSONObject data);
|
||||
|
||||
|
||||
/**
|
||||
* 人员接口-人像注册
|
||||
* @param data
|
||||
|
@ -61,8 +59,6 @@ public interface IUniService {
|
|||
*/
|
||||
public JSONObject faceRegister(JSONObject data);
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 人员接口-人像删除
|
||||
* @param data
|
||||
|
@ -119,7 +115,6 @@ public interface IUniService {
|
|||
*/
|
||||
public JSONObject authDeviceUpdate(JSONObject data);
|
||||
|
||||
|
||||
/**
|
||||
* 授权接口-设备销权识别主体
|
||||
* @param data
|
||||
|
@ -127,7 +122,6 @@ public interface IUniService {
|
|||
*/
|
||||
public String authDeviceRevoke(JSONObject data);
|
||||
|
||||
|
||||
/**
|
||||
* 同步宇泛的人员和头像
|
||||
* @param userId
|
||||
|
@ -151,6 +145,11 @@ public interface IUniService {
|
|||
*/
|
||||
public Long syncUniDeviceUser(Long deviceId,Long projectId);
|
||||
|
||||
/**
|
||||
* 删除入厂
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
public long syncUniDeviceDelete(Long[] ids);
|
||||
|
||||
/**
|
||||
|
|
|
@ -141,16 +141,6 @@ public class ProProjectInfoServiceImpl implements IProProjectInfoService
|
|||
proDept.setLeader(proProjectInfo.getProjectPerson());
|
||||
proDept.setPhone(proProjectInfo.getProjectPersonPhone());
|
||||
proDept.setCreateBy(SecurityUtils.getUsername());
|
||||
try {
|
||||
String accessToken = wxMaService.getAccessToken();
|
||||
String imgPath = profileConfig.getPath()+"/"+System.currentTimeMillis()+".png";
|
||||
log.info("accessToken...{}",accessToken);
|
||||
WxQrCodeUtils.generateQrCode(imgPath, "pages/index/index", "aa=108&bb=2&cc=3", accessToken);
|
||||
// TODO:生成二维码
|
||||
proProjectInfo.setProjectQrCode(imgPath);
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
int res = proProjectInfoMapper.insertDept(proDept);
|
||||
if(res>0){
|
||||
proProjectInfo.setId(proDept.getDeptId());
|
||||
|
@ -158,6 +148,19 @@ public class ProProjectInfoServiceImpl implements IProProjectInfoService
|
|||
proProjectInfo.setProjectPackage(projectPackage(proProjectInfo.getProjectName(),proDept.getDeptId()));
|
||||
proProjectInfo.setCreateTime(DateUtils.getNowDate());
|
||||
res = proProjectInfoMapper.insertProProjectInfo(proProjectInfo);
|
||||
try {
|
||||
// 生成二维码
|
||||
String accessToken = wxMaService.getAccessToken();
|
||||
String filePath = DateUtils.datePath()+"/"+System.currentTimeMillis()+".png";
|
||||
String savePath = ProfileConfig.profilePath+"/"+filePath;
|
||||
String profilePath = ProfileConfig.profile+"/"+filePath;
|
||||
log.info("accessToken...{}",accessToken);
|
||||
WxQrCodeUtils.generateQrCode(savePath, "pages/project_qr/index", "SIGID=1&QRPID="+proProjectInfo.getId(), accessToken);
|
||||
proProjectInfo.setProjectQrCode(profilePath);
|
||||
proProjectInfoMapper.updateProProjectInfo(proProjectInfo);
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
loadingProjectsCache();
|
||||
return res;
|
||||
}else{
|
||||
|
|
|
@ -16,9 +16,12 @@ import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
|
|||
import com.yanzhu.manage.enums.CraftTypeEnums;
|
||||
import com.yanzhu.manage.enums.SubDeptsEnums;
|
||||
import com.yanzhu.manage.enums.CraftPostEnums;
|
||||
import com.yanzhu.manage.enums.UserPostEnums;
|
||||
import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsMapper;
|
||||
import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsUsersMapper;
|
||||
import com.yanzhu.manage.service.IProProjectInfoSubdeptsService;
|
||||
import com.yanzhu.manage.service.IUniService;
|
||||
import com.yanzhu.manage.utils.WxQrCodeUtils;
|
||||
import com.yanzhu.system.api.RemoteUserService;
|
||||
import com.yanzhu.system.api.domain.SysUser;
|
||||
import me.chanjar.weixin.mp.api.WxMpService;
|
||||
|
@ -40,15 +43,15 @@ import java.util.Objects;
|
|||
@Service
|
||||
public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdeptsService
|
||||
{
|
||||
@Autowired
|
||||
private IUniService uniService;
|
||||
|
||||
@Autowired
|
||||
private WxMpService wxMpService;
|
||||
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
|
||||
@Autowired
|
||||
private ProfileConfig profileConfig;
|
||||
|
||||
@Autowired
|
||||
private RemoteUserService remoteUserService;
|
||||
|
||||
|
@ -115,11 +118,7 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept
|
|||
sysUser.setCardImgPos(proProjectInfoSubdepts.getLeaderCardImgPos());
|
||||
sysUser.setCardImgInv(proProjectInfoSubdepts.getLeaderCardImgInv());
|
||||
sysUser.setSex(StringUtils.judgeGender(proProjectInfoSubdepts.getSubDeptLeaderCode()));
|
||||
if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){
|
||||
sysUser.setCreateBy(SecurityUtils.getUsername());
|
||||
}else{
|
||||
sysUser.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
}
|
||||
sysUser.setCreateBy(SecurityUtils.getUsername());
|
||||
sysUser.setCreateTime(DateUtils.getNowDate());
|
||||
sysUser.setRemark(proProjectInfoSubdepts.getSubDeptName());
|
||||
try {
|
||||
|
@ -131,13 +130,8 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept
|
|||
}
|
||||
}
|
||||
}
|
||||
if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){
|
||||
proProjectInfoSubdepts.setCreateBy(SecurityUtils.getUsername());
|
||||
proProjectInfoSubdepts.setApproveStatus(ApproveStatus.passed.getCode());
|
||||
}else{
|
||||
proProjectInfoSubdepts.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
proProjectInfoSubdepts.setApproveStatus(ApproveStatus.await.getCode());
|
||||
}
|
||||
proProjectInfoSubdepts.setCreateBy(SecurityUtils.getUsername());
|
||||
proProjectInfoSubdepts.setApproveStatus(ApproveStatus.passed.getCode());
|
||||
proProjectInfoSubdepts.setCreateTime(DateUtils.getNowDate());
|
||||
int res = proProjectInfoSubdeptsMapper.insertProProjectInfoSubdepts(proProjectInfoSubdepts);
|
||||
// 将人员信息同步至单位人员表
|
||||
|
@ -151,25 +145,108 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept
|
|||
subdeptsUser.setSubDeptType(proProjectInfoSubdepts.getSubDeptType());
|
||||
subdeptsUser.setSubDeptPowerPath(proProjectInfoSubdepts.getSubDeptLeaderPowerPath());
|
||||
subdeptsUser.setUserId(proProjectInfoSubdepts.getSubDeptLeaderId());
|
||||
subdeptsUser.setUserPost(UserPostEnums.WTDL.getCode());
|
||||
subdeptsUser.setCraftType(CraftTypeEnums.GLRY.getCode());
|
||||
subdeptsUser.setCraftPost(CraftPostEnums.WTDL.getCode());
|
||||
subdeptsUser.setDegreeGrade("");
|
||||
subdeptsUser.setDegreeGrade(proProjectInfoSubdepts.getLeaderDegreeGrade());
|
||||
subdeptsUser.setEduStatus(ShiFouEnums.FOU.getCodeStr());
|
||||
subdeptsUser.setSubStep(1L);
|
||||
subdeptsUser.setCreateBy(SecurityUtils.getUsername());
|
||||
subdeptsUser.setApproveStatus(ApproveStatus.passed.getCode());
|
||||
subdeptsUser.setCreateTime(DateUtils.getNowDate());
|
||||
int r = proProjectInfoSubdeptsUsersMapper.insertProProjectInfoSubdeptsUsers(subdeptsUser);
|
||||
// 系统添加的人员默认增加入场信息
|
||||
uniService.syncUniUser(subdeptsUser.getUserId(),subdeptsUser.getProjectId());
|
||||
try {
|
||||
if(r>0){
|
||||
String accessToken = wxMpService.getAccessToken();
|
||||
String filePath = DateUtils.datePath()+"/"+System.currentTimeMillis()+".png";
|
||||
String savePath = ProfileConfig.profilePath+"/"+filePath;
|
||||
String profilePath = ProfileConfig.profile+"/"+filePath;
|
||||
log.info("accessToken...{}",accessToken);
|
||||
// 生成二维码
|
||||
WxQrCodeUtils.generateQrCode(savePath, "pages/project_qr/index", "SIGID=2&QRPID="+subdeptsUser.getProjectId()+"&PARID="+subdeptsUser.getId(), accessToken);
|
||||
subdeptsUser.setQrCode(profilePath);
|
||||
proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(subdeptsUser);
|
||||
}
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增分包单位
|
||||
*
|
||||
* @param proProjectInfoSubdepts 分包单位
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public ProProjectInfoSubdepts insertProProjectInfoSubdeptsWX(ProProjectInfoSubdepts proProjectInfoSubdepts)
|
||||
{
|
||||
ProProjectInfo info = redisService.getCacheObject(CacheConstants.PRO_PROJECT+proProjectInfoSubdepts.getProjectId());
|
||||
if(Objects.isNull(info)){
|
||||
throw new ServiceException("项目信息异常...");
|
||||
}
|
||||
proProjectInfoSubdepts.setComId(info.getComId());
|
||||
if(Objects.equals(proProjectInfoSubdepts.getSubDeptType(), SubDeptsEnums.ZYFB.getCode()) || Objects.equals(proProjectInfoSubdepts.getSubDeptType(),SubDeptsEnums.LWFB.getCode())){
|
||||
// 单位委托人信息
|
||||
if(StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderName()) && StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderCode()) && StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderPhone())){
|
||||
SysUser sysUser = new SysUser();
|
||||
sysUser.setUserName(proProjectInfoSubdepts.getSubDeptLeaderPhone());
|
||||
sysUser.setNickName(proProjectInfoSubdepts.getSubDeptLeaderName());
|
||||
sysUser.setUserType(UserTypeEnums.FBDL.getCode());
|
||||
sysUser.setPhonenumber(proProjectInfoSubdepts.getSubDeptLeaderPhone());
|
||||
sysUser.setCardType(CardTypeEnums.SFZ.getCode());
|
||||
sysUser.setCardCode(proProjectInfoSubdepts.getSubDeptLeaderCode());
|
||||
sysUser.setUserPicture(proProjectInfoSubdepts.getLeaderUserPicture());
|
||||
sysUser.setCardImgPos(proProjectInfoSubdepts.getLeaderCardImgPos());
|
||||
sysUser.setCardImgInv(proProjectInfoSubdepts.getLeaderCardImgInv());
|
||||
sysUser.setSex(StringUtils.judgeGender(proProjectInfoSubdepts.getSubDeptLeaderCode()));
|
||||
sysUser.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
sysUser.setCreateTime(DateUtils.getNowDate());
|
||||
sysUser.setRemark(proProjectInfoSubdepts.getSubDeptName());
|
||||
try {
|
||||
R<Long> userResult = remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER);
|
||||
proProjectInfoSubdepts.setSubDeptLeaderId(userResult.getData());
|
||||
}catch (Exception e){
|
||||
// 已注册账号!!忽略异常...
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
proProjectInfoSubdepts.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
proProjectInfoSubdepts.setApproveStatus(ApproveStatus.await.getCode());
|
||||
proProjectInfoSubdepts.setCreateTime(DateUtils.getNowDate());
|
||||
int res = proProjectInfoSubdeptsMapper.insertProProjectInfoSubdepts(proProjectInfoSubdepts);
|
||||
// 将人员信息同步至单位人员表
|
||||
if(res>0 && (Objects.equals(proProjectInfoSubdepts.getSubDeptType(), SubDeptsEnums.ZYFB.getCode()) || Objects.equals(proProjectInfoSubdepts.getSubDeptType(),SubDeptsEnums.LWFB.getCode()))){
|
||||
// 保存单位人员信息
|
||||
ProProjectInfoSubdeptsUsers subdeptsUser = new ProProjectInfoSubdeptsUsers();
|
||||
subdeptsUser.setComId(info.getComId());
|
||||
subdeptsUser.setProjectId(info.getId());
|
||||
subdeptsUser.setSubDeptId(proProjectInfoSubdepts.getId());
|
||||
subdeptsUser.setSubDeptName(proProjectInfoSubdepts.getSubDeptName());
|
||||
subdeptsUser.setSubDeptType(proProjectInfoSubdepts.getSubDeptType());
|
||||
subdeptsUser.setSubDeptPowerPath(proProjectInfoSubdepts.getSubDeptLeaderPowerPath());
|
||||
subdeptsUser.setUserId(proProjectInfoSubdepts.getSubDeptLeaderId());
|
||||
subdeptsUser.setUserPost(UserPostEnums.WTDL.getCode());
|
||||
subdeptsUser.setCraftType(CraftTypeEnums.GLRY.getCode());
|
||||
subdeptsUser.setCraftPost(CraftPostEnums.WTDL.getCode());
|
||||
subdeptsUser.setDegreeGrade(proProjectInfoSubdepts.getLeaderDegreeGrade());
|
||||
subdeptsUser.setEduStatus(ShiFouEnums.FOU.getCodeStr());
|
||||
subdeptsUser.setApproveStatus(ApproveStatus.await.getCode());
|
||||
if(Objects.isNull(subdeptsUser.getSubStep()) || subdeptsUser.getSubStep()<1){
|
||||
subdeptsUser.setSubStep(1L);
|
||||
}
|
||||
if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){
|
||||
subdeptsUser.setCreateBy(SecurityUtils.getUsername());
|
||||
subdeptsUser.setApproveStatus(ApproveStatus.passed.getCode());
|
||||
}else{
|
||||
subdeptsUser.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
subdeptsUser.setApproveStatus(ApproveStatus.await.getCode());
|
||||
}
|
||||
subdeptsUser.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
subdeptsUser.setCreateTime(DateUtils.getNowDate());
|
||||
proProjectInfoSubdeptsUsersMapper.insertProProjectInfoSubdeptsUsers(subdeptsUser);
|
||||
}
|
||||
return res;
|
||||
return proProjectInfoSubdepts;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -200,29 +277,17 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept
|
|||
sysUser.setCardImgPos(proProjectInfoSubdepts.getLeaderCardImgPos());
|
||||
sysUser.setCardImgInv(proProjectInfoSubdepts.getLeaderCardImgInv());
|
||||
sysUser.setSex(StringUtils.judgeGender(proProjectInfoSubdepts.getSubDeptLeaderCode()));
|
||||
if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){
|
||||
sysUser.setUpdateBy(SecurityUtils.getUsername());
|
||||
}else{
|
||||
sysUser.setUpdateBy(DataSourceEnuns.APP.getInfo());
|
||||
}
|
||||
sysUser.setUpdateBy(SecurityUtils.getUsername());
|
||||
sysUser.setUpdateTime(DateUtils.getNowDate());
|
||||
sysUser.setRemark(proProjectInfoSubdepts.getSubDeptName());
|
||||
try {
|
||||
R<Long> userResult = remoteUserService.updateUserInfo(sysUser, SecurityConstants.INNER);
|
||||
proProjectInfoSubdepts.setSubDeptLeaderId(userResult.getData());
|
||||
remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER);
|
||||
}catch (Exception e){
|
||||
// 已注册账号!!忽略异常...
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
// TODO:实名制接入
|
||||
}
|
||||
}
|
||||
if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){
|
||||
proProjectInfoSubdepts.setUpdateBy(SecurityUtils.getUsername());
|
||||
}else{
|
||||
proProjectInfoSubdepts.setUpdateBy(DataSourceEnuns.APP.getInfo());
|
||||
}
|
||||
proProjectInfoSubdepts.setUpdateBy(SecurityUtils.getUsername());
|
||||
proProjectInfoSubdepts.setUpdateTime(DateUtils.getNowDate());
|
||||
int res = proProjectInfoSubdeptsMapper.updateProProjectInfoSubdepts(proProjectInfoSubdepts);
|
||||
// 将人员信息同步至单位人员表
|
||||
|
@ -241,17 +306,15 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept
|
|||
subdeptsUser.setUserId(proProjectInfoSubdepts.getSubDeptLeaderId());
|
||||
subdeptsUser.setCraftType(CraftTypeEnums.GLRY.getCode());
|
||||
subdeptsUser.setCraftPost(CraftPostEnums.WTDL.getCode());
|
||||
subdeptsUser.setDegreeGrade("");
|
||||
subdeptsUser.setDegreeGrade(proProjectInfoSubdepts.getLeaderDegreeGrade());
|
||||
subdeptsUser.setEduStatus(ShiFouEnums.FOU.getCodeStr());
|
||||
subdeptsUser.setApproveStatus(ApproveStatus.await.getCode());
|
||||
if(Objects.isNull(subdeptsUser.getApproveStatus())){
|
||||
subdeptsUser.setApproveStatus(ApproveStatus.passed.getCode());
|
||||
}
|
||||
if(Objects.isNull(subdeptsUser.getSubStep()) || subdeptsUser.getSubStep()<1){
|
||||
subdeptsUser.setSubStep(1L);
|
||||
}
|
||||
if(Objects.equals(DataSourceEnuns.WEB.getCode(),proProjectInfoSubdepts.getDataSource())){
|
||||
subdeptsUser.setCreateBy(SecurityUtils.getUsername());
|
||||
}else{
|
||||
subdeptsUser.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
}
|
||||
subdeptsUser.setCreateBy(SecurityUtils.getUsername());
|
||||
subdeptsUser.setCreateTime(DateUtils.getNowDate());
|
||||
if(Objects.isNull(subdeptsUser.getId())){
|
||||
proProjectInfoSubdeptsUsersMapper.insertProProjectInfoSubdeptsUsers(subdeptsUser);
|
||||
|
@ -262,6 +325,86 @@ public class ProProjectInfoSubdeptsServiceImpl implements IProProjectInfoSubdept
|
|||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改分包单位
|
||||
*
|
||||
* @param proProjectInfoSubdepts 分包单位
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public ProProjectInfoSubdepts updateProProjectInfoSubdeptsWX(ProProjectInfoSubdepts proProjectInfoSubdepts)
|
||||
{
|
||||
ProProjectInfo info = redisService.getCacheObject(CacheConstants.PRO_PROJECT+proProjectInfoSubdepts.getProjectId());
|
||||
if(Objects.isNull(info)){
|
||||
throw new ServiceException("项目信息异常...");
|
||||
}
|
||||
if(Objects.equals(proProjectInfoSubdepts.getSubDeptType(), SubDeptsEnums.ZYFB.getCode()) || Objects.equals(proProjectInfoSubdepts.getSubDeptType(), SubDeptsEnums.LWFB.getCode())){
|
||||
// 单位委托人信息
|
||||
if(StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderName()) && StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderCode()) && StringUtils.isNotEmpty(proProjectInfoSubdepts.getSubDeptLeaderPhone())){
|
||||
SysUser sysUser = new SysUser();
|
||||
sysUser.setUserName(proProjectInfoSubdepts.getSubDeptLeaderPhone());
|
||||
sysUser.setNickName(proProjectInfoSubdepts.getSubDeptLeaderName());
|
||||
sysUser.setPhonenumber(proProjectInfoSubdepts.getSubDeptLeaderPhone());
|
||||
sysUser.setUserType(UserTypeEnums.FBDL.getCode());
|
||||
sysUser.setCardType(CardTypeEnums.SFZ.getCode());
|
||||
sysUser.setCardCode(proProjectInfoSubdepts.getSubDeptLeaderCode());
|
||||
sysUser.setUserPicture(proProjectInfoSubdepts.getLeaderUserPicture());
|
||||
sysUser.setCardImgPos(proProjectInfoSubdepts.getLeaderCardImgPos());
|
||||
sysUser.setCardImgInv(proProjectInfoSubdepts.getLeaderCardImgInv());
|
||||
sysUser.setSex(StringUtils.judgeGender(proProjectInfoSubdepts.getSubDeptLeaderCode()));
|
||||
sysUser.setUpdateBy(DataSourceEnuns.APP.getInfo());
|
||||
sysUser.setUpdateTime(DateUtils.getNowDate());
|
||||
sysUser.setRemark(proProjectInfoSubdepts.getSubDeptName());
|
||||
try {
|
||||
R<Long> userResult = remoteUserService.registerUserInfo(sysUser, SecurityConstants.INNER);
|
||||
proProjectInfoSubdepts.setSubDeptLeaderId(userResult.getData());
|
||||
}catch (Exception e){
|
||||
// 已注册账号!!忽略异常...
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
proProjectInfoSubdepts.setUpdateBy(DataSourceEnuns.APP.getInfo());
|
||||
proProjectInfoSubdepts.setUpdateTime(DateUtils.getNowDate());
|
||||
int res = proProjectInfoSubdeptsMapper.updateProProjectInfoSubdepts(proProjectInfoSubdepts);
|
||||
// 将人员信息同步至单位人员表
|
||||
if(res>0 && (Objects.equals(proProjectInfoSubdepts.getSubDeptType(), SubDeptsEnums.ZYFB.getCode()) || Objects.equals(proProjectInfoSubdepts.getSubDeptType(),SubDeptsEnums.LWFB.getCode()))){
|
||||
// 保存单位人员信息
|
||||
ProProjectInfoSubdeptsUsers subdeptsUser = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersByParamId(proProjectInfoSubdepts.getProjectId(),proProjectInfoSubdepts.getSubDeptLeaderId());
|
||||
if(Objects.isNull(subdeptsUser)){
|
||||
subdeptsUser = new ProProjectInfoSubdeptsUsers();
|
||||
subdeptsUser.setComId(info.getComId());
|
||||
subdeptsUser.setProjectId(info.getId());
|
||||
subdeptsUser.setSubDeptId(proProjectInfoSubdepts.getId());
|
||||
}
|
||||
subdeptsUser.setSubDeptName(proProjectInfoSubdepts.getSubDeptName());
|
||||
subdeptsUser.setSubDeptType(proProjectInfoSubdepts.getSubDeptType());
|
||||
subdeptsUser.setSubDeptPowerPath(proProjectInfoSubdepts.getSubDeptLeaderPowerPath());
|
||||
subdeptsUser.setUserId(proProjectInfoSubdepts.getSubDeptLeaderId());
|
||||
subdeptsUser.setCraftType(UserPostEnums.WTDL.getCode());
|
||||
subdeptsUser.setCraftType(CraftTypeEnums.GLRY.getCode());
|
||||
subdeptsUser.setCraftPost(CraftPostEnums.WTDL.getCode());
|
||||
subdeptsUser.setDegreeGrade(proProjectInfoSubdepts.getLeaderDegreeGrade());
|
||||
subdeptsUser.setEduStatus(ShiFouEnums.FOU.getCodeStr());
|
||||
if(Objects.isNull(subdeptsUser.getApproveStatus())){
|
||||
subdeptsUser.setApproveStatus(ApproveStatus.await.getCode());
|
||||
}
|
||||
if(Objects.isNull(subdeptsUser.getSubStep()) || subdeptsUser.getSubStep()<1){
|
||||
subdeptsUser.setSubStep(1L);
|
||||
}
|
||||
subdeptsUser.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
subdeptsUser.setCreateTime(DateUtils.getNowDate());
|
||||
if(Objects.isNull(subdeptsUser.getId())){
|
||||
proProjectInfoSubdeptsUsersMapper.insertProProjectInfoSubdeptsUsers(subdeptsUser);
|
||||
}else{
|
||||
proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(subdeptsUser);
|
||||
}
|
||||
}
|
||||
return proProjectInfoSubdepts;
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改分包单位
|
||||
*
|
||||
|
|
|
@ -1,35 +1,45 @@
|
|||
package com.yanzhu.manage.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.deepoove.poi.data.PictureRenderData;
|
||||
import com.yanzhu.common.core.constant.SecurityConstants;
|
||||
import com.yanzhu.common.core.context.SecurityContextHolder;
|
||||
import com.yanzhu.common.core.domain.R;
|
||||
import com.yanzhu.common.core.enums.ApproveStatus;
|
||||
import com.yanzhu.common.core.enums.ShiFouEnums;
|
||||
import com.yanzhu.common.core.enums.*;
|
||||
import com.yanzhu.common.core.exception.ServiceException;
|
||||
import com.yanzhu.common.core.text.Convert;
|
||||
import com.yanzhu.common.core.utils.DateUtils;
|
||||
import com.yanzhu.common.core.utils.StringUtils;
|
||||
import com.yanzhu.common.core.web.domain.AjaxResult;
|
||||
import com.yanzhu.common.security.utils.DictUtils;
|
||||
import com.yanzhu.common.security.utils.SecurityUtils;
|
||||
import com.yanzhu.manage.config.ProfileConfig;
|
||||
import com.yanzhu.manage.domain.BasTemplate;
|
||||
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsGroup;
|
||||
import com.yanzhu.manage.domain.ProProjectInfoSubdeptsUsers;
|
||||
import com.yanzhu.manage.domain.SignetFileVo;
|
||||
import com.yanzhu.manage.enums.CraftTypeEnums;
|
||||
import com.yanzhu.manage.enums.SignetKeyEnums;
|
||||
import com.yanzhu.manage.enums.UserPostEnums;
|
||||
import com.yanzhu.manage.mapper.BasTemplateMapper;
|
||||
import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsGroupMapper;
|
||||
import com.yanzhu.manage.mapper.ProProjectInfoSubdeptsUsersMapper;
|
||||
import com.yanzhu.manage.service.IProProjectInfoSubdeptsUsersService;
|
||||
import com.yanzhu.manage.service.IUniService;
|
||||
import com.yanzhu.manage.utils.WxQrCodeUtils;
|
||||
import com.yanzhu.manage.utils.pdf.PoiUtil;
|
||||
import com.yanzhu.system.api.RemoteFlowService;
|
||||
import com.yanzhu.system.api.RemoteUserService;
|
||||
import com.yanzhu.system.api.domain.SysUser;
|
||||
import me.chanjar.weixin.mp.api.WxMpService;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.File;
|
||||
import java.util.*;
|
||||
|
||||
|
@ -46,6 +56,9 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
|||
@Autowired
|
||||
private IUniService uniService;
|
||||
|
||||
@Autowired
|
||||
private WxMpService wxMpService;
|
||||
|
||||
@Autowired
|
||||
private BasTemplateMapper basTemplateMapper;
|
||||
|
||||
|
@ -58,6 +71,11 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
|||
@Autowired
|
||||
private ProProjectInfoSubdeptsUsersMapper proProjectInfoSubdeptsUsersMapper;
|
||||
|
||||
@Autowired
|
||||
private ProProjectInfoSubdeptsGroupMapper proProjectInfoSubdeptsGroupMapper;
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(ProProjectInfoSubdeptsUsersServiceImpl.class);
|
||||
|
||||
/**
|
||||
* 查询分包单位工人
|
||||
*
|
||||
|
@ -91,19 +109,113 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
|||
@Override
|
||||
public int insertProProjectInfoSubdeptsUsers(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers)
|
||||
{
|
||||
proProjectInfoSubdeptsUsers.setUseStatus("0");
|
||||
proProjectInfoSubdeptsUsers.setUseStatus(UseStateEnums.IN.getCode());
|
||||
proProjectInfoSubdeptsUsers.setCreateTime(DateUtils.getNowDate());
|
||||
proProjectInfoSubdeptsUsers.setCreateBy(SecurityContextHolder.getUserName());
|
||||
SysUser user=proProjectInfoSubdeptsUsers.getUser();
|
||||
if(user.getUserId()==null||user.getUserId().intValue()==0){
|
||||
Long userId= remoteUserService.registerUserInfo(user, SecurityConstants.INNER).getData();
|
||||
user.setUserId(userId);
|
||||
proProjectInfoSubdeptsUsers.setUserId(userId);
|
||||
}else{
|
||||
remoteUserService.updateUserInfo(user,SecurityConstants.INNER).getData();
|
||||
proProjectInfoSubdeptsUsers.setCreateBy(SecurityUtils.getUsername());
|
||||
proProjectInfoSubdeptsUsers.setSubStep(1L);
|
||||
proProjectInfoSubdeptsUsers.setApproveStatus(ApproveStatus.passed.getCode());
|
||||
SysUser user = proProjectInfoSubdeptsUsers.getUser();
|
||||
Long userId= remoteUserService.registerUserInfo(user, SecurityConstants.INNER).getData();
|
||||
proProjectInfoSubdeptsUsers.setUserId(userId);
|
||||
uniService.syncUniUser(userId,proProjectInfoSubdeptsUsers.getProjectId());
|
||||
int res = proProjectInfoSubdeptsUsersMapper.insertProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
|
||||
if(res>0 && Objects.nonNull(proProjectInfoSubdeptsUsers.getUserPost())){
|
||||
// 生成二维码
|
||||
try {
|
||||
String accessToken = wxMpService.getAccessToken();
|
||||
String filePath = DateUtils.datePath()+"/"+System.currentTimeMillis()+".png";
|
||||
String savePath = ProfileConfig.profilePath+"/"+filePath;
|
||||
String profilePath = ProfileConfig.profile+"/"+filePath;
|
||||
log.info("accessToken...{}",accessToken);
|
||||
// 生成二维码
|
||||
if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.XMJL.getCode())){
|
||||
WxQrCodeUtils.generateQrCode(savePath, "pages/project_qr/index", "SIGID=3&QRPID="+proProjectInfoSubdeptsUsers.getProjectId()+"&PARID="+proProjectInfoSubdeptsUsers.getId(), accessToken);
|
||||
}else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.BZZ.getCode())){
|
||||
WxQrCodeUtils.generateQrCode(savePath, "pages/project_qr/index", "SIGID=4&QRPID="+proProjectInfoSubdeptsUsers.getProjectId()+"&PARID="+proProjectInfoSubdeptsUsers.getId(), accessToken);
|
||||
}
|
||||
proProjectInfoSubdeptsUsers.setQrCode(profilePath);
|
||||
proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
uniService.syncUniUser(user.getUserId(),proProjectInfoSubdeptsUsers.getProjectId());
|
||||
return proProjectInfoSubdeptsUsersMapper.insertProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增分包单位工人
|
||||
*
|
||||
* @param proProjectInfoSubdeptsUsers 分包单位工人
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public ProProjectInfoSubdeptsUsers insertProProjectInfoSubdeptsUsersWX(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers){
|
||||
ProProjectInfoSubdeptsUsers parUsers = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(proProjectInfoSubdeptsUsers.getParId());
|
||||
if(Objects.isNull(parUsers)){
|
||||
throw new ServiceException("用户信息异常...请重新扫码");
|
||||
}
|
||||
SysUser user = proProjectInfoSubdeptsUsers.getUser();
|
||||
|
||||
proProjectInfoSubdeptsUsers.setComId(parUsers.getComId());
|
||||
proProjectInfoSubdeptsUsers.setProjectId(parUsers.getProjectId());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptId(parUsers.getSubDeptId());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptName(parUsers.getSubDeptName());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptType(parUsers.getSubDeptType());
|
||||
proProjectInfoSubdeptsUsers.setUseStatus(UseStateEnums.AW.getCode());
|
||||
proProjectInfoSubdeptsUsers.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
proProjectInfoSubdeptsUsers.setCreateTime(DateUtils.getNowDate());
|
||||
proProjectInfoSubdeptsUsers.setSubStep(1L);
|
||||
proProjectInfoSubdeptsUsers.setApproveStatus(ApproveStatus.await.getCode());
|
||||
// 班组信息处理
|
||||
if(Objects.nonNull(proProjectInfoSubdeptsUsers.getUserPost())){
|
||||
// 班组长新增班组
|
||||
if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.BZZ.getCode())){
|
||||
ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup();
|
||||
query.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
|
||||
query.setSubDeptId(proProjectInfoSubdeptsUsers.getSubDeptId());
|
||||
query.setCraftPost(proProjectInfoSubdeptsUsers.getCraftPost());
|
||||
List<ProProjectInfoSubdeptsGroup> proSubdeptsGroupList = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupList(query);
|
||||
ProProjectInfoSubdeptsGroup proSubdeptsGroup = new ProProjectInfoSubdeptsGroup();
|
||||
proSubdeptsGroup.setComId(proProjectInfoSubdeptsUsers.getComId());
|
||||
proSubdeptsGroup.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
|
||||
proSubdeptsGroup.setSubDeptId(proProjectInfoSubdeptsUsers.getSubDeptId());
|
||||
proSubdeptsGroup.setSubDeptName(proProjectInfoSubdeptsUsers.getSubDeptName());
|
||||
proSubdeptsGroup.setSubDeptType(proProjectInfoSubdeptsUsers.getSubDeptType());
|
||||
int count = proSubdeptsGroupList.size()+1;
|
||||
String pre = Objects.equals(proProjectInfoSubdeptsUsers.getCraftType(), CraftTypeEnums.PYGZ.getCode())?"普通":"特殊";
|
||||
String craftPostName = DictUtils.getDictLabel("pro_craft_post",proProjectInfoSubdeptsUsers.getCraftPost());
|
||||
proSubdeptsGroup.setGroupName(pre+craftPostName+"班组"+count);
|
||||
proSubdeptsGroup.setCraftType(proProjectInfoSubdeptsUsers.getCraftType());
|
||||
proSubdeptsGroup.setCraftPost(proProjectInfoSubdeptsUsers.getCraftPost());
|
||||
proSubdeptsGroup.setGroupLeaderName(user.getNickName());
|
||||
proSubdeptsGroup.setGroupLeaderCode(user.getCardCode());
|
||||
proSubdeptsGroup.setGroupLeaderPhone(user.getPhonenumber());
|
||||
proSubdeptsGroup.setUseStatus(UseStateEnums.AW.getCode());
|
||||
proSubdeptsGroup.setApproveStatus(ApproveStatus.await.getCode());
|
||||
proSubdeptsGroup.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
proSubdeptsGroup.setCreateTime(DateUtils.getNowDate());
|
||||
proProjectInfoSubdeptsGroupMapper.insertProProjectInfoSubdeptsGroup(proSubdeptsGroup);
|
||||
proProjectInfoSubdeptsUsers.setSubDeptGroup(proSubdeptsGroup.getId());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptGroupName(proSubdeptsGroup.getGroupName());
|
||||
}else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.LWGR.getCode())){
|
||||
// 劳务人员绑定班组信息
|
||||
proProjectInfoSubdeptsUsers.setSubDeptGroup(parUsers.getSubDeptGroup());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptGroupName(parUsers.getSubDeptGroupName());
|
||||
}
|
||||
}
|
||||
// 完善人员信息...
|
||||
user.setUserName(proProjectInfoSubdeptsUsers.getPhoneNumber());
|
||||
user.setPhonenumber(proProjectInfoSubdeptsUsers.getPhoneNumber());
|
||||
user.setUserType(UserTypeEnums.FBRY.getCode());
|
||||
user.setCardType(CardTypeEnums.SFZ.getCode());
|
||||
user.setSex(StringUtils.judgeGender(user.getCardCode()));
|
||||
user.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
user.setCreateTime(DateUtils.getNowDate());
|
||||
Long userId = remoteUserService.registerUserInfo(user, SecurityConstants.INNER).getData();
|
||||
proProjectInfoSubdeptsUsers.setUserId(userId);
|
||||
proProjectInfoSubdeptsUsersMapper.insertProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
|
||||
return proProjectInfoSubdeptsUsers;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -115,21 +227,136 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
|||
@Override
|
||||
public int updateProProjectInfoSubdeptsUsers(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers)
|
||||
{
|
||||
proProjectInfoSubdeptsUsers.setUpdateBy(SecurityUtils.getUsername());
|
||||
proProjectInfoSubdeptsUsers.setUpdateTime(DateUtils.getNowDate());
|
||||
proProjectInfoSubdeptsUsers.setUpdateBy(SecurityContextHolder.getUserName());
|
||||
SysUser user=proProjectInfoSubdeptsUsers.getUser();
|
||||
if(user.getUserId()==null||user.getUserId().intValue()==0){
|
||||
Long userId= remoteUserService.registerUserInfo(user, SecurityConstants.INNER).getData();
|
||||
user.setUserId(userId);
|
||||
proProjectInfoSubdeptsUsers.setUserId(userId);
|
||||
}else{
|
||||
remoteUserService.updateUserInfo(user,SecurityConstants.INNER).getData();
|
||||
}
|
||||
uniService.syncUniUser(user.getUserId(),proProjectInfoSubdeptsUsers.getProjectId());
|
||||
SysUser user = proProjectInfoSubdeptsUsers.getUser();
|
||||
Long userId = remoteUserService.registerUserInfo(user, SecurityConstants.INNER).getData();
|
||||
proProjectInfoSubdeptsUsers.setUserId(userId);
|
||||
uniService.syncUniUser(userId,proProjectInfoSubdeptsUsers.getProjectId());
|
||||
return proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改分包单位工人
|
||||
*
|
||||
* @param proProjectInfoSubdeptsUsers 分包单位工人
|
||||
* @return 结果
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public ProProjectInfoSubdeptsUsers updateProProjectInfoSubdeptsUsersWX(ProProjectInfoSubdeptsUsers proProjectInfoSubdeptsUsers)
|
||||
{
|
||||
ProProjectInfoSubdeptsUsers parUsers = proProjectInfoSubdeptsUsersMapper.selectProProjectInfoSubdeptsUsersById(proProjectInfoSubdeptsUsers.getParId());
|
||||
if(Objects.isNull(parUsers)){
|
||||
throw new ServiceException("用户信息异常...请重新扫码");
|
||||
}
|
||||
SysUser user = proProjectInfoSubdeptsUsers.getUser();
|
||||
|
||||
proProjectInfoSubdeptsUsers.setComId(parUsers.getComId());
|
||||
proProjectInfoSubdeptsUsers.setProjectId(parUsers.getProjectId());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptId(parUsers.getSubDeptId());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptName(parUsers.getSubDeptName());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptType(parUsers.getSubDeptType());
|
||||
proProjectInfoSubdeptsUsers.setUpdateBy(DataSourceEnuns.APP.getInfo());
|
||||
proProjectInfoSubdeptsUsers.setUpdateTime(DateUtils.getNowDate());
|
||||
if(Objects.isNull(proProjectInfoSubdeptsUsers.getSubStep()) || proProjectInfoSubdeptsUsers.getSubStep()<1){
|
||||
proProjectInfoSubdeptsUsers.setSubStep(1L);
|
||||
}
|
||||
if(Objects.isNull(proProjectInfoSubdeptsUsers.getApproveStatus())){
|
||||
proProjectInfoSubdeptsUsers.setApproveStatus(ApproveStatus.await.getCode());
|
||||
}
|
||||
// 班组信息处理
|
||||
if(Objects.nonNull(proProjectInfoSubdeptsUsers.getUserPost())){
|
||||
// 班组长新增班组
|
||||
if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.BZZ.getCode())){
|
||||
ProProjectInfoSubdeptsGroup query = new ProProjectInfoSubdeptsGroup();
|
||||
query.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
|
||||
query.setSubDeptId(proProjectInfoSubdeptsUsers.getSubDeptId());
|
||||
query.setGroupLeaderPhone(user.getPhonenumber());
|
||||
List<ProProjectInfoSubdeptsGroup> groupList = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupList(query);
|
||||
if(StringUtils.isNotEmpty(groupList)){
|
||||
ProProjectInfoSubdeptsGroup proSubdeptsGroup = groupList.get(0);
|
||||
// 判断班组信息是否更新
|
||||
if(!Objects.equals(proProjectInfoSubdeptsUsers.getCraftPost(),groupList.get(0).getCraftPost()) || !Objects.equals(proProjectInfoSubdeptsUsers.getSubDeptId(),groupList.get(0).getSubDeptId())){
|
||||
ProProjectInfoSubdeptsGroup groupQuery = new ProProjectInfoSubdeptsGroup();
|
||||
groupQuery.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
|
||||
groupQuery.setSubDeptId(proProjectInfoSubdeptsUsers.getSubDeptId());
|
||||
groupQuery.setCraftPost(proProjectInfoSubdeptsUsers.getCraftPost());
|
||||
List<ProProjectInfoSubdeptsGroup> proSubdeptsGroupList = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupList(groupQuery);
|
||||
proSubdeptsGroup.setSubDeptId(proProjectInfoSubdeptsUsers.getSubDeptId());
|
||||
proSubdeptsGroup.setSubDeptName(proProjectInfoSubdeptsUsers.getSubDeptName());
|
||||
proSubdeptsGroup.setSubDeptType(proProjectInfoSubdeptsUsers.getSubDeptType());
|
||||
int count = proSubdeptsGroupList.size()+1;
|
||||
String pre = Objects.equals(proProjectInfoSubdeptsUsers.getCraftType(), CraftTypeEnums.PYGZ.getCode())?"普通":"特殊";
|
||||
String craftPostName = DictUtils.getDictLabel("pro_craft_post",proProjectInfoSubdeptsUsers.getCraftPost());
|
||||
proSubdeptsGroup.setGroupName(pre+craftPostName+"班组"+count);
|
||||
proSubdeptsGroup.setCraftType(proProjectInfoSubdeptsUsers.getCraftType());
|
||||
proSubdeptsGroup.setCraftPost(proProjectInfoSubdeptsUsers.getCraftPost());
|
||||
proSubdeptsGroup.setGroupLeaderName(user.getNickName());
|
||||
proSubdeptsGroup.setGroupLeaderCode(user.getCardCode());
|
||||
proSubdeptsGroup.setGroupLeaderPhone(user.getPhonenumber());
|
||||
proSubdeptsGroup.setUpdateBy(DataSourceEnuns.APP.getInfo());
|
||||
proSubdeptsGroup.setUpdateTime(DateUtils.getNowDate());
|
||||
proProjectInfoSubdeptsGroupMapper.updateProProjectInfoSubdeptsGroup(proSubdeptsGroup);
|
||||
proProjectInfoSubdeptsUsers.setSubDeptGroup(proSubdeptsGroup.getId());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptGroupName(proSubdeptsGroup.getGroupName());
|
||||
}else{
|
||||
// 班组主要信息未变更时只修改班组长信息
|
||||
proSubdeptsGroup.setGroupLeaderName(user.getNickName());
|
||||
proSubdeptsGroup.setGroupLeaderCode(user.getCardCode());
|
||||
proSubdeptsGroup.setGroupLeaderPhone(user.getPhonenumber());
|
||||
proSubdeptsGroup.setUpdateBy(DataSourceEnuns.APP.getInfo());
|
||||
proSubdeptsGroup.setUpdateTime(DateUtils.getNowDate());
|
||||
proProjectInfoSubdeptsGroupMapper.updateProProjectInfoSubdeptsGroup(proSubdeptsGroup);
|
||||
}
|
||||
}else{
|
||||
ProProjectInfoSubdeptsGroup groupQuery = new ProProjectInfoSubdeptsGroup();
|
||||
groupQuery.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
|
||||
groupQuery.setSubDeptId(proProjectInfoSubdeptsUsers.getSubDeptId());
|
||||
groupQuery.setCraftPost(proProjectInfoSubdeptsUsers.getCraftPost());
|
||||
List<ProProjectInfoSubdeptsGroup> proSubdeptsGroupList = proProjectInfoSubdeptsGroupMapper.selectProProjectInfoSubdeptsGroupList(groupQuery);
|
||||
ProProjectInfoSubdeptsGroup proSubdeptsGroup = new ProProjectInfoSubdeptsGroup();
|
||||
proSubdeptsGroup.setComId(proProjectInfoSubdeptsUsers.getComId());
|
||||
proSubdeptsGroup.setProjectId(proProjectInfoSubdeptsUsers.getProjectId());
|
||||
proSubdeptsGroup.setSubDeptId(proProjectInfoSubdeptsUsers.getSubDeptId());
|
||||
proSubdeptsGroup.setSubDeptName(proProjectInfoSubdeptsUsers.getSubDeptName());
|
||||
proSubdeptsGroup.setSubDeptType(proProjectInfoSubdeptsUsers.getSubDeptType());
|
||||
int count = proSubdeptsGroupList.size()+1;
|
||||
String pre = Objects.equals(proProjectInfoSubdeptsUsers.getCraftType(), CraftTypeEnums.PYGZ.getCode())?"普通":"特殊";
|
||||
String craftPostName = DictUtils.getDictLabel("pro_craft_post",proProjectInfoSubdeptsUsers.getCraftPost());
|
||||
proSubdeptsGroup.setGroupName(pre+craftPostName+"班组"+count);
|
||||
proSubdeptsGroup.setCraftType(proProjectInfoSubdeptsUsers.getCraftType());
|
||||
proSubdeptsGroup.setCraftPost(proProjectInfoSubdeptsUsers.getCraftPost());
|
||||
proSubdeptsGroup.setGroupLeaderName(user.getNickName());
|
||||
proSubdeptsGroup.setGroupLeaderCode(user.getCardCode());
|
||||
proSubdeptsGroup.setGroupLeaderPhone(user.getPhonenumber());
|
||||
proSubdeptsGroup.setUseStatus(UseStateEnums.AW.getCode());
|
||||
proSubdeptsGroup.setApproveStatus(ApproveStatus.await.getCode());
|
||||
proSubdeptsGroup.setCreateBy(DataSourceEnuns.APP.getInfo());
|
||||
proSubdeptsGroup.setCreateTime(DateUtils.getNowDate());
|
||||
proProjectInfoSubdeptsGroupMapper.insertProProjectInfoSubdeptsGroup(proSubdeptsGroup);
|
||||
proProjectInfoSubdeptsUsers.setSubDeptGroup(proSubdeptsGroup.getId());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptGroupName(proSubdeptsGroup.getGroupName());
|
||||
}
|
||||
}else if(Objects.equals(proProjectInfoSubdeptsUsers.getUserPost(), UserPostEnums.LWGR.getCode())){
|
||||
// 劳务人员绑定班组信息
|
||||
proProjectInfoSubdeptsUsers.setSubDeptGroup(parUsers.getSubDeptGroup());
|
||||
proProjectInfoSubdeptsUsers.setSubDeptGroupName(parUsers.getSubDeptGroupName());
|
||||
}
|
||||
}
|
||||
|
||||
// 完善人员信息
|
||||
user.setUserName(user.getPhonenumber());
|
||||
user.setUserType(UserTypeEnums.FBRY.getCode());
|
||||
user.setCardType(CardTypeEnums.SFZ.getCode());
|
||||
user.setSex(StringUtils.judgeGender(user.getCardCode()));
|
||||
user.setUpdateBy(DataSourceEnuns.APP.getInfo());
|
||||
user.setUpdateTime(DateUtils.getNowDate());
|
||||
Long userId = remoteUserService.registerUserInfo(user, SecurityConstants.INNER).getData();
|
||||
proProjectInfoSubdeptsUsers.setUserId(userId);
|
||||
proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proProjectInfoSubdeptsUsers);
|
||||
return proProjectInfoSubdeptsUsers;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除分包单位工人
|
||||
|
@ -183,7 +410,7 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
|||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void submitUserSignets(SignetFileVo signetFileVo) {
|
||||
public ProProjectInfoSubdeptsUsers submitUserSignets(SignetFileVo signetFileVo) {
|
||||
ProProjectInfoSubdeptsUsers query = new ProProjectInfoSubdeptsUsers();
|
||||
query.setProjectId(signetFileVo.getProId());
|
||||
query.setPhoneNumber(signetFileVo.getUserPhone());
|
||||
|
@ -199,12 +426,6 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
|||
if(StringUtils.isEmpty(proSubdeptsUser.getUserPost())){
|
||||
throw new ServiceException("用户信息异常...");
|
||||
}
|
||||
// 工作流配置查询
|
||||
List<Map<String, Object>> procdefDatas = proProjectInfoSubdeptsUsersMapper.findActReProcdefDept(proSubdeptsUser.getProjectId(),proSubdeptsUser.getUserPost());
|
||||
if(StringUtils.isEmpty(procdefDatas)){
|
||||
throw new ServiceException("工作流配置异常...请联系管理员配置");
|
||||
}
|
||||
String procDefId = Convert.toStr(procdefDatas.get(0).get("PROCDEF_ID_"));
|
||||
|
||||
// 生成安全承诺教育书...
|
||||
BasTemplate querys = new BasTemplate();
|
||||
|
@ -226,13 +447,16 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
|||
String fileName = UUID.randomUUID() + ".pdf";
|
||||
String filePath = DateUtils.datePath();
|
||||
// 生成的签署文件地址
|
||||
String saveWordFilePath = rootSavePath + filePath + fileName;
|
||||
String saveEdusFilePath = ProfileConfig.profile + filePath + fileName;
|
||||
String saveWordFilePath = rootSavePath + "/" +filePath + "/" + fileName;
|
||||
String saveEdusFilePath = ProfileConfig.profile + "/" + filePath + "/" + fileName;
|
||||
// 生成文件夹
|
||||
File dirFile = FileUtils.getFile(rootSavePath + filePath);
|
||||
if (!dirFile.exists()) {
|
||||
dirFile.mkdirs();
|
||||
}
|
||||
proSubdeptsUser.setSubStep(100L);
|
||||
proSubdeptsUser.setEduSignPath(signetFileVo.getImgPath());
|
||||
proSubdeptsUser.setEduFilePath(saveEdusFilePath);
|
||||
// word文件转PDF文件
|
||||
Map<String, Object> dataMap = getUserDataMap(proSubdeptsUser);
|
||||
try {
|
||||
|
@ -240,23 +464,28 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
|||
}catch (Exception e){
|
||||
throw new ServiceException("承诺书生成失败...服务器异常!!!");
|
||||
}
|
||||
proSubdeptsUser.setSubStep(100L);
|
||||
proSubdeptsUser.setEduSignPath(signetFileVo.getImgPath());
|
||||
proSubdeptsUser.setEduFilePath(saveEdusFilePath);
|
||||
proSubdeptsUser.setApproveStatus(ApproveStatus.check.getCode());
|
||||
|
||||
// 判断是否需要审批...
|
||||
if(Objects.nonNull(proSubdeptsUser.getApproveStatus()) && proSubdeptsUser.getApproveStatus()<ApproveStatus.check.getCode()){
|
||||
proSubdeptsUser.setApproveStatus(ApproveStatus.check.getCode());
|
||||
}
|
||||
int res = proProjectInfoSubdeptsUsersMapper.updateProProjectInfoSubdeptsUsers(proSubdeptsUser);
|
||||
if(res>0){
|
||||
// 待审核时启动工作流审批
|
||||
if(res>0 && Objects.equals(proSubdeptsUser.getApproveStatus(),ApproveStatus.check.getCode())){
|
||||
// 工作流配置查询
|
||||
List<Map<String, Object>> procdefDatas = proProjectInfoSubdeptsUsersMapper.findActReProcdefDept(proSubdeptsUser.getProjectId(),proSubdeptsUser.getUserPost());
|
||||
if(StringUtils.isEmpty(procdefDatas)){
|
||||
throw new ServiceException("工作流配置异常...请联系管理员配置");
|
||||
}
|
||||
String procDefId = Convert.toStr(procdefDatas.get(0).get("PROCDEF_ID_"));
|
||||
// 启动工作流审批节点...
|
||||
Map<String, Object> variables = new HashMap<>();
|
||||
variables.put("INITIATOR",proSubdeptsUser.getUserId());
|
||||
variables.put("userName",proSubdeptsUser.getUser().getNickName());
|
||||
variables.put("businessKey",proSubdeptsUser.getId());
|
||||
R<AjaxResult> result = remoteFlowService.startDefinitionByParams(procDefId,variables,SecurityConstants.INNER);
|
||||
System.out.println("flowable.RESULT==>"+JSON.toJSONString(result));
|
||||
if(Objects.isNull(result) || Objects.isNull(result.getData()) || result.getData().isError()){
|
||||
throw new ServiceException("工作流启动失败...服务器异常!!!");
|
||||
}
|
||||
remoteFlowService.startDefinitionByParams(procDefId,variables,SecurityConstants.INNER);
|
||||
}
|
||||
return proSubdeptsUser;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -269,10 +498,17 @@ public class ProProjectInfoSubdeptsUsersServiceImpl implements IProProjectInfoSu
|
|||
dataMap.put("fName",sysUser.getNickName());
|
||||
dataMap.put("fSex",StringUtils.judgeGenderText(sysUser.getCardCode()));
|
||||
dataMap.put("fAge",StringUtils.getAgeFromIdCard(sysUser.getCardCode()));
|
||||
dataMap.put("fCode",sysUser.getCardCode());
|
||||
dataMap.put("fIllnessStatus",Objects.equals(ShiFouEnums.FOU.getCode(),proSubdeptsUser.getIllnessStatus())?"无":"有");
|
||||
dataMap.put("fSupIllnessStatus",Objects.equals(ShiFouEnums.FOU.getCode(),proSubdeptsUser.getSupIllnessStatus())?"无":"有");
|
||||
dataMap.put("fCraftPost", DictUtils.getDictLabel("pro_craft_post",proSubdeptsUser.getCraftPost()));
|
||||
dataMap.put("fUserSign", SignetKeyEnums.USER_SIGN.getCode());
|
||||
dataMap.put("fDate", DateUtils.dateTimeNow("yyyy年MM月dd日"));
|
||||
dataMap.put("fGroupName", proSubdeptsUser.getSubDeptGroupName());
|
||||
dataMap.put("fGrade", DictUtils.getDictLabel("educational_type",proSubdeptsUser.getDegreeGrade()));
|
||||
String userPicturePath = proSubdeptsUser.getUser().getUserPicture().replaceAll(ProfileConfig.profile, ProfileConfig.profilePath);
|
||||
dataMap.put("fUserPicture", userPicturePath+".min.jpg");
|
||||
String userSignPath = proSubdeptsUser.getEduSignPath().replaceAll(ProfileConfig.profile, ProfileConfig.profilePath);
|
||||
dataMap.put("fUserSign", userSignPath+".sign.png.min.png");
|
||||
dataMap.put("fGroupSign", SignetKeyEnums.GROUP_SIGN.getCode());
|
||||
dataMap.put("fProjectSign", SignetKeyEnums.PROJECT_SIGN.getCode());
|
||||
dataMap.put("fCompanySign", SignetKeyEnums.COMPANY_SIGN.getCode());
|
||||
|
|
|
@ -471,6 +471,7 @@ public class UniServiceImpl implements IUniService{
|
|||
}
|
||||
return 0l;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long syncUniUser(Long userId, Long projectId) {
|
||||
SysUser user=remoteUserService.getSysUserInfo(userId, SecurityConstants.INNER).getData();
|
||||
|
@ -530,13 +531,12 @@ public class UniServiceImpl implements IUniService{
|
|||
}
|
||||
user.setUserInfos(jo.toJSONString());
|
||||
if(hasUpdate){
|
||||
Long ret= remoteUserService.updateUserInfo(user,SecurityConstants.INNER).getData();
|
||||
Long ret= remoteUserService.registerUserInfo(user,SecurityConstants.INNER).getData();
|
||||
if(ret==null){
|
||||
return 0l;
|
||||
}
|
||||
return ret.longValue();
|
||||
}
|
||||
|
||||
return 0l;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,304 +0,0 @@
|
|||
package com.yanzhu.manage.utils.pdf;
|
||||
|
||||
import com.deepoove.poi.NiceXWPFDocument;
|
||||
import com.deepoove.poi.XWPFTemplate;
|
||||
import com.deepoove.poi.policy.AbstractRenderPolicy;
|
||||
import com.deepoove.poi.template.ElementTemplate;
|
||||
import com.deepoove.poi.template.run.RunTemplate;
|
||||
import com.yanzhu.common.core.text.Convert;
|
||||
import com.yanzhu.common.core.utils.StringUtils;
|
||||
import org.apache.poi.xwpf.usermodel.*;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STMerge;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ////////////////////////////////////////////////////////////////////
|
||||
* // _ooOoo_
|
||||
* // o8888888o
|
||||
* // 88" . "88
|
||||
* // (| ^_^ |)
|
||||
* // O\ = /O
|
||||
* // ____/`---'\____
|
||||
* // .' \\| |// `.
|
||||
* // / \\||| : |||// \
|
||||
* // / _||||| -:- |||||- \
|
||||
* // | | \\\ - /// | |
|
||||
* // | \_| ''\---/'' | |
|
||||
* // \ .-\__ `-` ___/-. /
|
||||
* // ___`. .' /--.--\ `. . ___
|
||||
* // ."" '< `.___\_<|>_/___.' >'"".
|
||||
* // | | : `- \`.;`\ _ /`;.`/ - ` : | |
|
||||
* // \ \ `-. \_ __\ /__ _/ .-` / /
|
||||
* // ========`-.____`-.___\_____/___.-`____.-'========
|
||||
* // `=---='
|
||||
* // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
* // 佛祖保佑 永无BUG 永不修改
|
||||
* ////////////////////////////////////////////////////////////////////
|
||||
*
|
||||
* @ClassName MyTableRenderPolicy
|
||||
* @Description 自动以table渲染类
|
||||
* @Author JiangYuQi
|
||||
* @DateTime 2021/6/8 16:50
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class MyTableRenderPolicy extends AbstractRenderPolicy<Object> {
|
||||
|
||||
@Override
|
||||
public void doRender(RunTemplate runTemplate, Object data, XWPFTemplate template) throws Exception {
|
||||
NiceXWPFDocument doc = template.getXWPFDocument();
|
||||
List<String> dataList = (List<String>) data;
|
||||
// 表格
|
||||
List<XWPFTable> tables = this.getTable(doc, runTemplate); //当前表格
|
||||
if (tables != null && tables.size() > 0) {
|
||||
for (XWPFTable table : tables) {
|
||||
Integer templateRowIndex = null;
|
||||
List<XWPFTableRow> rows = table.getRows();
|
||||
int index = 0, lastTemplateCellIndex = 0;
|
||||
//计算模板所在行索引
|
||||
for (XWPFTableRow row : rows) {
|
||||
boolean isTemplateRow = false;
|
||||
for (XWPFTableCell tableCell : row.getTableCells()) {
|
||||
if (tableCell.getText().indexOf("%") > -1) {
|
||||
isTemplateRow = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (isTemplateRow) {
|
||||
templateRowIndex = index;
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
if (StringUtils.isNull(templateRowIndex)) {
|
||||
continue;
|
||||
}
|
||||
XWPFTableRow templateRow = table.getRow(templateRowIndex); //模板行
|
||||
index = 0;
|
||||
//计算模板行最后模板参数列索引
|
||||
for (XWPFTableCell tableCell : templateRow.getTableCells()) {
|
||||
index++;
|
||||
if (tableCell.getText().indexOf("%") > -1) {
|
||||
lastTemplateCellIndex = index;
|
||||
}
|
||||
}
|
||||
lastTemplateCellIndex = lastTemplateCellIndex - 1;
|
||||
Integer nowCellIndex = this.getNowCellIndex(templateRow.getTableCells(), runTemplate);
|
||||
if (nowCellIndex != null) {
|
||||
List<String> verticallyList = new ArrayList<>();
|
||||
List<String> horizontalList = new ArrayList<>();
|
||||
for (int i = 0; i < dataList.size(); i++) {
|
||||
int nowRowsSize = table.getNumberOfRows(); //当前表格的行数
|
||||
int nowRowIndex = i + templateRowIndex + 1;
|
||||
if (nowRowsSize - 1 < nowRowIndex) {
|
||||
XWPFTableRow newCreateRow = table.createRow();
|
||||
CopyTableRow(newCreateRow, templateRow);// 复制模板行文本和样式到新行
|
||||
}
|
||||
XWPFTableCell cell = table.getRow(nowRowIndex).getCell(nowCellIndex);
|
||||
//赋值时候判断是否有合并,找出横纵项的合并参数
|
||||
String text = Convert.toStr(dataList.get(i));
|
||||
if (StringUtils.isNotEmpty(text) && (text.startsWith("Vertically:") || text.startsWith("Horizontal:"))) {
|
||||
if (text.startsWith("Vertically:")) {
|
||||
verticallyList.add(nowCellIndex + "-" + text.split(":")[1]);
|
||||
}
|
||||
if (text.startsWith("Horizontal:")) {
|
||||
horizontalList.add(nowRowIndex + "-" + text.split(":")[1]);
|
||||
}
|
||||
} else {
|
||||
setCellText(cell,text);
|
||||
}
|
||||
}
|
||||
//纵向合并
|
||||
if (StringUtils.isNotNull(verticallyList) && verticallyList.size() > 0) {
|
||||
verticallyList.forEach(vertically -> {
|
||||
String[] params = vertically.split("-");
|
||||
mergeCellsVertically(table, Convert.toInt(params[0]), Convert.toInt(params[1]) + 1, Convert.toInt(params[2]) + 1);
|
||||
});
|
||||
}
|
||||
//横向合并
|
||||
if (StringUtils.isNotNull(horizontalList) && horizontalList.size() > 0) {
|
||||
horizontalList.forEach(horizontal -> {
|
||||
String[] params = horizontal.split("-");
|
||||
mergeCellsHorizontal(table, Convert.toInt(params[0]) , Convert.toInt(params[1]), Convert.toInt(params[2]));
|
||||
});
|
||||
}
|
||||
//当模板参数渲染完后删除模板行
|
||||
if (StringUtils.isNotNull(templateRowIndex) && lastTemplateCellIndex == nowCellIndex) {
|
||||
table.removeRow(templateRowIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description:填充单元格内容
|
||||
* @author: wangjunsheng
|
||||
* @date: 2022/9/9 17:21
|
||||
* @param: cell
|
||||
* @param: text
|
||||
**/
|
||||
private void setCellText(XWPFTableCell cell, String text) {
|
||||
if (text.indexOf("\n") != -1) {
|
||||
XWPFRun run = cell.getParagraphs().get(0).createRun();
|
||||
String[] textArr = text.split("\n");
|
||||
for (int k = 0; k < textArr.length; k++) {
|
||||
if (k == 0) {
|
||||
run.setText(textArr[k].trim());
|
||||
} else {
|
||||
run.addBreak();
|
||||
run.setText(textArr[k].trim());
|
||||
}
|
||||
}
|
||||
} else {
|
||||
cell.setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 跨行合并
|
||||
*/
|
||||
public void mergeCellsVertically(XWPFTable table, int col, int fromRow, int toRow) {
|
||||
for (int rowIndex = fromRow; rowIndex <= toRow; rowIndex++) {
|
||||
XWPFTableCell cell = table.getRow(rowIndex).getCell(col);
|
||||
if (rowIndex == fromRow) {
|
||||
// 设置起始合并位置
|
||||
cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.RESTART);
|
||||
} else {
|
||||
// 设置继续合并位置
|
||||
cell.getCTTc().addNewTcPr().addNewVMerge().setVal(STMerge.CONTINUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 跨列合并
|
||||
*/
|
||||
public void mergeCellsHorizontal(XWPFTable table, int row, int fromCell, int toCell) {
|
||||
for (int cellIndex = fromCell; cellIndex <= toCell; cellIndex++) {
|
||||
XWPFTableCell cell = table.getRow(row).getCell(cellIndex);
|
||||
if (cellIndex == fromCell) {
|
||||
// 设置起始合并位置
|
||||
cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.RESTART);
|
||||
} else {
|
||||
// 设置继续合并位置
|
||||
cell.getCTTc().addNewTcPr().addNewHMerge().setVal(STMerge.CONTINUE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 获取当前标签所在列的索引
|
||||
* @Param: [eleTemplate]
|
||||
* @return: int
|
||||
* @Author: JiangYuQi
|
||||
* @Date: 2019/8/8 17:42
|
||||
*/
|
||||
private Integer getNowCellIndex(List<XWPFTableCell> templateCells, ElementTemplate eleTemplate) {
|
||||
Integer nowCellIndex = null;
|
||||
int index = 0;
|
||||
for (XWPFTableCell cell : templateCells) {
|
||||
if (cell.getText().contains(eleTemplate.getTagName())) {
|
||||
nowCellIndex = index;
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
return nowCellIndex;
|
||||
}
|
||||
|
||||
/**
|
||||
* @Description: 获取当前标签所在的table
|
||||
* @Param: [doc, eleTemplate]
|
||||
* @return: org.apache.poi.xwpf.usermodel.XWPFTable
|
||||
* @Author: JiangYuQi
|
||||
* @Date: 2019/8/8 17:42
|
||||
*/
|
||||
private List<XWPFTable> getTable(NiceXWPFDocument doc, ElementTemplate eleTemplate) {
|
||||
List<XWPFTable> resultTables = new ArrayList<XWPFTable>();
|
||||
List<XWPFTable> tables = doc.getTables();
|
||||
for (XWPFTable t : tables) {
|
||||
if (t.getText().contains(eleTemplate.getTagName())) {
|
||||
resultTables.add(t);
|
||||
}
|
||||
}
|
||||
return resultTables;
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制表格行XWPFTableRow格式
|
||||
*
|
||||
* @param target 待修改格式的XWPFTableRow
|
||||
* @param source 模板XWPFTableRow
|
||||
*/
|
||||
private void CopyTableRow(XWPFTableRow target, XWPFTableRow source) {
|
||||
|
||||
// 复制样式
|
||||
target.getCtRow().setTrPr(source.getCtRow().getTrPr());
|
||||
// 复制单元格
|
||||
for (int i = 0; i < source.getTableCells().size(); i++) {
|
||||
copyTableCell(target.getCell(i), source.getCell(i));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 复制单元格XWPFTableCell格式
|
||||
*
|
||||
* @param newTableCell 新创建的的单元格
|
||||
* @param templateTableCell 模板单元格
|
||||
* @author Juveniless
|
||||
* @date 2017年11月27日 下午3:41:02
|
||||
*/
|
||||
private void copyTableCell(XWPFTableCell newTableCell, XWPFTableCell templateTableCell) {
|
||||
// 列属性
|
||||
newTableCell.getCTTc().setTcPr(templateTableCell.getCTTc().getTcPr());
|
||||
// 删除目标 targetCell 所有文本段落
|
||||
for (int pos = 0; pos < newTableCell.getParagraphs().size(); pos++) {
|
||||
newTableCell.removeParagraph(pos);
|
||||
}
|
||||
// 添加新文本段落
|
||||
for (XWPFParagraph sp : templateTableCell.getParagraphs()) {
|
||||
XWPFParagraph targetP = newTableCell.addParagraph();
|
||||
copyParagraph(targetP, sp);
|
||||
if (templateTableCell.getText().indexOf("%") < 0) {
|
||||
newTableCell.setText(templateTableCell.getText());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制文本段落XWPFParagraph格式
|
||||
*
|
||||
* @param newParagraph 新创建的的段落
|
||||
* @param templateParagraph 模板段落
|
||||
* @author Juveniless
|
||||
* @date 2017年11月27日 下午3:43:08
|
||||
*/
|
||||
private void copyParagraph(XWPFParagraph newParagraph, XWPFParagraph templateParagraph) {
|
||||
// 设置段落样式
|
||||
newParagraph.getCTP().setPPr(templateParagraph.getCTP().getPPr());
|
||||
// 添加Run标签
|
||||
for (int pos = 0; pos < newParagraph.getRuns().size(); pos++) {
|
||||
newParagraph.removeRun(pos);
|
||||
|
||||
}
|
||||
for (XWPFRun s : templateParagraph.getRuns()) {
|
||||
XWPFRun targetrun = newParagraph.createRun();
|
||||
CopyRun(targetrun, s);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制文本节点run
|
||||
*
|
||||
* @param newRun 新创建的的文本节点
|
||||
* @param templateRun 模板文本节点
|
||||
* @author Juveniless
|
||||
* @date 2017年11月27日 下午3:47:17
|
||||
*/
|
||||
private void CopyRun(XWPFRun newRun, XWPFRun templateRun) {
|
||||
newRun.getCTR().setRPr(templateRun.getCTR().getRPr());
|
||||
}
|
||||
}
|
|
@ -57,19 +57,18 @@ public class PoiUtil {
|
|||
* @Author: JiangYuQi
|
||||
* @Date: 2019/8/8 11:54
|
||||
*/
|
||||
public static void createWordByWordTemplate(String wordTemplateFilePath, String saveWordFilePath, Map<String, Object> dataMap) throws Exception {
|
||||
|
||||
if (StringUtils.isNotEmpty(wordTemplateFilePath) && StringUtils.isNotEmpty(saveWordFilePath)&&saveWordFilePath.endsWith(".docx")) {
|
||||
public static void createWordByWordTemplate(String wordTemplateFilePath, String saveWordFilePath, Map<String, Object> dataMap) throws Exception
|
||||
{
|
||||
if (StringUtils.isNotEmpty(wordTemplateFilePath) && StringUtils.isNotEmpty(saveWordFilePath) && saveWordFilePath.endsWith(".docx")) {
|
||||
try {
|
||||
dataMap = formatMap(dataMap);
|
||||
Configure.ConfigureBuilder builder = Configure.newBuilder();
|
||||
builder.addPlugin('%', new MyTableRenderPolicy());
|
||||
//builder.addPlugin('&', new ShangWuBiaoTableRenderPolicy());
|
||||
XWPFTemplate template = XWPFTemplate.compile(wordTemplateFilePath, builder.build()).render(dataMap);
|
||||
FileOutputStream out = FileUtils.openOutputStream(FileUtils.getFile(saveWordFilePath));
|
||||
template.write(out);
|
||||
out.flush();
|
||||
out.close();
|
||||
XWPFTemplate template = XWPFTemplate.compile(wordTemplateFilePath);
|
||||
// 填充数据
|
||||
template.render(dataMap);
|
||||
// 输出生成的文档
|
||||
try (FileOutputStream out = new FileOutputStream(saveWordFilePath)) {
|
||||
template.write(out);
|
||||
}
|
||||
template.close();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
|
|
|
@ -1,191 +0,0 @@
|
|||
package com.yanzhu.manage.utils.pdf;
|
||||
|
||||
import com.deepoove.poi.policy.DynamicTableRenderPolicy;
|
||||
import com.deepoove.poi.util.TableTools;
|
||||
import com.yanzhu.common.core.utils.StringUtils;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFTable;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
|
||||
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* ////////////////////////////////////////////////////////////////////
|
||||
* // _ooOoo_
|
||||
* // o8888888o
|
||||
* // 88" . "88
|
||||
* // (| ^_^ |)
|
||||
* // O\ = /O
|
||||
* // ____/`---'\____
|
||||
* // .' \\| |// `.
|
||||
* // / \\||| : |||// \
|
||||
* // / _||||| -:- |||||- \
|
||||
* // | | \\\ - /// | |
|
||||
* // | \_| ''\---/'' | |
|
||||
* // \ .-\__ `-` ___/-. /
|
||||
* // ___`. .' /--.--\ `. . ___
|
||||
* // ."" '< `.___\_<|>_/___.' >'"".
|
||||
* // | | : `- \`.;`\ _ /`;.`/ - ` : | |
|
||||
* // \ \ `-. \_ __\ /__ _/ .-` / /
|
||||
* // ========`-.____`-.___\_____/___.-`____.-'========
|
||||
* // `=---='
|
||||
* // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
* // 佛祖保佑 永无BUG 永不修改
|
||||
* ////////////////////////////////////////////////////////////////////
|
||||
*
|
||||
* @ClassName MyJiShuBiaoTableRenderPolicy
|
||||
* @Description 技术标汇总表专用
|
||||
* @Author JiangYuQi
|
||||
* @DateTime 2021/6/8 16:50
|
||||
* @Version 1.0
|
||||
*/
|
||||
public class ShangWuBiaoTableRenderPolicy extends DynamicTableRenderPolicy {
|
||||
|
||||
// 列数
|
||||
int cellNum = 8;
|
||||
//行高
|
||||
int rowHeight = 100;
|
||||
|
||||
float cellWidths[]={9f,3f,3f,3f,3f,3f,3f}; //列宽单位CM
|
||||
|
||||
@Override
|
||||
public void render(XWPFTable table, Object data) {
|
||||
createTable2(table, data);
|
||||
}
|
||||
|
||||
private void createTable1(XWPFTable table, Object data) {
|
||||
if (StringUtils.isNull(data)) {
|
||||
return;
|
||||
}
|
||||
Map<String, Object> shangWuBiaoTableMap = (Map<String, Object>) data;
|
||||
|
||||
table.removeRow(0);
|
||||
/**************************创建表头-开始********************************/
|
||||
|
||||
TableTools.widthTable(table,cellWidths);
|
||||
|
||||
XWPFTableRow titleNewRow = table.insertNewTableRow(0);
|
||||
table.setCellMargins(5 ,2,5,2);
|
||||
titleNewRow.setHeight(rowHeight);
|
||||
for (int i = 0; i < cellNum; i++) {
|
||||
XWPFTableCell cell = titleNewRow.createCell();
|
||||
cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
|
||||
|
||||
switch (i) {
|
||||
case 0:
|
||||
cell.setText("序号");
|
||||
break;
|
||||
case 1:
|
||||
cell.setText("供应商名称");
|
||||
break;
|
||||
case 2:
|
||||
cell.setText("最终报价");
|
||||
break;
|
||||
case 3:
|
||||
cell.setText("价格扣除");
|
||||
break;
|
||||
case 4:
|
||||
cell.setText("评审报价");
|
||||
break;
|
||||
case 5:
|
||||
cell.setText("最终报价基准");
|
||||
break;
|
||||
case 6:
|
||||
cell.setText("最终报价得分");
|
||||
break;
|
||||
case 7:
|
||||
cell.setText("报价总分");
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
/**************************创建表头-结束********************************/
|
||||
|
||||
/**************************创建公司商务标行并赋值-开始********************************/
|
||||
if (StringUtils.isNotEmpty(shangWuBiaoTableMap)) {
|
||||
|
||||
List<Map<String, Object>> gongSiShangWuBiaoList = (List<Map<String, Object>>) shangWuBiaoTableMap.get("gongSiShangWuBiaoList");
|
||||
if (StringUtils.isNotEmpty(gongSiShangWuBiaoList)) {
|
||||
int rowIndex = 1; //行所以
|
||||
for (Map<String, Object> gongSiShangWuBiao : gongSiShangWuBiaoList) {
|
||||
XWPFTableRow newRow = table.insertNewTableRow(rowIndex);
|
||||
newRow.setHeight(rowHeight);
|
||||
for (int i = 0; i < cellNum; i++) {
|
||||
XWPFTableCell cell = newRow.addNewTableCell();
|
||||
cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
|
||||
|
||||
switch (i) {
|
||||
case 0:
|
||||
cell.setText(rowIndex + "");
|
||||
break;
|
||||
case 1://公司名称
|
||||
cell.setText(toStirng(gongSiShangWuBiao.get("GSMC")));
|
||||
break;
|
||||
case 2: //最终报价
|
||||
cell.setText(toStirng(gongSiShangWuBiao.get("ZZBJ"))+"元");
|
||||
break;
|
||||
case 3: //价格扣除
|
||||
cell.setText(toStirng(gongSiShangWuBiao.get("JGKC")));
|
||||
break;
|
||||
case 4: //评审报价
|
||||
cell.setText(toStirng(gongSiShangWuBiao.get("PSBJ"))+"元");
|
||||
break;
|
||||
case 5: //最终报价基准
|
||||
break;
|
||||
case 6: //最终报价得分
|
||||
cell.setText(toStirng(gongSiShangWuBiao.get("ZZBJDF")));
|
||||
break;
|
||||
case 7: //报价总分
|
||||
cell.setText(toStirng(gongSiShangWuBiao.get("BJDF")));
|
||||
break;
|
||||
}
|
||||
}
|
||||
rowIndex++;
|
||||
}
|
||||
//合并最终报价基准行
|
||||
TableTools.mergeCellsVertically(table, 5, 1, rowIndex - 1);
|
||||
//最终报价基准赋值
|
||||
XWPFTableCell zzbjjzCell = table.getRow(1).getCell(5);
|
||||
zzbjjzCell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
|
||||
zzbjjzCell.setText(toStirng(shangWuBiaoTableMap.get("ZZBJJZ"))+"元");
|
||||
}
|
||||
}
|
||||
/**************************创建公司商务标行并赋值-开始********************************/
|
||||
}
|
||||
|
||||
private void createTable2(XWPFTable table, Object data) {
|
||||
if (StringUtils.isNull(data)) {
|
||||
return;
|
||||
}
|
||||
Map<String, Object> ZZBJJZMap = (Map<String, Object>) data;
|
||||
|
||||
String ZZBJJZ = toStirng(ZZBJJZMap.get("ZZBJJZ"));
|
||||
int GSSIZE = ZZBJJZMap.get("GSSIZE")==null?0:Integer.parseInt(toStirng(ZZBJJZMap.get("GSSIZE")));
|
||||
//合并最终报价基准行
|
||||
TableTools.mergeCellsVertically(table, 5, 1, GSSIZE+1);
|
||||
|
||||
XWPFTableCell cell = table.getRow(2).getCell(5);
|
||||
cell.setVerticalAlignment(XWPFTableCell.XWPFVertAlign.CENTER);
|
||||
cell.setText(ZZBJJZ);
|
||||
}
|
||||
|
||||
/***
|
||||
* @param obj
|
||||
* @return java.lang.String
|
||||
* @exception
|
||||
* @Author JiangYuQi
|
||||
* @Description 转字符串
|
||||
* @Date 2022/6/15 16:27
|
||||
**/
|
||||
private String toStirng(Object obj)
|
||||
{
|
||||
if(obj!=null && "null".equals(obj)){
|
||||
return "";
|
||||
}else{
|
||||
return obj.toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,146 +1,19 @@
|
|||
{
|
||||
"default": {
|
||||
"heTongBianHao":"HT12345678910112",
|
||||
"yiFangMingCheng":"张三丰",
|
||||
"yiFangDaiMa": "61042719900625****",
|
||||
"sflb":"身份证号",
|
||||
"heTongShiChang":"12",
|
||||
"ksn": "2023",
|
||||
"ksy":"02",
|
||||
"ksr": "13",
|
||||
"jsn": "2024",
|
||||
"jsy": "02",
|
||||
"jsr": "14",
|
||||
"youHuiBiLi":79,
|
||||
"buChongTiaoKuan": "",
|
||||
"jfgz":"[serviceKeyWord]",
|
||||
"yfgz":"[userKeyWord]",
|
||||
"jfqdsj": "[待甲方签订]",
|
||||
"yfqdsj": "[待乙方签订]",
|
||||
"lianXiDianHua": "181****8536",
|
||||
"muQianJingYing":"",
|
||||
"yinHangKaHao":"",
|
||||
"kaiHuHang":"",
|
||||
"kaiHuHangHangHao":"",
|
||||
"daiXiaoFeiBiLi":"",
|
||||
"sheBeiXingHao":"",
|
||||
"sheBeiBianHao":"",
|
||||
"sheBeiYaJin":"",
|
||||
"yaJinPiaoHao":"",
|
||||
"zhanDianXiangXiDiZhi":"",
|
||||
"cnsKeyWord": "[cnsKeyWord]",
|
||||
"cnsKeyDate": "[cnsKeyDate]",
|
||||
"jfzg": "[JFZG]"
|
||||
},
|
||||
"tzzht": {
|
||||
"zhanDianBianHao": "6124211",
|
||||
"yiFangMingCheng":"张三丰",
|
||||
"yiFangXingBie":"男",
|
||||
"yiFangDaiMa":"61042719900625****",
|
||||
"chuShengRiQi":"1990-06-25",
|
||||
"huKouSuoZaiDi": "陕西省彬县*********",
|
||||
"zhuSuoDiZhi": "陕西省西安市三桥街道******",
|
||||
"tongXunDiZhi": "陕西省西安市三桥街道******",
|
||||
"yFLianXiDianHua": "18740352322",
|
||||
"businessAddress": "陕西省西安市三桥街道******127号A座101",
|
||||
"yFYouBian": "",
|
||||
"shiMingCheng": "西安市",
|
||||
"city":"西安",
|
||||
"quXianMingCheng": "未央",
|
||||
"xiangXiDiZhi": "陕西省西安市三桥街道******127号A座101",
|
||||
"daiXiaoLeiXingMingCheng": "乐透数字型、即开型福利彩票",
|
||||
"daiXiaoQiXian":1,
|
||||
"ksn": "2023",
|
||||
"ksy":"02",
|
||||
"ksr": "13",
|
||||
"jsn": "2024",
|
||||
"jsy": "02",
|
||||
"jsr": "14",
|
||||
"sz":"[SZ]",
|
||||
"jfgz":"[serviceKeyWord]",
|
||||
"jfdbr":"[jfdbrKeyWord]",
|
||||
"jfwtdlr":"[jfwtdlrKeyWord]",
|
||||
"yfgz":"[userKeyWord]",
|
||||
"yfyj": "[yfyjKeyWord]",
|
||||
"jfqdsj": "[待甲方签订]",
|
||||
"yfqdsj": "[待乙方签订]",
|
||||
"cnsKeyWord": "[cnsKeyWord]",
|
||||
"cnsKeyDate": "[cnsKeyDate]",
|
||||
"LTSZDXF": "",
|
||||
"JKYXDXF": "",
|
||||
"JFWYJBFB": "",
|
||||
"JFWYJZGBFB": "",
|
||||
"JFZZWYJBFB": "",
|
||||
"JFZZWYJZGBFB": "",
|
||||
"YFWYJBFB": "",
|
||||
"YFWYJZGBFB": ""
|
||||
},
|
||||
"zsght": {
|
||||
"heTongBianHao":"HT12345678910112",
|
||||
"yiFangMingCheng":"张三丰",
|
||||
"yiFangDaiMa": "61042719900625****",
|
||||
"sflb":"身份证号",
|
||||
"heTongShiChang":12,
|
||||
"ksn": "2023",
|
||||
"ksy":"02",
|
||||
"ksr": "13",
|
||||
"jsn": "2024",
|
||||
"jsy": "02",
|
||||
"jsr": "14",
|
||||
"sheBeiYaJin":"1000",
|
||||
"youHuiBiLi":91.5,
|
||||
"jfgz":"[serviceKeyWord]",
|
||||
"yfgz":"[userKeyWord]",
|
||||
"jfqdsj": "[待甲方签订]",
|
||||
"yfqdsj": "[待乙方签订]",
|
||||
"lianXiDianHua":"181891385**",
|
||||
"muQianJingYing":"",
|
||||
"yinHangKaHao":"",
|
||||
"kaiHuHang":"",
|
||||
"zhanDianXiangXiDiZhi":"",
|
||||
"kaiHuHangHangHao":"",
|
||||
"daiXiaoFeiBiLi":"",
|
||||
"cnsKeyWord": "[cnsKeyWord]",
|
||||
"cnsKeyDate": "[cnsKeyDate]",
|
||||
"sheBeiXingHao":"",
|
||||
"sheBeiBianHao":"",
|
||||
"yaJinPiaoHao":"",
|
||||
"hangYeLeiXing":"",
|
||||
"xiaoShouDiZhi":""
|
||||
},
|
||||
"bjzdht": {
|
||||
"heTongBianHao":"HT12345678910112",
|
||||
"yiFangMingCheng":"张三丰",
|
||||
"yiFangDaiMa": "61042719900625****",
|
||||
"sflb":"身份证号",
|
||||
"heTongShiChang":12,
|
||||
"ksn": "2023",
|
||||
"ksy":"02",
|
||||
"ksr": "13",
|
||||
"jsn": "2024",
|
||||
"jsy": "02",
|
||||
"jsr": "14",
|
||||
"sheBeiYaJin":"1000",
|
||||
"youHuiBiLi":91.5,
|
||||
"jfgz":"[serviceKeyWord]",
|
||||
"yfgz":"[userKeyWord]",
|
||||
"jfqdsj": "[待甲方签订]",
|
||||
"yfqdsj": "[待乙方签订]",
|
||||
"lianXiDianHua":"181891385**",
|
||||
"muQianJingYing":"",
|
||||
"yinHangKaHao":"",
|
||||
"kaiHuHang":"",
|
||||
"zhanDianXiangXiDiZhi":"",
|
||||
"kaiHuHangHangHao":"",
|
||||
"daiXiaoFeiBiLi":"",
|
||||
"cnsKeyWord": "[cnsKeyWord]",
|
||||
"cnsKeyDate": "[cnsKeyDate]",
|
||||
"sheBeiXingHao":"",
|
||||
"sheBeiBianHao":"",
|
||||
"yaJinPiaoHao":"",
|
||||
"hangYeLeiXing":"",
|
||||
"xiaoShouDiZhi":""
|
||||
"fName": "张三丰",
|
||||
"fSex": "男",
|
||||
"fAge": "32",
|
||||
"fCode": "61042719900625****",
|
||||
"fIllnessStatus": "无",
|
||||
"fSupIllnessStatus": "无",
|
||||
"fCraftPost": "木工",
|
||||
"fDate": "2025年01月01日",
|
||||
"fGroupName": "普通木工班组1",
|
||||
"fGrade": "高中",
|
||||
"fUserPicture": "https://guangzhou.sxyanzhu.com/YZLJXM/profile/static/userPicture.jpg",
|
||||
"fUserSign": "https://guangzhou.sxyanzhu.com/YZLJXM/profile/static/userSign.png",
|
||||
"fGroupSign": "[GROUP-SIGN]",
|
||||
"fProjectSign": "[PROJECT-SIGN]",
|
||||
"fCompanySign": "[COMPANY-SIGN]"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -3,7 +3,7 @@ import {
|
|||
} from '../utils/request'
|
||||
|
||||
// 查询项目信息详细
|
||||
export function getProjectInfo(id) {
|
||||
export function findProjectInfo(id) {
|
||||
return request({
|
||||
url: '/manage/wxApi/findProject/' + id,
|
||||
method: 'get'
|
||||
|
@ -33,4 +33,21 @@ export function findProSubDeptsUser(proId, phoneNumber) {
|
|||
url: '/manage/wxApi/findProSubDeptsUser?proId=' + proId + '&phoneNumber=' + phoneNumber,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 查询项目参建单位人员
|
||||
export function findProSubDeptsUserById(id) {
|
||||
return request({
|
||||
url: '/manage/wxApi/findProSubDeptsUser/' + id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增项目参建单位人员
|
||||
export function registerSubDeptsUsers(data) {
|
||||
return request({
|
||||
url: '/manage/wxApi/registerSubDeptsUsers',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
|
@ -1,5 +1,13 @@
|
|||
import {request} from '../utils/request'
|
||||
|
||||
// 查询数据字典缓存
|
||||
export function findDictCache(key) {
|
||||
return request({
|
||||
url: '/manage/wxApi/findDictCache/'+key,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 获取用户详细信息
|
||||
export function getUserInfo() {
|
||||
return request({
|
||||
|
|
|
@ -52,11 +52,6 @@ App({
|
|||
})
|
||||
}
|
||||
this.autoUpdate();
|
||||
|
||||
//防卡死定时器
|
||||
setInterval(() => {
|
||||
wx.hideLoading();
|
||||
}, 30000);
|
||||
|
||||
/**
|
||||
* 初始化页面未登录时跳转到登录页
|
||||
|
@ -80,6 +75,15 @@ App({
|
|||
|
||||
},
|
||||
|
||||
/**
|
||||
* 安全加载
|
||||
*/
|
||||
securityLoading(){
|
||||
setTimeout(() => {
|
||||
wx.hideLoading();
|
||||
}, 60000);
|
||||
},
|
||||
|
||||
//页面弹窗
|
||||
toast: function (msg, type) {
|
||||
wx.showToast({
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -17,7 +17,7 @@
|
|||
</view>
|
||||
</view>
|
||||
<view wx:if="{{userPhoneNumber && active==0}}">
|
||||
<view wx:if="{{signType=='1'}}">
|
||||
<view wx:if="{{userPost=='1'}}">
|
||||
<view class="header_title">
|
||||
<view class="header_title_row">
|
||||
<view class="header_name">{{title}}</view>
|
||||
|
@ -92,7 +92,7 @@
|
|||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">进入场地时间</view>
|
||||
<view class="inspect_info_content">
|
||||
<voucher-date counts="5" maxDate="{{maxDate}}" placeholder="请选择进入场地时间" time="{{form.useDates}}" bindchange="onInputTime1"></voucher-date>
|
||||
<voucher-date counts="5" maxDate="{{maxDate}}" placeholder="请选择进入场地时间" time="{{form.useDates}}" bindchange="onInputTime0"></voucher-date>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
|
@ -159,15 +159,21 @@
|
|||
<input placeholder="请填写委托代理人联系电话" placeholder-style="color:#6777aa;" bindinput="subDeptLeaderPhone" model:value="{{form.subDeptLeaderPhone}}" disabled class="inspect_input_fill_in" maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">代理人文化程度</view>
|
||||
<view class="inspect_info_content">
|
||||
<voucher-select columns="{{eduCationalType}}" placeholder="请选择代理人文化程度" bindchange="onLeaderDegreeGrade" selectValue="{{form.leaderDegreeGrade}}"></voucher-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="problem_submit_to">
|
||||
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="submitSubDeptValues">下 一 步</view>
|
||||
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="submitSubDeptValues">信 息 登 记</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view wx:if="{{signType=='2'}}">
|
||||
<view wx:if="{{userPost=='2'}}">
|
||||
<view class="header_title">
|
||||
<view class="header_title_row">
|
||||
<view class="header_name">{{title}}</view>
|
||||
|
@ -180,13 +186,13 @@
|
|||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">单位名称</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写单位名称" placeholder-style="color:#6777aa;" model:value="{{form.subDeptName}}" class="inspect_input_fill_in" disabled />
|
||||
<input placeholder="请填写单位名称" placeholder-style="color:#6777aa;" model:value="{{parForm.subDeptName}}" class="inspect_input_fill_in" disabled />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">岗位类型</view>
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">岗位级别</view>
|
||||
<view class="inspect_info_content">
|
||||
<voucher-select columns="{{craftPostList}}" placeholder="请选择岗位类型" selectValue="{{form.craftPost}}"></voucher-select>
|
||||
<voucher-select columns="{{userPostList}}" placeholder="请选择岗位级别" selectValue="{{form.userPost}}"></voucher-select>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
|
@ -195,14 +201,14 @@
|
|||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">个人身份证正面
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload7" iconClass="in-zcard-click" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadCardImgPos" iconClass="in-zcard-click" limit="{{limit}}" fileUrlArray="{{form.user.cardImgPos}}"></file-uploader>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="12">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">个人身份证反面
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload8" iconClass="in-fcard-click" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadCardImgInv" iconClass="in-fcard-click" limit="{{limit}}" fileUrlArray="{{form.user.cardImgInv}}"></file-uploader>
|
||||
</view>
|
||||
</van-col>
|
||||
</van-row>
|
||||
|
@ -212,7 +218,7 @@
|
|||
<text style="font-size: small; color: antiquewhite;">[进场扫脸,请上传清晰照片]</text>
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadUserPicture" limit="{{limit}}" fileUrlArray="{{form.user.userPicture}}"></file-uploader>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
|
@ -220,66 +226,65 @@
|
|||
<text style="font-size: small; color: antiquewhite;">[需加盖劳务单位的公章委托书照片]</text>
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadDeptPower" limit="{{limit}}" fileUrlArray="{{form.subDeptPowerPath}}"></file-uploader>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">项目经理姓名</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写项目经理姓名" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写项目经理姓名" placeholder-style="color:#6777aa;" bindinput="inputUserName" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.nickName}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">项目经理身份证号</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写项目经理身份证号" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写项目经理身份证号" placeholder-style="color:#6777aa;" bindinput="inputUserCode" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.cardCode}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">项目经理联系电话</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写项目经理联系电话" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写项目经理联系电话" placeholder-style="color:#6777aa;" model:value="{{form.phoneNumber}}" disabled class="inspect_input_fill_in" maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">籍贯民族</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写籍贯民族" placeholder-style="color:#6777aa;" bindinput="inputOriginNative" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.nativePlace}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">籍贯地址</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写籍贯地址" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">详细地址</view>
|
||||
<view class="inspect_info_content">
|
||||
<textarea class="add_textarea" placeholder="请填写详细地址" placeholder-style="color:#6777aa;" maxlength="64" bindblur="onSubDeptCode" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">所属民族</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写所属民族" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<textarea class="add_textarea" placeholder="请填写籍贯地址" placeholder-style="color:#6777aa;" maxlength="64" bindblur="inputOriginAddress" model:value="{{form.user.address}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">紧急联系人</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写紧急联系人" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写紧急联系人" placeholder-style="color:#6777aa;" bindinput="inputUrgentUser" class="inspect_input_fill_in" model:value="{{form.user.emergencyContact}}" maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">紧急联系人电话</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写紧急联系人电话" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写紧急联系人电话" placeholder-style="color:#6777aa;" bindinput="inputUrgentUserPhone" class="inspect_input_fill_in" model:value="{{form.user.contactPhone}}" maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">文化程度</view>
|
||||
<view class="inspect_info_content">
|
||||
<voucher-select columns="{{eduCationalType}}" placeholder="请选择文化程度" bindchange="onDegreeGrade" selectValue="{{form.degreeGrade}}"></voucher-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="problem_submit_to">
|
||||
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="submitSubUserValues">下 一 步</view>
|
||||
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="submitSubUserValues">信 息 登 记</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view wx:if="{{signType=='3'}}">
|
||||
<view wx:if="{{userPost=='3'}}">
|
||||
<view class="header_title">
|
||||
<view class="header_title_row">
|
||||
<view class="header_name">{{title}}</view>
|
||||
|
@ -292,13 +297,13 @@
|
|||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">单位名称</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写单位名称" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" disabled maxlength="30" />
|
||||
<input placeholder="请填写单位名称" placeholder-style="color:#6777aa;" model:value="{{parForm.subDeptName}}" class="inspect_input_fill_in" disabled />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">岗位类型</view>
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">岗位级别</view>
|
||||
<view class="inspect_info_content">
|
||||
<voucher-select columns="{{craftPostList}}" placeholder="请选择岗位类型" selectValue="{{form.craftPost}}"></voucher-select>
|
||||
<voucher-select columns="{{userPostList}}" placeholder="请选择岗位级别" selectValue="{{form.userPost}}"></voucher-select>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
|
@ -306,10 +311,10 @@
|
|||
<view class="inspect_info_content">
|
||||
<van-row>
|
||||
<van-col span="8">
|
||||
<voucher-select columns="{{craftPostList}}" placeholder="请选择岗位类型" selectValue="{{form.craftPost}}"></voucher-select>
|
||||
<voucher-select columns="{{craftTypeList}}" bindchange="onChageCraftType" placeholder="请选择工种类型" selectValue="{{form.craftType}}"></voucher-select>
|
||||
</van-col>
|
||||
<van-col span="16">
|
||||
<voucher-select columns="{{craftPostList}}" placeholder="请选择岗位类型" selectValue="{{form.craftPost}}"></voucher-select>
|
||||
<voucher-select columns="{{craftPostList}}" bindchange="onChageCraftPost" placeholder="请选择工种岗位" selectValue="{{form.craftPost}}"></voucher-select>
|
||||
</van-col>
|
||||
</van-row>
|
||||
</view>
|
||||
|
@ -332,14 +337,14 @@
|
|||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">个人身份证正面
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload" iconClass="in-zcard-click" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadCardImgPos" iconClass="in-zcard-click" limit="{{limit}}" fileUrlArray="{{form.user.cardImgPos}}"></file-uploader>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="12">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">个人身份证反面
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload" iconClass="in-fcard-click" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadCardImgInv" iconClass="in-fcard-click" limit="{{limit}}" fileUrlArray="{{form.user.cardImgInv}}"></file-uploader>
|
||||
</view>
|
||||
</van-col>
|
||||
</van-row>
|
||||
|
@ -349,7 +354,7 @@
|
|||
<text style="font-size: small; color: antiquewhite;">[进场扫脸,请上传清晰照片]</text>
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadUserPicture" limit="{{limit}}" fileUrlArray="{{form.user.userPicture}}"></file-uploader>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
|
@ -357,72 +362,66 @@
|
|||
<text style="font-size: small; color: antiquewhite;">[需加盖劳务单位的公章委托书照片]</text>
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadDeptPower" limit="{{limit}}" fileUrlArray="{{form.subDeptPowerPath}}"></file-uploader>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">姓名</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写姓名" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写姓名" placeholder-style="color:#6777aa;" bindinput="inputUserName" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.nickName}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">身份证号</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写身份证号" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写身份证号" placeholder-style="color:#6777aa;" bindinput="inputUserCode" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.cardCode}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">联系电话</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写联系电话" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写联系电话" placeholder-style="color:#6777aa;" model:value="{{form.phoneNumber}}" disabled class="inspect_input_fill_in" maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">出生日期</view>
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">籍贯民族</view>
|
||||
<view class="inspect_info_content">
|
||||
<voucher-date counts="5" maxDate="{{maxDate}}" placeholder="请选择出生日期" bindchange="onEndTime"></voucher-date>
|
||||
<input placeholder="请填写籍贯民族" placeholder-style="color:#6777aa;" bindinput="inputOriginNative" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.nativePlace}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">籍贯地址</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写籍贯地址" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">详细地址</view>
|
||||
<view class="inspect_info_content">
|
||||
<textarea class="add_textarea" placeholder="请填写详细地址" placeholder-style="color:#6777aa;" maxlength="64" bindblur="onSubDeptCode" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">所属民族</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写所属民族" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<textarea class="add_textarea" placeholder="请填写籍贯地址" placeholder-style="color:#6777aa;" maxlength="64" bindblur="inputOriginAddress" model:value="{{form.user.address}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">紧急联系人</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写紧急联系人" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写紧急联系人" placeholder-style="color:#6777aa;" bindinput="inputUrgentUser" class="inspect_input_fill_in" model:value="{{form.user.emergencyContact}}" maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">紧急联系人电话</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写紧急联系人电话" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写紧急联系人电话" placeholder-style="color:#6777aa;" bindinput="inputUrgentUserPhone" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.contactPhone}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">文化程度</view>
|
||||
<view class="inspect_info_content">
|
||||
<voucher-select columns="{{eduCationalType}}" placeholder="请选择文化程度" bindchange="onDegreeGrade" selectValue="{{form.degreeGrade}}"></voucher-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="problem_submit_to">
|
||||
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="submitSubUserValues">下 一 步</view>
|
||||
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="submitSubUserValues">信 息 登 记</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view wx:if="{{signType=='4'}}">
|
||||
<view wx:if="{{userPost=='4'}}">
|
||||
<view class="header_title">
|
||||
<view class="header_title_row">
|
||||
<view class="header_name">{{title}}</view>
|
||||
|
@ -435,19 +434,19 @@
|
|||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">单位名称</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写单位名称" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" disabled maxlength="30" />
|
||||
<input placeholder="请填写单位名称" placeholder-style="color:#6777aa;" model:value="{{parForm.subDeptName}}" class="inspect_input_fill_in" disabled maxlength="30" disabled />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">班组名称</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写班组名称" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" disabled maxlength="30" />
|
||||
<input placeholder="请填写班组名称" placeholder-style="color:#6777aa;" model:value="{{parForm.subDeptGroupName}}" class="inspect_input_fill_in" disabled maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">班组长姓名</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写班组长姓名" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" disabled maxlength="30" />
|
||||
<input placeholder="请填写班组长姓名" placeholder-style="color:#6777aa;" model:value="{{parForm.user.nickName}}" class="inspect_input_fill_in" disabled maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
|
@ -456,14 +455,14 @@
|
|||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">个人身份证正面
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload" iconClass="in-zcard-click" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadCardImgPos" iconClass="in-zcard-click" limit="{{limit}}" fileUrlArray="{{form.user.cardImgPos}}"></file-uploader>
|
||||
</view>
|
||||
</van-col>
|
||||
<van-col span="12">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">个人身份证反面
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload" iconClass="in-fcard-click" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadCardImgInv" iconClass="in-fcard-click" limit="{{limit}}" fileUrlArray="{{form.user.cardImgInv}}"></file-uploader>
|
||||
</view>
|
||||
</van-col>
|
||||
</van-row>
|
||||
|
@ -473,79 +472,81 @@
|
|||
<text style="font-size: small; color: antiquewhite;">[进场扫脸,请上传清晰照片]</text>
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<file-uploader bindimages="fileUpload" limit="{{limit}}"></file-uploader>
|
||||
<file-uploader bindimages="fileUploadUserPicture" limit="{{limit}}" fileUrlArray="{{form.user.userPicture}}"></file-uploader>
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">姓名</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写姓名" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写姓名" placeholder-style="color:#6777aa;" bindinput="inputUserName" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.nickName}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">身份证号</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写身份证号" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写身份证号" placeholder-style="color:#6777aa;" bindinput="inputUserCode" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.cardCode}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">联系电话</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写联系电话" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写联系电话" placeholder-style="color:#6777aa;" model:value="{{form.phoneNumber}}" disabled class="inspect_input_fill_in" maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">出生日期</view>
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">籍贯民族</view>
|
||||
<view class="inspect_info_content">
|
||||
<voucher-date counts="5" maxDate="{{maxDate}}" placeholder="请选择出生日期" bindchange="onEndTime"></voucher-date>
|
||||
<input placeholder="请填写籍贯民族" placeholder-style="color:#6777aa;" bindinput="inputOriginNative" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.nativePlace}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">籍贯地址</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写籍贯地址" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">详细地址</view>
|
||||
<view class="inspect_info_content">
|
||||
<textarea class="add_textarea" placeholder="请填写详细地址" placeholder-style="color:#6777aa;" maxlength="64" bindblur="onSubDeptCode" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">所属民族</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写所属民族" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<textarea class="add_textarea" placeholder="请填写籍贯地址" placeholder-style="color:#6777aa;" maxlength="64" bindblur="inputOriginAddress" model:value="{{form.user.address}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">紧急联系人</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写紧急联系人" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写紧急联系人" placeholder-style="color:#6777aa;" bindinput="inputUrgentUser" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.emergencyContact}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">紧急联系人电话</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写紧急联系人电话" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写紧急联系人电话" placeholder-style="color:#6777aa;" bindinput="inputUrgentUserPhone" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.contactPhone}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">银行开户网点</view>
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">开户银行名称</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写银行开户网点" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写开户银行名称" placeholder-style="color:#6777aa;" bindinput="inputBankName" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.bankName}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">开户银行网点
|
||||
<text style="font-size: small; color: antiquewhite;">[开户银行地址]</text>
|
||||
</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写开户银行网点" placeholder-style="color:#6777aa;" bindinput="inputBankOffice" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.bankOffice}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">工资银行卡号</view>
|
||||
<view class="inspect_info_content">
|
||||
<input placeholder="请填写工资银行卡号" placeholder-style="color:#6777aa;" bindinput="inputProName" class="inspect_input_fill_in" maxlength="30" />
|
||||
<input placeholder="请填写工资银行卡号" placeholder-style="color:#6777aa;" bindinput="inputBankCardNo" class="inspect_input_fill_in" maxlength="30" model:value="{{form.user.bankCardNo}}" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="inspect_info_list">
|
||||
<view class="inspect_info_title" style="padding: 20rpx 0 10rpx;">文化程度</view>
|
||||
<view class="inspect_info_content">
|
||||
<voucher-select columns="{{eduCationalType}}" placeholder="请选择文化程度" bindchange="onDegreeGrade" selectValue="{{form.degreeGrade}}"></voucher-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<view class="problem_submit_to">
|
||||
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="submitSubUserValues">下 一 步</view>
|
||||
<view class="problem_submit_to_btn problem_submit_to_save" bindtap="submitSubUserValues">信 息 登 记</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
|
@ -845,7 +846,25 @@
|
|||
</view>
|
||||
</view>
|
||||
<view class="class_btnall">
|
||||
<view wx:if="{{signPath==''}}" class="problem_submit_to_btn_3 {{signTime>0?'':'problem_submit_to_sign'}}" bindtap="startSignFiles">{{signTime>0?'阅 读 安 全 ':'签 署 '}}承 诺 书<text wx:if="{{signTime>0}}">({{signTime}})</text></view>
|
||||
<view wx:if="{{signPath==''}}" class="problem_submit_to_btn_3 {{signTime>0?'':'problem_submit_to_sign'}}" bindtap="startSignFiles">{{signTime>0?'阅 读 ':'签 署 安 全 '}}承 诺 书<text wx:if="{{signTime>0}}">({{signTime}})</text></view>
|
||||
<view wx:if="{{signPath!=''}}" class="problem_submit_to_btn_3 problem_submit_to_save_s" bindtap="submitSignFiles">确 认 并 提 交 承 诺 书</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view wx:if="{{userPhoneNumber && active==100}}">
|
||||
<view class="header_title">
|
||||
<view class="header_title_row">
|
||||
<view class="header_name">{{title}}</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="max_content">
|
||||
<project-select init="{{initProject}}"></project-select>
|
||||
<van-steps steps="{{ flowNodes }}" active="{{ active }}" />
|
||||
<view class="kaoshimianban_8">
|
||||
<view class="kaoshimianban_9">
|
||||
<jyq-result wx:if="{{form.approveStatus!='100' && form.approveStatus!='11'}}" iconPath="https://guangzhou.sxyanzhu.com/YZLJXM/profile/icon/dd.png" title="信息审核中" description="您的信息已登记完成,相关人员正在审核您的信息,请耐心等待。" actionText="下 载 承 诺 书" bind:action="downloadSignetFiles" />
|
||||
<jyq-result wx:if="{{form.approveStatus=='100'}}" iconPath="https://guangzhou.sxyanzhu.com/YZLJXM/profile/icon/cg.png" title="恭喜,审核通过" description="您的信息已登记完成。" actionText="下 载 承 诺 书" bind:action="downloadSignetFiles" />
|
||||
<jyq-result wx:if="{{busExamInfos.passMark>busExamInfos.userMark}}" iconPath="https://guangzhou.sxyanzhu.com/YZLJXM/profile/icon/sb.png" title="很遗憾!审核未通过" description="您的信息已登记完成,但未审核通过。"/>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
|
@ -209,6 +209,18 @@
|
|||
border-radius: 15rpx;
|
||||
}
|
||||
|
||||
.kaoshimianban_8 {
|
||||
width: 100%;
|
||||
padding-top: 120rpx;
|
||||
margin-bottom: 120rpx;
|
||||
font-size: 26rpx;
|
||||
border-radius: 15rpx;
|
||||
}
|
||||
|
||||
.kaoshimianban_9 {
|
||||
padding: 30rpx;
|
||||
}
|
||||
|
||||
.doc {
|
||||
border: 1px solid #1e2336;
|
||||
background-color: #1e2336;
|
||||
|
|
|
@ -9,9 +9,9 @@
|
|||
"miniprogram": {
|
||||
"list": [
|
||||
{
|
||||
"name": "",
|
||||
"name": "pages/project_qr/index",
|
||||
"pathName": "pages/project_qr/index",
|
||||
"query": "QRPID=116&signType=1",
|
||||
"query": "QRPID=116&SIGID=3&PARID=16",
|
||||
"launchMode": "default",
|
||||
"scene": null
|
||||
},
|
||||
|
|
|
@ -21,8 +21,9 @@ function doRequest(url, method = 'GET', data, header = {}) {
|
|||
data.dataSource = "1";
|
||||
wx.showLoading({
|
||||
mask: true,
|
||||
title: url == config.noSecuritys[1] ? '登录中' : '加载中'
|
||||
title: url == config.noSecuritys[1] ? '登录中' : '正在处理'
|
||||
})
|
||||
app.securityLoading();
|
||||
}
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.request({
|
||||
|
@ -156,6 +157,50 @@ export function securityFileUpload(file) {
|
|||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 签名文件上传
|
||||
* 支持裁剪
|
||||
* 支持压缩
|
||||
* @param {*} file
|
||||
*/
|
||||
export function securitySignFileUpload(file) {
|
||||
wx.showLoading({
|
||||
mask: true,
|
||||
title: '正在上传签名'
|
||||
})
|
||||
return new Promise((resolve, reject) => {
|
||||
wx.uploadFile({
|
||||
url: config.baseUrl + '/file/NoSecurity/signUpload', // 上传的服务器接口地址
|
||||
filePath: file,
|
||||
header: {
|
||||
"Content-Type": "application/x-www-form-urlencoded;charset=UTF-8"
|
||||
},
|
||||
name: "file", //上传的所需字段,后端提供
|
||||
success: (res) => {
|
||||
// 上传完成操作
|
||||
wx.hideLoading()
|
||||
let resJson = JSON.parse(res.data)
|
||||
const code = resJson.code || 200
|
||||
if (code != 200) {
|
||||
app.toast(resJson.msg);
|
||||
setTimeout(() => {
|
||||
resolve(resJson);
|
||||
}, 800)
|
||||
resolve(resJson);
|
||||
} else {
|
||||
resolve(resJson);
|
||||
}
|
||||
},
|
||||
fail: (error) => {
|
||||
wx.hideLoading()
|
||||
//上传失败:修改pedding为reject
|
||||
app.toast("网络出错,上传失败")
|
||||
reject(error)
|
||||
}
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
export function request(options) {
|
||||
if(options.method=='get' && options.params){
|
||||
options.url = options.url+"?"+options.params;
|
||||
|
|
|
@ -18,4 +18,9 @@ onMounted(() => {
|
|||
width: 192px;
|
||||
}
|
||||
}
|
||||
.pagination-container {
|
||||
.el-pagination {
|
||||
right: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
|
@ -100,6 +100,7 @@ const data = reactive({
|
|||
formData:{
|
||||
id: "",
|
||||
name: "",
|
||||
proId: "",
|
||||
documentation: "",
|
||||
processCategory: "",
|
||||
initiator: "",
|
||||
|
@ -175,7 +176,7 @@ function initFormOnChanged(element) {
|
|||
activatedElement.source &&
|
||||
activatedElement.source.type.indexOf("StartEvent") === -1
|
||||
);
|
||||
formVisible.value = elementType.value === "UserTask" || elementType.value === "StartEvent";
|
||||
//formVisible.value = elementType.value === "UserTask" || elementType.value === "StartEvent";
|
||||
}
|
||||
|
||||
/** 获取执行监听器数量 */
|
||||
|
|
|
@ -260,6 +260,11 @@
|
|||
"type": "Boolean",
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"name": "proId",
|
||||
"isAttr": true,
|
||||
"type": "String"
|
||||
},
|
||||
{
|
||||
"name": "processCategory",
|
||||
"isAttr": true,
|
||||
|
|
|
@ -184,6 +184,7 @@ function getProcess() {
|
|||
return {
|
||||
id: element.id,
|
||||
name: element.name,
|
||||
proId: element.proId,
|
||||
category: element.processCategory
|
||||
}
|
||||
}
|
||||
|
@ -198,15 +199,15 @@ function getProcessElement() {
|
|||
|
||||
// 保存xml
|
||||
async function saveXML(download = false) {
|
||||
try {
|
||||
const {xml} = await modelerStore.getModeler.saveXML({format: true})
|
||||
if (download) {
|
||||
downloadFile(`${getProcessElement().name}.bpmn20.xml`, xml, 'application/xml')
|
||||
}
|
||||
return xml
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
try {
|
||||
const {xml} = await modelerStore.getModeler.saveXML({format: true})
|
||||
if (download) {
|
||||
downloadFile(`${getProcessElement().name}.bpmn20.xml`, xml, 'application/xml')
|
||||
}
|
||||
return xml
|
||||
} catch (err) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
|
||||
// 在线查看xml
|
||||
|
@ -235,6 +236,10 @@ async function saveImg(type = 'svg', download = false) {
|
|||
// 保存流程图
|
||||
async function save() {
|
||||
const process = getProcess()
|
||||
if(!process.id || !process.name || !process.proId || !process.category){
|
||||
proxy.$modal.msgWarning("流程表单验证失败!");
|
||||
return false;
|
||||
}
|
||||
const xml = await saveXML()
|
||||
const svg = await saveImg()
|
||||
const result = {process, xml, svg}
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
<el-form :model="bpmnFormData" label-width="80px" :rules="rules" status-icon>
|
||||
<!--流程的基础属性-->
|
||||
<template v-if="bpmnFormData.$type === 'bpmn:Process'">
|
||||
<el-form-item label="项目单位" prop="deptId">
|
||||
<el-select v-model="bpmnFormData.deptId" placeholder="请选择项目单位" @change="changeProject()">
|
||||
<el-form-item label="项目单位" prop="proId">
|
||||
<el-select v-model="bpmnFormData.proId" placeholder="请选择项目单位" @change="updateElementPro" style="width:100%">
|
||||
<el-option
|
||||
v-for="dict in deptOptions"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
v-for="opt in proOptions"
|
||||
:key="opt.id"
|
||||
:label="opt.projectName"
|
||||
:value="opt.id"
|
||||
></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
@ -28,7 +28,7 @@
|
|||
<!--流程的基础属性-->
|
||||
<template v-if="bpmnFormData.$type === 'bpmn:Process'">
|
||||
<el-form-item label="流程分类" prop="processCategory">
|
||||
<el-select v-model="bpmnFormData.processCategory" placeholder="请选择流程分类" @change="updateElementTask('processCategory')">
|
||||
<el-select v-model="bpmnFormData.processCategory" placeholder="请选择流程分类" @change="updateElementTask('processCategory')" style="width:100%">
|
||||
<el-option
|
||||
v-for="dict in sys_process_category"
|
||||
:key="dict.value"
|
||||
|
@ -50,16 +50,16 @@
|
|||
<script setup name="CommonPanel">
|
||||
import {StrUtil} from '@/utils/StrUtil'
|
||||
import useModelerStore from '@/store/modules/modeler'
|
||||
// import { listDept } from "@/api/system/dept";
|
||||
// import { listProjectInfo } from "@/api/manage/projectInfo";
|
||||
import { listProProjectInfo } from "@/api/manage/proProjectInfo";
|
||||
const modelerStore = useModelerStore()
|
||||
import useUserStore from '@/store/modules/user'
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { sys_process_category } = proxy.useDict('sys_process_category');
|
||||
// 项目单位数据
|
||||
const deptOptions = ref([]);
|
||||
// 所属项目数据
|
||||
const projectOptions = ref([]);
|
||||
|
||||
const userStore = useUserStore()
|
||||
// 项目数据
|
||||
const proOptions = ref([]);
|
||||
|
||||
const data = reactive({
|
||||
rules:{
|
||||
|
@ -69,12 +69,12 @@ const data = reactive({
|
|||
name: [
|
||||
{ required: true, message: '节点名称不能为空', trigger: 'blur' },
|
||||
],
|
||||
deptId: [
|
||||
proId: [
|
||||
{ required: true, message: '项目单位不能为空', trigger: 'change' },
|
||||
],
|
||||
projectId: [
|
||||
{ required: true, message: '所属项目不能为空', trigger: 'change' },
|
||||
],
|
||||
processCategory: [
|
||||
{ required: true, message: '流程分类不能为空', trigger: 'change' },
|
||||
]
|
||||
},
|
||||
bpmnFormData: {}
|
||||
});
|
||||
|
@ -102,18 +102,23 @@ function resetTaskForm() {
|
|||
bpmnFormData.value = JSON.parse(JSON.stringify(modelerStore.getBpmnElement.businessObject));
|
||||
}
|
||||
|
||||
function updateElementPro() {
|
||||
modelerStore.getModeling.updateProperties(modelerStore.getBpmnElement, { 'proId': bpmnFormData.value.proId });
|
||||
}
|
||||
|
||||
function updateElementTask(key) {
|
||||
const taskAttr = Object.create(null);
|
||||
taskAttr[key] = bpmnFormData.value[key] || null;
|
||||
modelerStore.getModeling.updateProperties(modelerStore.getBpmnElement, taskAttr);
|
||||
console.log("taskAttr",modelerStore.getBpmnElement)
|
||||
}
|
||||
|
||||
/** 初始化数据 */
|
||||
// function initDepts(){
|
||||
// listDept({}).then(response => {
|
||||
// deptOptions.value = response.rows;
|
||||
// });
|
||||
// }
|
||||
function initDatas(){
|
||||
listProProjectInfo({pageSize:1000,comId:userStore.currentComId}).then(response => {
|
||||
proOptions.value = response.rows;
|
||||
});
|
||||
}
|
||||
|
||||
//initDepts();
|
||||
initDatas();
|
||||
</script>
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<el-button type="primary" @click="dialogVisible = true">查看</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item label="回路特性">
|
||||
<el-select v-model="loopCharacteristics" @change="changeLoopCharacteristicsType">
|
||||
<el-select v-model="loopCharacteristics" @change="changeLoopCharacteristicsType" style="width:100%">
|
||||
<!--bpmn:MultiInstanceLoopCharacteristics-->
|
||||
<el-option label="并行多重事件" value="ParallelMultiInstance" />
|
||||
<el-option label="时序多重事件" value="SequentialMultiInstance" />
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<el-switch v-model="bpmnFormData.async" active-text="是" inactive-text="否" @change="updateElementTask('async')"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="用户类型">
|
||||
<el-select v-model="bpmnFormData.userType" placeholder="选择人员" @change="updateUserType">
|
||||
<el-select v-model="bpmnFormData.userType" placeholder="选择人员" @change="updateUserType" style="width:100%">
|
||||
<el-option
|
||||
v-for="item in userTypeOption"
|
||||
:key="item.value"
|
||||
|
|
|
@ -20,6 +20,21 @@
|
|||
<el-table-column type="selection" width="50" align="center" reserve-selection/>
|
||||
<el-table-column label="角色编号" prop="roleId" width="120" />
|
||||
<el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" width="150" />
|
||||
<el-table-column label="项目单位" align="center">
|
||||
<template #default="scope">
|
||||
<div v-if="scope.row.roleId!==2" class="flex gap-2">
|
||||
<el-tag
|
||||
v-for="item in scope.row.roleDeptList"
|
||||
effect="dark"
|
||||
>
|
||||
{{ item.deptName }}
|
||||
</el-tag>
|
||||
</div>
|
||||
<div v-else>
|
||||
-
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="权限字符" prop="roleKey" :show-overflow-tooltip="true" width="150" />
|
||||
<el-table-column label="显示顺序" prop="roleSort" width="100" />
|
||||
<el-table-column label="创建时间" align="center" prop="createTime">
|
||||
|
@ -60,10 +75,12 @@
|
|||
|
||||
<script setup name="FlowRole">
|
||||
import { listRole } from "@/api/system/role";
|
||||
import useUserStore from '@/store/modules/user'
|
||||
|
||||
const router = useRouter();
|
||||
const { proxy } = getCurrentInstance();
|
||||
|
||||
const userStore = useUserStore()
|
||||
const roleList = ref([]);
|
||||
const open = ref(false);
|
||||
const loading = ref(true);
|
||||
|
@ -134,6 +151,7 @@ watch(roleList, newValue => {
|
|||
/** 查询角色列表 */
|
||||
function getList() {
|
||||
loading.value = true;
|
||||
queryParams.value.projectId = userStore.currentProId;
|
||||
listRole(queryParams.value).then(response => {
|
||||
roleList.value = response.rows;
|
||||
total.value = response.total;
|
||||
|
|
|
@ -1,14 +1,32 @@
|
|||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
|
||||
<el-form-item label="名称" prop="name">
|
||||
<el-form-item label="项目名称" prop="proName" v-if="!userStore.currentProId">
|
||||
<el-input
|
||||
v-model="queryParams.name"
|
||||
placeholder="请输入名称"
|
||||
v-model="queryParams.proName"
|
||||
placeholder="请输入项目名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程名称" prop="name">
|
||||
<el-input
|
||||
v-model="queryParams.name"
|
||||
placeholder="请输入流程名称"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="流程分类" prop="category" v-if="false">
|
||||
<el-select v-model="queryParams.category" placeholder="请选择流程分类" clearable>
|
||||
<el-option
|
||||
v-for="dict in sys_process_category"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
|
@ -46,40 +64,50 @@
|
|||
</el-alert>
|
||||
<el-table v-loading="loading" fit :data="definitionList" border @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="流程编号" align="center" prop="deploymentId" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="流程标识" align="center" prop="flowKey" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="流程分类" align="center" prop="category" />
|
||||
<el-table-column label="流程名称" align="center" width="120" :show-overflow-tooltip="true">
|
||||
<el-table-column label="流程编号" align="center" prop="deploymentId" width="120"/>
|
||||
<el-table-column label="所属公司" align="center" prop="deptName" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" :show-overflow-tooltip="true"/>
|
||||
<el-table-column label="流程名称" align="center" :show-overflow-tooltip="true">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleReadImage(scope.row.deploymentId)">
|
||||
<span>{{ scope.row.name }}</span>
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="业务表单" align="center" :show-overflow-tooltip="true">
|
||||
<el-table-column label="流程标识" align="center" prop="flowKey" width="150" :show-overflow-tooltip="true" />
|
||||
<el-table-column label="流程分类" align="center" prop="category" width="150" :show-overflow-tooltip="true">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="sys_process_category" :value="scope.row.category"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column label="业务表单" align="center" :show-overflow-tooltip="true">
|
||||
<template #default="scope">
|
||||
<el-button v-if="scope.row.formId" link type="primary" @click="handleForm(scope.row.formId)">
|
||||
<span>{{ scope.row.formName }}</span>
|
||||
</el-button>
|
||||
<label v-else>暂无表单</label>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="流程版本" align="center">
|
||||
</el-table-column> -->
|
||||
<el-table-column label="流程版本" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<el-tag effect="dark">v{{ scope.row.version }}</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="状态" align="center">
|
||||
<el-table-column label="流程状态" align="center" width="80">
|
||||
<template #default="scope">
|
||||
<el-tag effect="dark" v-if="scope.row.suspensionState === 1">激活</el-tag>
|
||||
<el-tag type="danger" effect="dark" v-if="scope.row.suspensionState === 2">挂起</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="部署时间" align="center" prop="deploymentTime" width="180"/>
|
||||
<el-table-column label="操作" width="300" fixed="right" class-name="small-padding fixed-width">
|
||||
<el-table-column label="部署时间" align="center" prop="deploymentTime" width="160">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.deploymentTime, '{y}-{m}-{d} {h}:{i}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="操作" width="180" fixed="right" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" @click="handleLoadXml(scope.row)" icon="Position" size="small">设计</el-button>
|
||||
<el-button link type="primary" @click="handleAddForm(scope.row)" icon="Promotion" size="small" v-if="scope.row.formId == null">配置主表单</el-button>
|
||||
<!-- <el-button link type="primary" @click="handleAddForm(scope.row)" icon="Promotion" size="small" v-if="scope.row.formId == null">配置主表单</el-button> -->
|
||||
<el-button link type="danger" @click="handleUpdateSuspensionState(scope.row)" icon="VideoPause" size="small" v-if="scope.row.suspensionState === 1">挂起</el-button>
|
||||
<el-button link type="success" @click="handleUpdateSuspensionState(scope.row)" icon="VideoPlay" size="small" v-if="scope.row.suspensionState === 2">激活</el-button>
|
||||
<el-button link type="primary" @click="handleDelete(scope.row)" icon="delete" size="small" v-hasPermi="['system:deployment:remove']">删除</el-button>
|
||||
|
@ -156,9 +184,12 @@ import {
|
|||
import { getForm, addDeployForm ,listForm } from "@/api/flowable/form";
|
||||
import BpmnViewer from '@/components/Process/viewer';
|
||||
import router from "@/router";
|
||||
import useUserStore from '@/store/modules/user'
|
||||
|
||||
const { proxy } = getCurrentInstance();
|
||||
const { sys_process_category } = proxy.useDict('sys_process_category');
|
||||
|
||||
const userStore = useUserStore()
|
||||
const loading = ref(true);
|
||||
// 选中数组
|
||||
const ids = ref([]);
|
||||
|
@ -200,6 +231,7 @@ const data = reactive({
|
|||
pageSize: 10,
|
||||
name: null,
|
||||
category: null,
|
||||
proName: null,
|
||||
key: null,
|
||||
tenantId: null,
|
||||
deployTime: null,
|
||||
|
|
|
@ -96,6 +96,7 @@ function getXmlData(deployId) {
|
|||
/** 保存xml */
|
||||
function save(data) {
|
||||
const params = {
|
||||
proId: data.process.proId,
|
||||
name: data.process.name,
|
||||
category: data.process.category,
|
||||
xml: Base64.encode(data.xml)
|
||||
|
|
|
@ -88,9 +88,15 @@
|
|||
<el-table-column label="所属公司" align="center" prop="comName" />
|
||||
<el-table-column label="项目名称" align="center" prop="projectName" />
|
||||
<el-table-column label="模板名称" align="center" prop="temName" />
|
||||
<el-table-column label="模板类型" align="center" prop="temType" width="120">
|
||||
<el-table-column label="模板类型" align="center" prop="temType" width="150">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="sys_is_del" :value="scope.row.isDel"/>
|
||||
<dict-tag :options="bas_tem_type" :value="scope.row.temType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建人" align="center" prop="createBy" />
|
||||
<el-table-column label="修改时间" align="center" prop="updateTime" width="160">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="启用状态" align="center" prop="isDel" width="100">
|
||||
|
@ -105,12 +111,6 @@
|
|||
</el-tooltip>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="创建人" align="center" prop="createBy" />
|
||||
<el-table-column label="修改时间" align="center" prop="updateTime" width="160">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d} {h}:{i}') }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="预览模板" align="center" prop="temPath" width="120">
|
||||
<template #default="scope">
|
||||
<el-button link type="primary" icon="Position" @click="handlePreview(scope.row)" v-hasPermi="['manage:basTemplate:query']">预览模板</el-button>
|
||||
|
@ -158,7 +158,7 @@
|
|||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="模板文件" prop="temPath">
|
||||
<file-upload v-model="form.temPath" :limit="1" :fileType="['doc']" :fileSize="50" />
|
||||
<file-upload v-model="form.temPath" :limit="1" :fileType="['docx']" :fileSize="50" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
|
|
|
@ -125,7 +125,7 @@
|
|||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="角色编号" align="center" prop="roleId" width="120" />
|
||||
<el-table-column label="角色名称" align="center" prop="roleName" :show-overflow-tooltip="true" width="150" />
|
||||
<el-table-column label="所属部门" align="center">
|
||||
<el-table-column label="项目单位" align="center">
|
||||
<template #default="scope">
|
||||
<div v-if="scope.row.roleId!==2" class="flex gap-2">
|
||||
<el-tag
|
||||
|
@ -162,16 +162,16 @@
|
|||
</el-table-column>
|
||||
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
|
||||
<template #default="scope">
|
||||
<el-tooltip content="修改" placement="top" v-if="scope.row.roleId !== 1 && (scope.row.roleId !== 2 && !isAdmin)">
|
||||
<el-tooltip content="修改" placement="top" v-if="scope.row.roleId !== 1 && (scope.row.roleId !== 2 && isAdmin)">
|
||||
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:role:edit']"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top" v-if="scope.row.roleId !== 1 && (scope.row.roleId !== 2 && !isAdmin)">
|
||||
<el-tooltip content="删除" placement="top" v-if="scope.row.roleId !== 1 && (scope.row.roleId !== 2 && isAdmin)">
|
||||
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:role:remove']"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="数据权限" placement="top" v-if="scope.row.roleId !== 1 && isAdmin">
|
||||
<el-button link type="primary" icon="CircleCheck" @click="handleDataScope(scope.row)" v-hasPermi="['system:role:edit']"></el-button>
|
||||
</el-tooltip>
|
||||
<el-tooltip content="分配用户" placement="top" v-if="scope.row.roleId !== 1 && (scope.row.roleId !== 2 && !isAdmin)">
|
||||
<el-tooltip content="分配用户" placement="top" v-if="scope.row.roleId !== 1 && (scope.row.roleId !== 2 && isAdmin)">
|
||||
<el-button link type="primary" icon="User" @click="handleAuthUser(scope.row)" v-hasPermi="['system:role:edit']"></el-button>
|
||||
</el-tooltip>
|
||||
<el-button v-if="scope.row.roleId==1" type="primary" link disabled>不可修改</el-button>
|
||||
|
@ -207,7 +207,7 @@
|
|||
<el-form-item label="角色名称" prop="roleName">
|
||||
<el-input v-model="form.roleName" placeholder="请输入角色名称" />
|
||||
</el-form-item>
|
||||
<el-form-item prop="roleKey" label="权限字符" v-if="form.roleId">
|
||||
<el-form-item prop="roleKey" label="权限字符" v-if="!form.roleId">
|
||||
<!-- <template #label>
|
||||
<span>
|
||||
<el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)" placement="top">
|
||||
|
|
Loading…
Reference in New Issue