Selaa lähdekoodia

需求匹配跟进接口开发

anderx 7 vuotta sitten
vanhempi
commit
68052eefec

+ 4 - 4
GeneratorConfig.xml

@@ -2,15 +2,15 @@
 <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 <generatorConfiguration>
 
-  <!-- <classPathEntry location="E:/mysql-connector-java-5.1.40.jar" /> -->
-  <classPathEntry location="E:/mysql-connector-java-5.1.40.jar" />
+  <!-- <classPathEntry location="C:/Users/Administrator/.dbeaver-drivers/maven/maven-central/mysql/mysql-connector-java-5.1.44.jar" /> -->
+   <classPathEntry location="C:/Users/Administrator/.dbeaver-drivers/maven/maven-central/mysql/mysql-connector-java-5.1.44.jar" />
   <context id="context1">	
     <jdbcConnection connectionURL="jdbc:mysql://192.168.1.213:3306/aft" 
     	driverClass="com.mysql.jdbc.Driver" password="123456" userId="dev" />
     <javaModelGenerator targetPackage="com.goafanti.common.model" targetProject="AFT" />
     <sqlMapGenerator targetPackage="com.goafanti.common.mapper" targetProject="AFT" />
     <javaClientGenerator targetPackage="com.goafanti.common.dao" targetProject="AFT" type="XMLMAPPER" />
-    <table schema="aft" tableName="t_order"/> 
-    <table schema="aft" tableName="contract"/> 
+    <table schema="aft" tableName="demand_follow"/> 
+    <table schema="aft" tableName="demand_follow_detail"/> 
   </context>
 </generatorConfiguration>

+ 78 - 0
src/main/java/com/goafanti/common/dao/DemandFollowDetailMapper.java

@@ -0,0 +1,78 @@
+package com.goafanti.common.dao;
+
+import com.goafanti.common.model.DemandFollowDetail;
+import com.goafanti.common.model.DemandFollowDetailExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface DemandFollowDetailMapper {
+    /**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	long countByExample(DemandFollowDetailExample example);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int deleteByExample(DemandFollowDetailExample example);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int deleteByPrimaryKey(String id);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int insert(DemandFollowDetail record);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int insertSelective(DemandFollowDetail record);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	List<DemandFollowDetail> selectByExample(DemandFollowDetailExample example);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	DemandFollowDetail selectByPrimaryKey(String id);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int updateByExampleSelective(@Param("record") DemandFollowDetail record,
+			@Param("example") DemandFollowDetailExample example);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int updateByExample(@Param("record") DemandFollowDetail record,
+			@Param("example") DemandFollowDetailExample example);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int updateByPrimaryKeySelective(DemandFollowDetail record);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int updateByPrimaryKey(DemandFollowDetail record);
+
+	List<DemandFollowDetail> selectDemandFollowDetail(String id);
+}

+ 75 - 0
src/main/java/com/goafanti/common/dao/DemandFollowMapper.java

@@ -0,0 +1,75 @@
+package com.goafanti.common.dao;
+
+import com.goafanti.common.model.DemandFollow;
+import com.goafanti.common.model.DemandFollowExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface DemandFollowMapper {
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	long countByExample(DemandFollowExample example);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int deleteByExample(DemandFollowExample example);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int deleteByPrimaryKey(String id);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int insert(DemandFollow record);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int insertSelective(DemandFollow record);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	List<DemandFollow> selectByExample(DemandFollowExample example);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	DemandFollow selectByPrimaryKey(String id);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int updateByExampleSelective(@Param("record") DemandFollow record, @Param("example") DemandFollowExample example);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int updateByExample(@Param("record") DemandFollow record, @Param("example") DemandFollowExample example);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int updateByPrimaryKeySelective(DemandFollow record);
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	int updateByPrimaryKey(DemandFollow record);
+}

+ 2 - 0
src/main/java/com/goafanti/common/dao/DemandMapper.java

@@ -63,4 +63,6 @@ public interface DemandMapper {
 	DemandListBo selectAppByPrimaryKey(String id);
 
 	List<DemandRecommended> getAppHomeRecommended();
+
+	Demand selectDemandFollow(String id);
 }

+ 54 - 0
src/main/java/com/goafanti/common/enums/DemandFollowResult.java

@@ -0,0 +1,54 @@
+package com.goafanti.common.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.commons.lang3.StringUtils;
+
+public enum DemandFollowResult {
+	FOLLOW(0, "跟进中"),
+	RESULT(1, "已匹配"),
+	OTHER(5, "其他");
+
+	private DemandFollowResult(Integer code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	private static Map<Integer, DemandFollowResult> status = new HashMap<Integer, DemandFollowResult>();
+
+	static {
+		for (DemandFollowResult value : DemandFollowResult.values()) {
+			status.put(value.getCode(), value);
+		}
+	}
+
+	public static DemandFollowResult getStatus(Integer code) {
+		if (containsType(code)) {
+			return status.get(code);
+		}
+		return OTHER;
+	}
+
+	public static DemandFollowResult getStatus(String code) {
+		if (StringUtils.isNumeric(code)) {
+			return getStatus(Integer.parseInt(code));
+		}
+		return OTHER;
+	}
+
+	public static boolean containsType(Integer code) {
+		return status.containsKey(code);
+	}
+
+	private Integer	code;
+	private String	desc;
+
+	public Integer getCode() {
+		return code;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+}

+ 293 - 0
src/main/java/com/goafanti/common/mapper/DemandFollowDetailMapper.xml

@@ -0,0 +1,293 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.goafanti.common.dao.DemandFollowDetailMapper">
+  <resultMap id="BaseResultMap" type="com.goafanti.common.model.DemandFollowDetail">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="demand_follow_id" jdbcType="VARCHAR" property="demandFollowId" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="result" jdbcType="INTEGER" property="result" />
+    <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    id, demand_follow_id, remarks, result, create_time
+  </sql>
+  <select id="selectByExample" parameterType="com.goafanti.common.model.DemandFollowDetailExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from demand_follow_detail
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    from demand_follow_detail
+    where id = #{id,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    delete from demand_follow_detail
+    where id = #{id,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.goafanti.common.model.DemandFollowDetailExample">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    delete from demand_follow_detail
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.goafanti.common.model.DemandFollowDetail">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    insert into demand_follow_detail (id, demand_follow_id, remarks, 
+      result, create_time)
+    values (#{id,jdbcType=VARCHAR}, #{demandFollowId,jdbcType=VARCHAR}, #{remarks,jdbcType=VARCHAR}, 
+      #{result,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP})
+  </insert>
+  <insert id="insertSelective" parameterType="com.goafanti.common.model.DemandFollowDetail">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    insert into demand_follow_detail
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="demandFollowId != null">
+        demand_follow_id,
+      </if>
+      <if test="remarks != null">
+        remarks,
+      </if>
+      <if test="result != null">
+        result,
+      </if>
+      <if test="createTime != null">
+        create_time,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=VARCHAR},
+      </if>
+      <if test="demandFollowId != null">
+        #{demandFollowId,jdbcType=VARCHAR},
+      </if>
+      <if test="remarks != null">
+        #{remarks,jdbcType=VARCHAR},
+      </if>
+      <if test="result != null">
+        #{result,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null">
+        #{createTime,jdbcType=TIMESTAMP},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.goafanti.common.model.DemandFollowDetailExample" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    select count(*) from demand_follow_detail
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    update demand_follow_detail
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=VARCHAR},
+      </if>
+      <if test="record.demandFollowId != null">
+        demand_follow_id = #{record.demandFollowId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.remarks != null">
+        remarks = #{record.remarks,jdbcType=VARCHAR},
+      </if>
+      <if test="record.result != null">
+        result = #{record.result,jdbcType=INTEGER},
+      </if>
+      <if test="record.createTime != null">
+        create_time = #{record.createTime,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    update demand_follow_detail
+    set id = #{record.id,jdbcType=VARCHAR},
+      demand_follow_id = #{record.demandFollowId,jdbcType=VARCHAR},
+      remarks = #{record.remarks,jdbcType=VARCHAR},
+      result = #{record.result,jdbcType=INTEGER},
+      create_time = #{record.createTime,jdbcType=TIMESTAMP}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.DemandFollowDetail">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    update demand_follow_detail
+    <set>
+      <if test="demandFollowId != null">
+        demand_follow_id = #{demandFollowId,jdbcType=VARCHAR},
+      </if>
+      <if test="remarks != null">
+        remarks = #{remarks,jdbcType=VARCHAR},
+      </if>
+      <if test="result != null">
+        result = #{result,jdbcType=INTEGER},
+      </if>
+      <if test="createTime != null">
+        create_time = #{createTime,jdbcType=TIMESTAMP},
+      </if>
+    </set>
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.DemandFollowDetail">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    update demand_follow_detail
+    set demand_follow_id = #{demandFollowId,jdbcType=VARCHAR},
+      remarks = #{remarks,jdbcType=VARCHAR},
+      result = #{result,jdbcType=INTEGER},
+      create_time = #{createTime,jdbcType=TIMESTAMP}
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+  <select id="selectDemandFollowDetail" parameterType="String" resultType="com.goafanti.demand.bo.DemandFollowDetailListBo">
+    select 
+     id, demand_follow_id as demandFollowId, remarks, result,create_time as createTime
+    from demand_follow_detail
+    where demand_follow_id= #{id,jdbcType=VARCHAR}
+    order by create_time desc  
+  </select>
+</mapper>

+ 391 - 0
src/main/java/com/goafanti/common/mapper/DemandFollowMapper.xml

@@ -0,0 +1,391 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.goafanti.common.dao.DemandFollowMapper">
+  <resultMap id="BaseResultMap" type="com.goafanti.common.model.DemandFollow">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="demand_id" jdbcType="VARCHAR" property="demandId" />
+    <result column="organization" jdbcType="VARCHAR" property="organization" />
+    <result column="contacts" jdbcType="VARCHAR" property="contacts" />
+    <result column="contact_mobile" jdbcType="VARCHAR" property="contactMobile" />
+    <result column="result" jdbcType="INTEGER" property="result" />
+    <result column="last_follow_time" jdbcType="TIMESTAMP" property="lastFollowTime" />
+    <result column="sources" jdbcType="VARCHAR" property="sources" />
+    <result column="remark" jdbcType="VARCHAR" property="remark" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    id, demand_id, organization, contacts, contact_mobile, result, last_follow_time, 
+    sources, remark
+  </sql>
+  <select id="selectByExample" parameterType="com.goafanti.common.model.DemandFollowExample" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from demand_follow
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    select 
+    <include refid="Base_Column_List" />
+    from demand_follow
+    where id = #{id,jdbcType=VARCHAR}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.String">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    delete from demand_follow
+    where id = #{id,jdbcType=VARCHAR}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.goafanti.common.model.DemandFollowExample">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    delete from demand_follow
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" parameterType="com.goafanti.common.model.DemandFollow">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    insert into demand_follow (id, demand_id, organization, 
+      contacts, contact_mobile, result, 
+      last_follow_time, sources, remark
+      )
+    values (#{id,jdbcType=VARCHAR}, #{demandId,jdbcType=VARCHAR}, #{organization,jdbcType=VARCHAR}, 
+      #{contacts,jdbcType=VARCHAR}, #{contactMobile,jdbcType=VARCHAR}, #{result,jdbcType=INTEGER}, 
+      #{lastFollowTime,jdbcType=TIMESTAMP}, #{sources,jdbcType=VARCHAR}, #{remark,jdbcType=VARCHAR}
+      )
+  </insert>
+  <insert id="insertSelective" parameterType="com.goafanti.common.model.DemandFollow">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    insert into demand_follow
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        id,
+      </if>
+      <if test="demandId != null">
+        demand_id,
+      </if>
+      <if test="organization != null">
+        organization,
+      </if>
+      <if test="contacts != null">
+        contacts,
+      </if>
+      <if test="contactMobile != null">
+        contact_mobile,
+      </if>
+      <if test="result != null">
+        result,
+      </if>
+      <if test="lastFollowTime != null">
+        last_follow_time,
+      </if>
+      <if test="sources != null">
+        sources,
+      </if>
+      <if test="remark != null">
+        remark,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="id != null">
+        #{id,jdbcType=VARCHAR},
+      </if>
+      <if test="demandId != null">
+        #{demandId,jdbcType=VARCHAR},
+      </if>
+      <if test="organization != null">
+        #{organization,jdbcType=VARCHAR},
+      </if>
+      <if test="contacts != null">
+        #{contacts,jdbcType=VARCHAR},
+      </if>
+      <if test="contactMobile != null">
+        #{contactMobile,jdbcType=VARCHAR},
+      </if>
+      <if test="result != null">
+        #{result,jdbcType=INTEGER},
+      </if>
+      <if test="lastFollowTime != null">
+        #{lastFollowTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="sources != null">
+        #{sources,jdbcType=VARCHAR},
+      </if>
+      <if test="remark != null">
+        #{remark,jdbcType=VARCHAR},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.goafanti.common.model.DemandFollowExample" resultType="java.lang.Long">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    select count(*) from demand_follow
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    update demand_follow
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=VARCHAR},
+      </if>
+      <if test="record.demandId != null">
+        demand_id = #{record.demandId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.organization != null">
+        organization = #{record.organization,jdbcType=VARCHAR},
+      </if>
+      <if test="record.contacts != null">
+        contacts = #{record.contacts,jdbcType=VARCHAR},
+      </if>
+      <if test="record.contactMobile != null">
+        contact_mobile = #{record.contactMobile,jdbcType=VARCHAR},
+      </if>
+      <if test="record.result != null">
+        result = #{record.result,jdbcType=INTEGER},
+      </if>
+      <if test="record.lastFollowTime != null">
+        last_follow_time = #{record.lastFollowTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="record.sources != null">
+        sources = #{record.sources,jdbcType=VARCHAR},
+      </if>
+      <if test="record.remark != null">
+        remark = #{record.remark,jdbcType=VARCHAR},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    update demand_follow
+    set id = #{record.id,jdbcType=VARCHAR},
+      demand_id = #{record.demandId,jdbcType=VARCHAR},
+      organization = #{record.organization,jdbcType=VARCHAR},
+      contacts = #{record.contacts,jdbcType=VARCHAR},
+      contact_mobile = #{record.contactMobile,jdbcType=VARCHAR},
+      result = #{record.result,jdbcType=INTEGER},
+      last_follow_time = #{record.lastFollowTime,jdbcType=TIMESTAMP},
+      sources = #{record.sources,jdbcType=VARCHAR},
+      remark = #{record.remark,jdbcType=VARCHAR}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.DemandFollow">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    update demand_follow
+    <set>
+      <if test="demandId != null">
+        demand_id = #{demandId,jdbcType=VARCHAR},
+      </if>
+      <if test="organization != null">
+        organization = #{organization,jdbcType=VARCHAR},
+      </if>
+      <if test="contacts != null">
+        contacts = #{contacts,jdbcType=VARCHAR},
+      </if>
+      <if test="contactMobile != null">
+        contact_mobile = #{contactMobile,jdbcType=VARCHAR},
+      </if>
+      <if test="result != null">
+        result = #{result,jdbcType=INTEGER},
+      </if>
+      <if test="lastFollowTime != null">
+        last_follow_time = #{lastFollowTime,jdbcType=TIMESTAMP},
+      </if>
+      <if test="sources != null">
+        sources = #{sources,jdbcType=VARCHAR},
+      </if>
+      <if test="remark != null">
+        remark = #{remark,jdbcType=VARCHAR},
+      </if>
+    </set>
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.DemandFollow">
+    <!--
+      WARNING - @mbg.generated
+      This element is automatically generated by MyBatis Generator, do not modify.
+      This element was generated on Thu Mar 22 14:44:52 CST 2018.
+    -->
+    update demand_follow
+    set demand_id = #{demandId,jdbcType=VARCHAR},
+      organization = #{organization,jdbcType=VARCHAR},
+      contacts = #{contacts,jdbcType=VARCHAR},
+      contact_mobile = #{contactMobile,jdbcType=VARCHAR},
+      result = #{result,jdbcType=INTEGER},
+      last_follow_time = #{lastFollowTime,jdbcType=TIMESTAMP},
+      sources = #{sources,jdbcType=VARCHAR},
+      remark = #{remark,jdbcType=VARCHAR}
+    where id = #{id,jdbcType=VARCHAR}
+  </update>
+  
+  <select id="findDemandFollowListByPage" parameterType="String" resultType="com.goafanti.demand.bo.DemandFollowListBo">
+      select df.id ,df.demand_id as demandId,df.organization,df.contacts,df.contact_mobile contactMobile,df.remark,
+  df.`result`,df.last_follow_time as lastFollowTime,d.name,d.employer_name as employerName,df.sources,
+  d.employer_contacts_mobile as employerContactsMobile,d.employer_contacts_mailbox as employerContactsMailbox,
+  d.create_time as createTime, a.name as adminName 
+    from  demand_follow df
+    left join demand d on df.demand_id=d.id
+    left join admin a on d.tech_broker_id=a.id 
+    where df.demand_id=#{id,jdbcType=VARCHAR}
+    order by d.serial_number desc
+  	<if test="page_sql!=null">
+		${page_sql}
+	</if>
+  </select>
+  
+  <select id="findDemandFollowCount" parameterType="String" resultType="java.lang.Integer">
+   select count(0)
+     from  demand_follow df
+    left join demand d on df.demand_id=d.id
+    left join admin a on d.tech_broker_id=a.id 
+    where df.demand_id=#{id,jdbcType=VARCHAR}
+  </select>
+  
+  <select id="findDemandFollowDetailListByPage" parameterType="String" resultType="com.goafanti.common.model.DemandFollowDetail">
+      select d.id,d.demand_follow_id as demandFollowId,d.create_time as createTime,d.remarks,d.`result`,d.remarks 
+    from  demand_follow_detail d 
+    where d.demand_follow_id=#{id,jdbcType=VARCHAR}
+    order by d.create_time desc
+  	<if test="page_sql!=null">
+		${page_sql}
+	</if>
+  </select>
+  
+  <select id="findDemandFollowDetailCount" parameterType="String" resultType="java.lang.Integer">
+   select count(0)
+     from  demand_follow_detail d 
+    where d.demand_follow_id=#{id,jdbcType=VARCHAR}
+    order by d.create_time desc
+  </select>
+</mapper>

+ 9 - 0
src/main/java/com/goafanti/common/mapper/DemandMapper.xml

@@ -2115,4 +2115,13 @@
 		dp.show_number asc limit 0,
 		6
   </select>
+  
+  <select id="selectDemandFollow" resultType="com.goafanti.common.model.Demand">
+  select d.id,d.employer_name as employerName,d.name,d.employer_contacts_mobile as employerContactsMobile,
+    d.employer_contacts_mailbox as employerContactsMailbox,d.create_time as createTime,a.name as techBrokerId
+    from demand d
+    left join admin a on a.id=d.tech_broker_id
+    where d.id=#{id,jdbcType=VARCHAR}
+  
+  </select>
 </mapper>

+ 214 - 0
src/main/java/com/goafanti/common/model/DemandFollow.java

@@ -0,0 +1,214 @@
+package com.goafanti.common.model;
+
+import java.util.Date;
+
+public class DemandFollow {
+
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow.id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private String id;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow.demand_id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private String demandId;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow.organization
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private String organization;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow.contacts
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private String contacts;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow.contact_mobile
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private String contactMobile;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow.result
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private Integer result;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow.last_follow_time
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private Date lastFollowTime;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow.sources
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private String sources;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow.remark
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private String remark;
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow.id
+	 * @return  the value of demand_follow.id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow.id
+	 * @param id  the value for demand_follow.id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow.demand_id
+	 * @return  the value of demand_follow.demand_id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getDemandId() {
+		return demandId;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow.demand_id
+	 * @param demandId  the value for demand_follow.demand_id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setDemandId(String demandId) {
+		this.demandId = demandId;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow.organization
+	 * @return  the value of demand_follow.organization
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getOrganization() {
+		return organization;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow.organization
+	 * @param organization  the value for demand_follow.organization
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setOrganization(String organization) {
+		this.organization = organization;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow.contacts
+	 * @return  the value of demand_follow.contacts
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getContacts() {
+		return contacts;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow.contacts
+	 * @param contacts  the value for demand_follow.contacts
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setContacts(String contacts) {
+		this.contacts = contacts;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow.contact_mobile
+	 * @return  the value of demand_follow.contact_mobile
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getContactMobile() {
+		return contactMobile;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow.contact_mobile
+	 * @param contactMobile  the value for demand_follow.contact_mobile
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setContactMobile(String contactMobile) {
+		this.contactMobile = contactMobile;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow.result
+	 * @return  the value of demand_follow.result
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public Integer getResult() {
+		return result;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow.result
+	 * @param result  the value for demand_follow.result
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setResult(Integer result) {
+		this.result = result;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow.last_follow_time
+	 * @return  the value of demand_follow.last_follow_time
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public Date getLastFollowTime() {
+		return lastFollowTime;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow.last_follow_time
+	 * @param lastFollowTime  the value for demand_follow.last_follow_time
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setLastFollowTime(Date lastFollowTime) {
+		this.lastFollowTime = lastFollowTime;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow.sources
+	 * @return  the value of demand_follow.sources
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getSources() {
+		return sources;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow.sources
+	 * @param sources  the value for demand_follow.sources
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setSources(String sources) {
+		this.sources = sources;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow.remark
+	 * @return  the value of demand_follow.remark
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getRemark() {
+		return remark;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow.remark
+	 * @param remark  the value for demand_follow.remark
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
+}

+ 135 - 0
src/main/java/com/goafanti/common/model/DemandFollowDetail.java

@@ -0,0 +1,135 @@
+package com.goafanti.common.model;
+
+import java.util.Date;
+
+import org.apache.commons.lang3.time.DateFormatUtils;
+
+import com.goafanti.common.constant.AFTConstants;
+
+public class DemandFollowDetail {
+
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow_detail.id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private String id;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow_detail.demand_follow_id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private String demandFollowId;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow_detail.remarks
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private String remarks;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow_detail.result
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private Integer result;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database column demand_follow_detail.create_time
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	private Date createTime;
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow_detail.id
+	 * @return  the value of demand_follow_detail.id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getId() {
+		return id;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow_detail.id
+	 * @param id  the value for demand_follow_detail.id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setId(String id) {
+		this.id = id;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow_detail.demand_follow_id
+	 * @return  the value of demand_follow_detail.demand_follow_id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getDemandFollowId() {
+		return demandFollowId;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow_detail.demand_follow_id
+	 * @param demandFollowId  the value for demand_follow_detail.demand_follow_id
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setDemandFollowId(String demandFollowId) {
+		this.demandFollowId = demandFollowId;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow_detail.remarks
+	 * @return  the value of demand_follow_detail.remarks
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getRemarks() {
+		return remarks;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow_detail.remarks
+	 * @param remarks  the value for demand_follow_detail.remarks
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setRemarks(String remarks) {
+		this.remarks = remarks;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow_detail.result
+	 * @return  the value of demand_follow_detail.result
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public Integer getResult() {
+		return result;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow_detail.result
+	 * @param result  the value for demand_follow_detail.result
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setResult(Integer result) {
+		this.result = result;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method returns the value of the database column demand_follow_detail.create_time
+	 * @return  the value of demand_follow_detail.create_time
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public Date getCreateTime() {
+		return createTime;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method sets the value of the database column demand_follow_detail.create_time
+	 * @param createTime  the value for demand_follow_detail.create_time
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+	public String getCreateTimeFormattedDate(){
+		if (null==getCreateTime()) {
+			return null;
+		}else {
+			return DateFormatUtils.format(getCreateTime(), AFTConstants.YYYYMMDD);
+		}
+		
+	}
+	
+}

+ 592 - 0
src/main/java/com/goafanti/common/model/DemandFollowDetailExample.java

@@ -0,0 +1,592 @@
+package com.goafanti.common.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class DemandFollowDetailExample {
+    /**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	protected String orderByClause;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	protected boolean distinct;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	protected List<Criteria> oredCriteria;
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public DemandFollowDetailExample() {
+		oredCriteria = new ArrayList<Criteria>();
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setOrderByClause(String orderByClause) {
+		this.orderByClause = orderByClause;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getOrderByClause() {
+		return orderByClause;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setDistinct(boolean distinct) {
+		this.distinct = distinct;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public boolean isDistinct() {
+		return distinct;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public List<Criteria> getOredCriteria() {
+		return oredCriteria;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void or(Criteria criteria) {
+		oredCriteria.add(criteria);
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public Criteria or() {
+		Criteria criteria = createCriteriaInternal();
+		oredCriteria.add(criteria);
+		return criteria;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public Criteria createCriteria() {
+		Criteria criteria = createCriteriaInternal();
+		if (oredCriteria.size() == 0) {
+			oredCriteria.add(criteria);
+		}
+		return criteria;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	protected Criteria createCriteriaInternal() {
+		Criteria criteria = new Criteria();
+		return criteria;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void clear() {
+		oredCriteria.clear();
+		orderByClause = null;
+		distinct = false;
+	}
+
+	/**
+	 * This class was generated by MyBatis Generator. This class corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	protected abstract static class GeneratedCriteria {
+		protected List<Criterion> criteria;
+
+		protected GeneratedCriteria() {
+			super();
+			criteria = new ArrayList<Criterion>();
+		}
+
+		public boolean isValid() {
+			return criteria.size() > 0;
+		}
+
+		public List<Criterion> getAllCriteria() {
+			return criteria;
+		}
+
+		public List<Criterion> getCriteria() {
+			return criteria;
+		}
+
+		protected void addCriterion(String condition) {
+			if (condition == null) {
+				throw new RuntimeException("Value for condition cannot be null");
+			}
+			criteria.add(new Criterion(condition));
+		}
+
+		protected void addCriterion(String condition, Object value, String property) {
+			if (value == null) {
+				throw new RuntimeException("Value for " + property + " cannot be null");
+			}
+			criteria.add(new Criterion(condition, value));
+		}
+
+		protected void addCriterion(String condition, Object value1, Object value2, String property) {
+			if (value1 == null || value2 == null) {
+				throw new RuntimeException("Between values for " + property + " cannot be null");
+			}
+			criteria.add(new Criterion(condition, value1, value2));
+		}
+
+		public Criteria andIdIsNull() {
+			addCriterion("id is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdIsNotNull() {
+			addCriterion("id is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdEqualTo(String value) {
+			addCriterion("id =", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdNotEqualTo(String value) {
+			addCriterion("id <>", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdGreaterThan(String value) {
+			addCriterion("id >", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdGreaterThanOrEqualTo(String value) {
+			addCriterion("id >=", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdLessThan(String value) {
+			addCriterion("id <", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdLessThanOrEqualTo(String value) {
+			addCriterion("id <=", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdLike(String value) {
+			addCriterion("id like", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdNotLike(String value) {
+			addCriterion("id not like", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdIn(List<String> values) {
+			addCriterion("id in", values, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdNotIn(List<String> values) {
+			addCriterion("id not in", values, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdBetween(String value1, String value2) {
+			addCriterion("id between", value1, value2, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdNotBetween(String value1, String value2) {
+			addCriterion("id not between", value1, value2, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdIsNull() {
+			addCriterion("demand_follow_id is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdIsNotNull() {
+			addCriterion("demand_follow_id is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdEqualTo(String value) {
+			addCriterion("demand_follow_id =", value, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdNotEqualTo(String value) {
+			addCriterion("demand_follow_id <>", value, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdGreaterThan(String value) {
+			addCriterion("demand_follow_id >", value, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdGreaterThanOrEqualTo(String value) {
+			addCriterion("demand_follow_id >=", value, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdLessThan(String value) {
+			addCriterion("demand_follow_id <", value, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdLessThanOrEqualTo(String value) {
+			addCriterion("demand_follow_id <=", value, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdLike(String value) {
+			addCriterion("demand_follow_id like", value, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdNotLike(String value) {
+			addCriterion("demand_follow_id not like", value, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdIn(List<String> values) {
+			addCriterion("demand_follow_id in", values, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdNotIn(List<String> values) {
+			addCriterion("demand_follow_id not in", values, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdBetween(String value1, String value2) {
+			addCriterion("demand_follow_id between", value1, value2, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandFollowIdNotBetween(String value1, String value2) {
+			addCriterion("demand_follow_id not between", value1, value2, "demandFollowId");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksIsNull() {
+			addCriterion("remarks is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksIsNotNull() {
+			addCriterion("remarks is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksEqualTo(String value) {
+			addCriterion("remarks =", value, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksNotEqualTo(String value) {
+			addCriterion("remarks <>", value, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksGreaterThan(String value) {
+			addCriterion("remarks >", value, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksGreaterThanOrEqualTo(String value) {
+			addCriterion("remarks >=", value, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksLessThan(String value) {
+			addCriterion("remarks <", value, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksLessThanOrEqualTo(String value) {
+			addCriterion("remarks <=", value, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksLike(String value) {
+			addCriterion("remarks like", value, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksNotLike(String value) {
+			addCriterion("remarks not like", value, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksIn(List<String> values) {
+			addCriterion("remarks in", values, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksNotIn(List<String> values) {
+			addCriterion("remarks not in", values, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksBetween(String value1, String value2) {
+			addCriterion("remarks between", value1, value2, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarksNotBetween(String value1, String value2) {
+			addCriterion("remarks not between", value1, value2, "remarks");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultIsNull() {
+			addCriterion("result is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultIsNotNull() {
+			addCriterion("result is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultEqualTo(Integer value) {
+			addCriterion("result =", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultNotEqualTo(Integer value) {
+			addCriterion("result <>", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultGreaterThan(Integer value) {
+			addCriterion("result >", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultGreaterThanOrEqualTo(Integer value) {
+			addCriterion("result >=", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultLessThan(Integer value) {
+			addCriterion("result <", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultLessThanOrEqualTo(Integer value) {
+			addCriterion("result <=", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultIn(List<Integer> values) {
+			addCriterion("result in", values, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultNotIn(List<Integer> values) {
+			addCriterion("result not in", values, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultBetween(Integer value1, Integer value2) {
+			addCriterion("result between", value1, value2, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultNotBetween(Integer value1, Integer value2) {
+			addCriterion("result not between", value1, value2, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeIsNull() {
+			addCriterion("create_time is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeIsNotNull() {
+			addCriterion("create_time is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeEqualTo(Date value) {
+			addCriterion("create_time =", value, "createTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeNotEqualTo(Date value) {
+			addCriterion("create_time <>", value, "createTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeGreaterThan(Date value) {
+			addCriterion("create_time >", value, "createTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeGreaterThanOrEqualTo(Date value) {
+			addCriterion("create_time >=", value, "createTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeLessThan(Date value) {
+			addCriterion("create_time <", value, "createTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeLessThanOrEqualTo(Date value) {
+			addCriterion("create_time <=", value, "createTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeIn(List<Date> values) {
+			addCriterion("create_time in", values, "createTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeNotIn(List<Date> values) {
+			addCriterion("create_time not in", values, "createTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeBetween(Date value1, Date value2) {
+			addCriterion("create_time between", value1, value2, "createTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andCreateTimeNotBetween(Date value1, Date value2) {
+			addCriterion("create_time not between", value1, value2, "createTime");
+			return (Criteria) this;
+		}
+	}
+
+	/**
+	 * This class was generated by MyBatis Generator. This class corresponds to the database table demand_follow_detail
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public static class Criterion {
+		private String condition;
+		private Object value;
+		private Object secondValue;
+		private boolean noValue;
+		private boolean singleValue;
+		private boolean betweenValue;
+		private boolean listValue;
+		private String typeHandler;
+
+		public String getCondition() {
+			return condition;
+		}
+
+		public Object getValue() {
+			return value;
+		}
+
+		public Object getSecondValue() {
+			return secondValue;
+		}
+
+		public boolean isNoValue() {
+			return noValue;
+		}
+
+		public boolean isSingleValue() {
+			return singleValue;
+		}
+
+		public boolean isBetweenValue() {
+			return betweenValue;
+		}
+
+		public boolean isListValue() {
+			return listValue;
+		}
+
+		public String getTypeHandler() {
+			return typeHandler;
+		}
+
+		protected Criterion(String condition) {
+			super();
+			this.condition = condition;
+			this.typeHandler = null;
+			this.noValue = true;
+		}
+
+		protected Criterion(String condition, Object value, String typeHandler) {
+			super();
+			this.condition = condition;
+			this.value = value;
+			this.typeHandler = typeHandler;
+			if (value instanceof List<?>) {
+				this.listValue = true;
+			} else {
+				this.singleValue = true;
+			}
+		}
+
+		protected Criterion(String condition, Object value) {
+			this(condition, value, null);
+		}
+
+		protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+			super();
+			this.condition = condition;
+			this.value = value;
+			this.secondValue = secondValue;
+			this.typeHandler = typeHandler;
+			this.betweenValue = true;
+		}
+
+		protected Criterion(String condition, Object value, Object secondValue) {
+			this(condition, value, secondValue, null);
+		}
+	}
+
+	/**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table demand_follow_detail
+     *
+     * @mbg.generated do_not_delete_during_merge Thu Mar 22 08:39:04 CST 2018
+     */
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+}

+ 872 - 0
src/main/java/com/goafanti/common/model/DemandFollowExample.java

@@ -0,0 +1,872 @@
+package com.goafanti.common.model;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+public class DemandFollowExample {
+    /**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	protected String orderByClause;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	protected boolean distinct;
+	/**
+	 * This field was generated by MyBatis Generator. This field corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	protected List<Criteria> oredCriteria;
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public DemandFollowExample() {
+		oredCriteria = new ArrayList<Criteria>();
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setOrderByClause(String orderByClause) {
+		this.orderByClause = orderByClause;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public String getOrderByClause() {
+		return orderByClause;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void setDistinct(boolean distinct) {
+		this.distinct = distinct;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public boolean isDistinct() {
+		return distinct;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public List<Criteria> getOredCriteria() {
+		return oredCriteria;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void or(Criteria criteria) {
+		oredCriteria.add(criteria);
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public Criteria or() {
+		Criteria criteria = createCriteriaInternal();
+		oredCriteria.add(criteria);
+		return criteria;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public Criteria createCriteria() {
+		Criteria criteria = createCriteriaInternal();
+		if (oredCriteria.size() == 0) {
+			oredCriteria.add(criteria);
+		}
+		return criteria;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	protected Criteria createCriteriaInternal() {
+		Criteria criteria = new Criteria();
+		return criteria;
+	}
+
+	/**
+	 * This method was generated by MyBatis Generator. This method corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public void clear() {
+		oredCriteria.clear();
+		orderByClause = null;
+		distinct = false;
+	}
+
+	/**
+	 * This class was generated by MyBatis Generator. This class corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	protected abstract static class GeneratedCriteria {
+		protected List<Criterion> criteria;
+
+		protected GeneratedCriteria() {
+			super();
+			criteria = new ArrayList<Criterion>();
+		}
+
+		public boolean isValid() {
+			return criteria.size() > 0;
+		}
+
+		public List<Criterion> getAllCriteria() {
+			return criteria;
+		}
+
+		public List<Criterion> getCriteria() {
+			return criteria;
+		}
+
+		protected void addCriterion(String condition) {
+			if (condition == null) {
+				throw new RuntimeException("Value for condition cannot be null");
+			}
+			criteria.add(new Criterion(condition));
+		}
+
+		protected void addCriterion(String condition, Object value, String property) {
+			if (value == null) {
+				throw new RuntimeException("Value for " + property + " cannot be null");
+			}
+			criteria.add(new Criterion(condition, value));
+		}
+
+		protected void addCriterion(String condition, Object value1, Object value2, String property) {
+			if (value1 == null || value2 == null) {
+				throw new RuntimeException("Between values for " + property + " cannot be null");
+			}
+			criteria.add(new Criterion(condition, value1, value2));
+		}
+
+		public Criteria andIdIsNull() {
+			addCriterion("id is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdIsNotNull() {
+			addCriterion("id is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdEqualTo(String value) {
+			addCriterion("id =", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdNotEqualTo(String value) {
+			addCriterion("id <>", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdGreaterThan(String value) {
+			addCriterion("id >", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdGreaterThanOrEqualTo(String value) {
+			addCriterion("id >=", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdLessThan(String value) {
+			addCriterion("id <", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdLessThanOrEqualTo(String value) {
+			addCriterion("id <=", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdLike(String value) {
+			addCriterion("id like", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdNotLike(String value) {
+			addCriterion("id not like", value, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdIn(List<String> values) {
+			addCriterion("id in", values, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdNotIn(List<String> values) {
+			addCriterion("id not in", values, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdBetween(String value1, String value2) {
+			addCriterion("id between", value1, value2, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andIdNotBetween(String value1, String value2) {
+			addCriterion("id not between", value1, value2, "id");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdIsNull() {
+			addCriterion("demand_id is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdIsNotNull() {
+			addCriterion("demand_id is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdEqualTo(String value) {
+			addCriterion("demand_id =", value, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdNotEqualTo(String value) {
+			addCriterion("demand_id <>", value, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdGreaterThan(String value) {
+			addCriterion("demand_id >", value, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdGreaterThanOrEqualTo(String value) {
+			addCriterion("demand_id >=", value, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdLessThan(String value) {
+			addCriterion("demand_id <", value, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdLessThanOrEqualTo(String value) {
+			addCriterion("demand_id <=", value, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdLike(String value) {
+			addCriterion("demand_id like", value, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdNotLike(String value) {
+			addCriterion("demand_id not like", value, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdIn(List<String> values) {
+			addCriterion("demand_id in", values, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdNotIn(List<String> values) {
+			addCriterion("demand_id not in", values, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdBetween(String value1, String value2) {
+			addCriterion("demand_id between", value1, value2, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andDemandIdNotBetween(String value1, String value2) {
+			addCriterion("demand_id not between", value1, value2, "demandId");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationIsNull() {
+			addCriterion("organization is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationIsNotNull() {
+			addCriterion("organization is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationEqualTo(String value) {
+			addCriterion("organization =", value, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationNotEqualTo(String value) {
+			addCriterion("organization <>", value, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationGreaterThan(String value) {
+			addCriterion("organization >", value, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationGreaterThanOrEqualTo(String value) {
+			addCriterion("organization >=", value, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationLessThan(String value) {
+			addCriterion("organization <", value, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationLessThanOrEqualTo(String value) {
+			addCriterion("organization <=", value, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationLike(String value) {
+			addCriterion("organization like", value, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationNotLike(String value) {
+			addCriterion("organization not like", value, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationIn(List<String> values) {
+			addCriterion("organization in", values, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationNotIn(List<String> values) {
+			addCriterion("organization not in", values, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationBetween(String value1, String value2) {
+			addCriterion("organization between", value1, value2, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andOrganizationNotBetween(String value1, String value2) {
+			addCriterion("organization not between", value1, value2, "organization");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsIsNull() {
+			addCriterion("contacts is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsIsNotNull() {
+			addCriterion("contacts is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsEqualTo(String value) {
+			addCriterion("contacts =", value, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsNotEqualTo(String value) {
+			addCriterion("contacts <>", value, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsGreaterThan(String value) {
+			addCriterion("contacts >", value, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsGreaterThanOrEqualTo(String value) {
+			addCriterion("contacts >=", value, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsLessThan(String value) {
+			addCriterion("contacts <", value, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsLessThanOrEqualTo(String value) {
+			addCriterion("contacts <=", value, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsLike(String value) {
+			addCriterion("contacts like", value, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsNotLike(String value) {
+			addCriterion("contacts not like", value, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsIn(List<String> values) {
+			addCriterion("contacts in", values, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsNotIn(List<String> values) {
+			addCriterion("contacts not in", values, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsBetween(String value1, String value2) {
+			addCriterion("contacts between", value1, value2, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactsNotBetween(String value1, String value2) {
+			addCriterion("contacts not between", value1, value2, "contacts");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileIsNull() {
+			addCriterion("contact_mobile is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileIsNotNull() {
+			addCriterion("contact_mobile is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileEqualTo(String value) {
+			addCriterion("contact_mobile =", value, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileNotEqualTo(String value) {
+			addCriterion("contact_mobile <>", value, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileGreaterThan(String value) {
+			addCriterion("contact_mobile >", value, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileGreaterThanOrEqualTo(String value) {
+			addCriterion("contact_mobile >=", value, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileLessThan(String value) {
+			addCriterion("contact_mobile <", value, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileLessThanOrEqualTo(String value) {
+			addCriterion("contact_mobile <=", value, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileLike(String value) {
+			addCriterion("contact_mobile like", value, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileNotLike(String value) {
+			addCriterion("contact_mobile not like", value, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileIn(List<String> values) {
+			addCriterion("contact_mobile in", values, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileNotIn(List<String> values) {
+			addCriterion("contact_mobile not in", values, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileBetween(String value1, String value2) {
+			addCriterion("contact_mobile between", value1, value2, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andContactMobileNotBetween(String value1, String value2) {
+			addCriterion("contact_mobile not between", value1, value2, "contactMobile");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultIsNull() {
+			addCriterion("result is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultIsNotNull() {
+			addCriterion("result is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultEqualTo(Integer value) {
+			addCriterion("result =", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultNotEqualTo(Integer value) {
+			addCriterion("result <>", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultGreaterThan(Integer value) {
+			addCriterion("result >", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultGreaterThanOrEqualTo(Integer value) {
+			addCriterion("result >=", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultLessThan(Integer value) {
+			addCriterion("result <", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultLessThanOrEqualTo(Integer value) {
+			addCriterion("result <=", value, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultIn(List<Integer> values) {
+			addCriterion("result in", values, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultNotIn(List<Integer> values) {
+			addCriterion("result not in", values, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultBetween(Integer value1, Integer value2) {
+			addCriterion("result between", value1, value2, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andResultNotBetween(Integer value1, Integer value2) {
+			addCriterion("result not between", value1, value2, "result");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeIsNull() {
+			addCriterion("last_follow_time is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeIsNotNull() {
+			addCriterion("last_follow_time is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeEqualTo(Date value) {
+			addCriterion("last_follow_time =", value, "lastFollowTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeNotEqualTo(Date value) {
+			addCriterion("last_follow_time <>", value, "lastFollowTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeGreaterThan(Date value) {
+			addCriterion("last_follow_time >", value, "lastFollowTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeGreaterThanOrEqualTo(Date value) {
+			addCriterion("last_follow_time >=", value, "lastFollowTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeLessThan(Date value) {
+			addCriterion("last_follow_time <", value, "lastFollowTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeLessThanOrEqualTo(Date value) {
+			addCriterion("last_follow_time <=", value, "lastFollowTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeIn(List<Date> values) {
+			addCriterion("last_follow_time in", values, "lastFollowTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeNotIn(List<Date> values) {
+			addCriterion("last_follow_time not in", values, "lastFollowTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeBetween(Date value1, Date value2) {
+			addCriterion("last_follow_time between", value1, value2, "lastFollowTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andLastFollowTimeNotBetween(Date value1, Date value2) {
+			addCriterion("last_follow_time not between", value1, value2, "lastFollowTime");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesIsNull() {
+			addCriterion("sources is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesIsNotNull() {
+			addCriterion("sources is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesEqualTo(String value) {
+			addCriterion("sources =", value, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesNotEqualTo(String value) {
+			addCriterion("sources <>", value, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesGreaterThan(String value) {
+			addCriterion("sources >", value, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesGreaterThanOrEqualTo(String value) {
+			addCriterion("sources >=", value, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesLessThan(String value) {
+			addCriterion("sources <", value, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesLessThanOrEqualTo(String value) {
+			addCriterion("sources <=", value, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesLike(String value) {
+			addCriterion("sources like", value, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesNotLike(String value) {
+			addCriterion("sources not like", value, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesIn(List<String> values) {
+			addCriterion("sources in", values, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesNotIn(List<String> values) {
+			addCriterion("sources not in", values, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesBetween(String value1, String value2) {
+			addCriterion("sources between", value1, value2, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andSourcesNotBetween(String value1, String value2) {
+			addCriterion("sources not between", value1, value2, "sources");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkIsNull() {
+			addCriterion("remark is null");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkIsNotNull() {
+			addCriterion("remark is not null");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkEqualTo(String value) {
+			addCriterion("remark =", value, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkNotEqualTo(String value) {
+			addCriterion("remark <>", value, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkGreaterThan(String value) {
+			addCriterion("remark >", value, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkGreaterThanOrEqualTo(String value) {
+			addCriterion("remark >=", value, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkLessThan(String value) {
+			addCriterion("remark <", value, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkLessThanOrEqualTo(String value) {
+			addCriterion("remark <=", value, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkLike(String value) {
+			addCriterion("remark like", value, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkNotLike(String value) {
+			addCriterion("remark not like", value, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkIn(List<String> values) {
+			addCriterion("remark in", values, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkNotIn(List<String> values) {
+			addCriterion("remark not in", values, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkBetween(String value1, String value2) {
+			addCriterion("remark between", value1, value2, "remark");
+			return (Criteria) this;
+		}
+
+		public Criteria andRemarkNotBetween(String value1, String value2) {
+			addCriterion("remark not between", value1, value2, "remark");
+			return (Criteria) this;
+		}
+	}
+
+	/**
+	 * This class was generated by MyBatis Generator. This class corresponds to the database table demand_follow
+	 * @mbg.generated  Thu Mar 22 14:44:52 CST 2018
+	 */
+	public static class Criterion {
+		private String condition;
+		private Object value;
+		private Object secondValue;
+		private boolean noValue;
+		private boolean singleValue;
+		private boolean betweenValue;
+		private boolean listValue;
+		private String typeHandler;
+
+		public String getCondition() {
+			return condition;
+		}
+
+		public Object getValue() {
+			return value;
+		}
+
+		public Object getSecondValue() {
+			return secondValue;
+		}
+
+		public boolean isNoValue() {
+			return noValue;
+		}
+
+		public boolean isSingleValue() {
+			return singleValue;
+		}
+
+		public boolean isBetweenValue() {
+			return betweenValue;
+		}
+
+		public boolean isListValue() {
+			return listValue;
+		}
+
+		public String getTypeHandler() {
+			return typeHandler;
+		}
+
+		protected Criterion(String condition) {
+			super();
+			this.condition = condition;
+			this.typeHandler = null;
+			this.noValue = true;
+		}
+
+		protected Criterion(String condition, Object value, String typeHandler) {
+			super();
+			this.condition = condition;
+			this.value = value;
+			this.typeHandler = typeHandler;
+			if (value instanceof List<?>) {
+				this.listValue = true;
+			} else {
+				this.singleValue = true;
+			}
+		}
+
+		protected Criterion(String condition, Object value) {
+			this(condition, value, null);
+		}
+
+		protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+			super();
+			this.condition = condition;
+			this.value = value;
+			this.secondValue = secondValue;
+			this.typeHandler = typeHandler;
+			this.betweenValue = true;
+		}
+
+		protected Criterion(String condition, Object value, Object secondValue) {
+			this(condition, value, secondValue, null);
+		}
+	}
+
+	/**
+     * This class was generated by MyBatis Generator.
+     * This class corresponds to the database table demand_follow
+     *
+     * @mbg.generated do_not_delete_during_merge Thu Mar 22 08:39:04 CST 2018
+     */
+    public static class Criteria extends GeneratedCriteria {
+
+        protected Criteria() {
+            super();
+        }
+    }
+}

+ 23 - 0
src/main/java/com/goafanti/demand/bo/DemandFollowDetailListBo.java

@@ -0,0 +1,23 @@
+package com.goafanti.demand.bo;
+
+
+
+import org.apache.commons.lang3.time.DateFormatUtils;
+
+import com.goafanti.common.constant.AFTConstants;
+import com.goafanti.common.model.DemandFollowDetail;
+
+
+public class DemandFollowDetailListBo  extends DemandFollowDetail{
+	
+	
+	public String getCreateTimeFormattedDate(){
+		if (null==getCreateTime()) {
+			return null;
+		}else {
+			return DateFormatUtils.format(getCreateTime(), AFTConstants.YYYYMMDDHHMMSS);
+		}
+		
+	}
+	
+}

+ 61 - 0
src/main/java/com/goafanti/demand/bo/DemandFollowListBo.java

@@ -0,0 +1,61 @@
+package com.goafanti.demand.bo;
+
+import java.util.Date;
+
+import org.apache.commons.lang3.time.DateFormatUtils;
+
+import com.goafanti.common.constant.AFTConstants;
+import com.goafanti.common.model.DemandFollow;
+
+public class DemandFollowListBo extends DemandFollow{
+	private String name;
+	private String employerName;
+	private String employerContactsMobile;
+	private String employerContactsMailbox;
+	private Date createTime;
+	private String adminName; 
+	
+	public String getName() {
+		return name;
+	}
+	public void setName(String name) {
+		this.name = name;
+	}
+	public String getEmployerName() {
+		return employerName;
+	}
+	public void setEmployerName(String employerName) {
+		this.employerName = employerName;
+	}
+	public String getEmployerContactsMobile() {
+		return employerContactsMobile;
+	}
+	public void setEmployerContactsMobile(String employerContactsMobile) {
+		this.employerContactsMobile = employerContactsMobile;
+	}
+	public String getEmployerContactsMailbox() {
+		return employerContactsMailbox;
+	}
+	public void setEmployerContactsMailbox(String employerContactsMailbox) {
+		this.employerContactsMailbox = employerContactsMailbox;
+	}
+	public Date getCreateTime() {
+		return createTime;
+	}
+	public String getCreateTimeFormattedDate() {
+		if (this.createTime == null) {
+			return null;
+		} else {
+			return DateFormatUtils.format(getCreateTime(), AFTConstants.YYYYMMDD);
+		}
+	}
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
+	}
+	public String getAdminName() {
+		return adminName;
+	}
+	public void setAdminName(String adminName) {
+		this.adminName = adminName;
+	}
+}

+ 125 - 1
src/main/java/com/goafanti/demand/controller/AdminDemandApiController.java

@@ -38,6 +38,8 @@ import com.goafanti.common.enums.DemandSwitchSign;
 import com.goafanti.common.enums.MarketingPage;
 import com.goafanti.common.model.AftFile;
 import com.goafanti.common.model.Demand;
+import com.goafanti.common.model.DemandFollow;
+import com.goafanti.common.model.DemandFollowDetail;
 import com.goafanti.common.model.DemandOrder;
 import com.goafanti.common.model.DemandPublish;
 import com.goafanti.common.model.MarketingManagement;
@@ -46,6 +48,7 @@ import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.demand.bo.DemandImportBo;
 import com.goafanti.demand.bo.InputDemand;
+import com.goafanti.demand.service.DemandFollowService;
 import com.goafanti.demand.service.DemandOrderService;
 import com.goafanti.demand.service.DemandPublishPageService;
 import com.goafanti.demand.service.DemandPublishService;
@@ -68,6 +71,8 @@ public class AdminDemandApiController extends CertifyApiController {
     private MarketingManagementService marketingManagementService;
 	@Resource
 	DemandPublishService	demandPublishService;
+	@Resource
+	DemandFollowService		demandFollowService;
 	/**
 	 * 科技需求匹配科技成果
 	 */
@@ -768,5 +773,124 @@ public class AdminDemandApiController extends CertifyApiController {
     	Result res=new Result();
     	return res.data(DemandPublishPageService.getBranchInformation());
     }
-
+    /**
+     * 新增匹配跟进保存
+     */
+    @RequestMapping(value = "/addDemandFollow", method = RequestMethod.POST)
+    private Result addDemandFollow(DemandFollow d) {
+    	Result res = new Result();
+    	if (StringUtils.isBlank(d.getDemandId())) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到需求", "需求"));
+            return res;
+        }
+    	if (StringUtils.isBlank(d.getContactMobile())) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到联系人电话", "联系人电话"));
+            return res;
+        }
+    	if (StringUtils.isBlank(d.getContacts())) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到联系人", "联系人"));
+            return res;
+        }
+    	if (StringUtils.isBlank(d.getOrganization())) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到机构", "机构"));
+            return res;
+        }
+    	res.data(demandFollowService.insertDemandFollow(d));     
+        return res;
+    }
+    
+    /**
+     * 修改匹配跟进
+     */
+    @RequestMapping(value = "/updateDemandFollow", method = RequestMethod.POST)
+    private Result DemandFollow(DemandFollow d) {
+    	Result res = new Result();
+    	if (StringUtils.isBlank(d.getDemandId())) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到需求", "需求"));
+            return res;
+        }
+    	res.setData(demandFollowService.updateDemandFollow(d));     
+        return res;
+    }
+    
+    /**
+     * 新增跟进情况
+     */
+    @RequestMapping(value = "/addDemandFollowDetail", method = RequestMethod.POST)
+    private Result addDemandFollowDetail(DemandFollowDetail d,String createTimeFormattedDate) {
+    	Result res = new Result();
+    	if (StringUtils.isBlank(d.getDemandFollowId())) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到需求匹配跟进", "需求匹配跟进"));
+            return res;
+        }
+    	if (StringUtils.isBlank(d.getRemarks())) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到跟进情况", "跟进情况"));
+            return res;
+        }
+    	if (null==d.getResult()) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到跟进结果", "跟进结果"));
+            return res;
+        }
+    	if (StringUtils.isBlank(createTimeFormattedDate)) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到跟进时间", "跟进时间"));
+            return res;
+        }
+    	res.data(demandFollowService.insertDemandFollowDetail(d,createTimeFormattedDate));     
+        return res;
+    }
+    
+    /**
+     * 跟进列表
+     */
+    @RequestMapping(value = "/listDemandFollow", method = RequestMethod.GET)
+    private Result listDemandFollow(String id,Integer pNo,Integer pSize) {
+    	Result res = new Result();
+    	if (StringUtils.isBlank(id)) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到需求匹配跟进", "需求匹配跟进"));
+            return res;
+        }
+    	res.data(demandFollowService.selectDemandFollow( id, pNo, pSize));
+        return res;
+    }
+    
+    /**
+     * 删除跟进
+     */
+    @RequestMapping(value = "/deleteDemandFollow", method = RequestMethod.GET)
+    private Result deleteDemandFollow(String id) {
+    	Result res = new Result();
+    	if (StringUtils.isBlank(id)) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到需求匹配跟进", "需求匹配跟进"));
+            return res;
+        }
+    	res.data(demandFollowService.deleteDemandFollow( id));
+        return res;
+    }
+    
+    /**
+     * 跟进情况列表
+     */
+    @RequestMapping(value = "/listDemandFollowDetail", method = RequestMethod.GET)
+    private Result listDemandFollowDetail(String id,Integer pNo, Integer pSize) {
+    	Result res = new Result();
+    	if (StringUtils.isBlank(id)) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到需求跟进", "需求跟进"));
+            return res;
+        }
+    	res.data(demandFollowService.selectDemandFollowDetail( id,pNo,  pSize));
+        return res;
+    }
+    /**
+     * 匹配跟进
+     */
+    @RequestMapping(value = "/DemandFollowDetails", method = RequestMethod.GET)
+    private Result DemandFollowDetails(String id) {
+    	Result res = new Result();
+    	if (StringUtils.isBlank(id)) {
+            res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "找不到需求跟进", "需求跟进"));
+            return res;
+        }
+    	res.data(demandService.DemandFollowDetails(id));
+        return res;
+    }
 }

+ 29 - 0
src/main/java/com/goafanti/demand/service/DemandFollowService.java

@@ -0,0 +1,29 @@
+package com.goafanti.demand.service;
+
+
+
+import java.util.List;
+
+import com.goafanti.common.model.DemandFollow;
+import com.goafanti.common.model.DemandFollowDetail;
+import com.goafanti.core.mybatis.page.Pagination;
+import com.goafanti.demand.bo.DemandFollowDetailListBo;
+import com.goafanti.demand.bo.DemandFollowListBo;
+
+
+
+public interface DemandFollowService {
+
+	
+	int insertDemandFollow(DemandFollow d);
+
+	int insertDemandFollowDetail(DemandFollowDetail d,String createTimeFormattedDate);
+
+	Pagination<DemandFollowListBo> selectDemandFollow(String id,Integer pNo,Integer pSize);
+
+	int deleteDemandFollow(String id);
+
+	int updateDemandFollow(DemandFollow d);
+	
+	Pagination<DemandFollowDetailListBo> selectDemandFollowDetail(String id,Integer pNo, Integer pSize);
+}

+ 2 - 0
src/main/java/com/goafanti/demand/service/DemandService.java

@@ -107,4 +107,6 @@ public interface DemandService {
 			String name, String keyword, Integer infoSources, Integer demandType, String validityPeriodStartDate,
 			String validityPeriodEndDate, String username, Integer status, Integer releaseStatus,
 			String releaseDateStartDate, String releaseDateEndDate,String createDateStartDate, String createDateEndDate, Integer pNo, Integer pSize,Integer boutique,Integer hot,String techBrokerId,String recordPerson);
+
+	Demand DemandFollowDetails(String id);
 }

+ 113 - 0
src/main/java/com/goafanti/demand/service/impl/DemandFollowServiceImpl.java

@@ -0,0 +1,113 @@
+package com.goafanti.demand.service.impl;
+
+import java.text.ParseException;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.goafanti.common.bo.PublishPageBo;
+import com.goafanti.common.constant.AFTConstants;
+import com.goafanti.common.dao.DemandFollowDetailMapper;
+import com.goafanti.common.dao.DemandFollowMapper;
+import com.goafanti.common.dao.DemandPublishMapper;
+import com.goafanti.common.enums.DemandFollowResult;
+import com.goafanti.common.model.DemandFollow;
+import com.goafanti.common.model.DemandFollowDetail;
+import com.goafanti.common.model.DemandPublish;
+import com.goafanti.common.utils.DateUtils;
+import com.goafanti.core.mybatis.BaseMybatisDao;
+import com.goafanti.core.mybatis.page.Pagination;
+import com.goafanti.core.shiro.token.TokenManager;
+import com.goafanti.demand.bo.DemandFollowDetailListBo;
+import com.goafanti.demand.bo.DemandFollowListBo;
+import com.goafanti.demand.bo.DemandListBo;
+import com.goafanti.demand.bo.DemandPublishBo;
+import com.goafanti.demand.service.DemandFollowService;
+import com.goafanti.demand.service.DemandPublishPageService;
+import com.goafanti.demand.service.DemandPublishService;
+
+
+@Service
+public class DemandFollowServiceImpl extends BaseMybatisDao<DemandFollowMapper> implements DemandFollowService {
+
+	@Autowired
+	private DemandFollowMapper	demandFollowMapper;
+	
+	@Autowired
+	private DemandFollowDetailMapper	demandFollowDetailMapper;
+
+	private static final Logger				logger	= LoggerFactory.getLogger(DemandFollowServiceImpl.class);
+
+	@Override
+	public int insertDemandFollow(DemandFollow d) {
+		d.setId(UUID.randomUUID().toString());
+		d.setResult(DemandFollowResult.FOLLOW.getCode());
+		demandFollowMapper.insert(d);
+		return 1;
+	}
+
+	@Override
+	public int insertDemandFollowDetail(DemandFollowDetail d,String createTimeFormattedDate) {
+		d.setId(UUID.randomUUID().toString());
+		try {
+			d.setCreateTime(DateUtils.parseDate(createTimeFormattedDate,AFTConstants.YYYYMMDD));
+		} catch (ParseException e) {
+			e.printStackTrace();
+		}
+		demandFollowDetailMapper.insert(d);
+		DemandFollow df=demandFollowMapper.selectByPrimaryKey(d.getDemandFollowId());
+		df.setLastFollowTime(d.getCreateTime());
+		df.setResult(d.getResult());
+		demandFollowMapper.updateByPrimaryKey(df);
+		return 1;
+		}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public Pagination<DemandFollowListBo> selectDemandFollow(String id, Integer pNo, Integer pSize) {
+		if (pNo == null || pNo < 0) {
+			pNo = 1;
+		}
+
+		if (pSize == null || pSize < 0) {
+			pSize = 10;
+		}
+		Map<String, Object> params=new HashMap<String, Object>();
+		params.put("id", id);
+		return (Pagination<DemandFollowListBo>) findPage("findDemandFollowListByPage", "findDemandFollowCount", params, pNo, pSize);
+	}
+
+	@Override
+	public int deleteDemandFollow(String id) {
+		return demandFollowMapper.deleteByPrimaryKey(id);
+	}
+
+	@Override
+	public int updateDemandFollow(DemandFollow d) {
+		
+		return demandFollowMapper.updateByPrimaryKeySelective(d);
+	}
+
+	@SuppressWarnings("unchecked")
+	@Override
+	public Pagination<DemandFollowDetailListBo> selectDemandFollowDetail(String id,Integer pNo, Integer pSize) {
+		if (pNo == null || pNo < 0) {
+			pNo = 1;
+		}
+
+		if (pSize == null || pSize < 0) {
+			pSize = 10;
+		}
+		Map<String, Object> params=new HashMap<String, Object>();
+		params.put("id", id);
+		return (Pagination<DemandFollowDetailListBo>) findPage("findDemandFollowDetailListByPage", "findDemandFollowDetailCount", params, pNo, pSize);
+			
+		}
+	}
+
+	

+ 5 - 0
src/main/java/com/goafanti/demand/service/impl/DemandServiceImpl.java

@@ -1097,6 +1097,11 @@ public class DemandServiceImpl extends BaseMybatisDao<DemandMapper> implements D
 		return (Pagination<DemandManageListBo>) findPage("findManageDemandListByPage", "findManagegDemandCount",
 				params, pNo, pSize);
 	}
+
+	@Override
+	public Demand DemandFollowDetails(String id) {
+		return demandMapper.selectDemandFollow(id);
+	}
 		
 	
 }