Browse Source

Merge branch 'test' of jishutao/kede-server into prod

anderx 1 year ago
parent
commit
242631363a
74 changed files with 2864 additions and 934 deletions
  1. 1 1
      pom.xml
  2. 27 94
      src/main/java/com/goafanti/admin/controller/AdminApiController.java
  3. 3 2
      src/main/java/com/goafanti/business/service/impl/RestrictProjectServiceImpl.java
  4. 3 0
      src/main/java/com/goafanti/common/constant/AFTConstants.java
  5. 6 2
      src/main/java/com/goafanti/common/dao/DepartmentMapper.java
  6. 30 0
      src/main/java/com/goafanti/common/dao/TOrderApprovalMapper.java
  7. 2 0
      src/main/java/com/goafanti/common/dao/TOrderExamineMapper.java
  8. 11 4
      src/main/java/com/goafanti/common/dao/TOrderNewMapper.java
  9. 3 2
      src/main/java/com/goafanti/common/dao/TOrderPublicReleaseCountMapper.java
  10. 11 11
      src/main/java/com/goafanti/common/enums/NoticeTypes.java
  11. 3 0
      src/main/java/com/goafanti/common/enums/OrderLogProcess.java
  12. 32 10
      src/main/java/com/goafanti/common/mapper/DepartmentMapper.xml
  13. 52 143
      src/main/java/com/goafanti/common/mapper/NewOrderChangeMapper.xml
  14. 221 255
      src/main/java/com/goafanti/common/mapper/PublicReleaseDetailsMapper.xml
  15. 14 7
      src/main/java/com/goafanti/common/mapper/PublicReleaseMapper.xml
  16. 90 0
      src/main/java/com/goafanti/common/mapper/TOrderApprovalMapper.xml
  17. 7 1
      src/main/java/com/goafanti/common/mapper/TOrderExamineMapper.xml
  18. 100 25
      src/main/java/com/goafanti/common/mapper/TOrderNewMapper.xml
  19. 15 7
      src/main/java/com/goafanti/common/mapper/TOrderPublicReleaseCountMapper.xml
  20. 123 5
      src/main/java/com/goafanti/common/mapper/TOrderTaskMapper.xml
  21. 1 0
      src/main/java/com/goafanti/common/mapper/UserMapperExt.xml
  22. 19 0
      src/main/java/com/goafanti/common/model/Department.java
  23. 19 0
      src/main/java/com/goafanti/common/model/PublicRelease.java
  24. 120 2
      src/main/java/com/goafanti/common/model/PublicReleaseDetails.java
  25. 87 0
      src/main/java/com/goafanti/common/model/TOrderApproval.java
  26. 297 3
      src/main/java/com/goafanti/common/model/TOrderNew.java
  27. 19 0
      src/main/java/com/goafanti/common/model/TOrderNewWithBLOBs.java
  28. 19 0
      src/main/java/com/goafanti/common/model/TOrderPublicReleaseCount.java
  29. 1 1
      src/main/java/com/goafanti/common/task/ReleaseUserTask.java
  30. 23 16
      src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java
  31. 9 2
      src/main/java/com/goafanti/order/bo/InputMemberList.java
  32. 9 0
      src/main/java/com/goafanti/order/bo/InputOrderNewListBo.java
  33. 9 0
      src/main/java/com/goafanti/order/bo/InputProjectStatistics.java
  34. 23 3
      src/main/java/com/goafanti/order/bo/OrderListBo.java
  35. 9 0
      src/main/java/com/goafanti/order/bo/OrderProcessName.java
  36. 20 0
      src/main/java/com/goafanti/order/bo/OutMemberList.java
  37. 9 0
      src/main/java/com/goafanti/order/bo/OutProcessName.java
  38. 28 2
      src/main/java/com/goafanti/order/bo/OutProjectStatistics.java
  39. 38 0
      src/main/java/com/goafanti/order/bo/TOrderNewBo.java
  40. 21 0
      src/main/java/com/goafanti/order/bo/TOrderTaskListBo.java
  41. 14 0
      src/main/java/com/goafanti/order/bo/inuptTaskListBo.java
  42. 54 0
      src/main/java/com/goafanti/order/bo/managerListBo.java
  43. 36 0
      src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsAudit.java
  44. 35 0
      src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsCommon.java
  45. 36 0
      src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsDoubleSoft.java
  46. 35 0
      src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsHighTech.java
  47. 36 0
      src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsMember.java
  48. 36 0
      src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsPatent.java
  49. 36 0
      src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsSoftwareWorks.java
  50. 27 2
      src/main/java/com/goafanti/order/controller/AdminNewOrderApiController.java
  51. 38 20
      src/main/java/com/goafanti/order/controller/AdminOrderReceivablesApiController.java
  52. 1 1
      src/main/java/com/goafanti/order/controller/FundManagerOrderApiController.java
  53. 9 20
      src/main/java/com/goafanti/order/controller/OrderChangeApiController.java
  54. 63 52
      src/main/java/com/goafanti/order/controller/OrderProjectApiController.java
  55. 7 1
      src/main/java/com/goafanti/order/controller/StatisticsApiController.java
  56. 70 0
      src/main/java/com/goafanti/order/enums/ApprovalTypeEnums.java
  57. 4 3
      src/main/java/com/goafanti/order/enums/OrderChangeProcess.java
  58. 6 6
      src/main/java/com/goafanti/order/enums/ProcessStatus.java
  59. 2 0
      src/main/java/com/goafanti/order/service/OrderNewService.java
  60. 2 2
      src/main/java/com/goafanti/order/service/OrderProjectService.java
  61. 30 13
      src/main/java/com/goafanti/order/service/impl/FundManagerOrderServiceImpl.java
  62. 76 45
      src/main/java/com/goafanti/order/service/impl/OrderChangeServiceImpl.java
  63. 174 39
      src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java
  64. 41 5
      src/main/java/com/goafanti/order/service/impl/OrderProjectServiceImpl.java
  65. 38 24
      src/main/java/com/goafanti/order/service/impl/ProjectStatisticsServiceImpl.java
  66. 13 3
      src/main/java/com/goafanti/order/service/impl/PushOrderService.java
  67. 12 0
      src/main/java/com/goafanti/organization/bo/InputDep.java
  68. 20 0
      src/main/java/com/goafanti/organization/bo/OrganizationListOut.java
  69. 4 0
      src/main/java/com/goafanti/organization/controller/AdminOrganizationController.java
  70. 305 35
      src/main/java/com/goafanti/organization/service/impl/OrganizationServiceImpl.java
  71. 14 46
      src/main/java/com/goafanti/techproject/service/impl/TechProjectServiceImpl.java
  72. 10 0
      src/main/java/com/goafanti/weChat/bo/OutPublicDtails.java
  73. 12 0
      src/main/java/com/goafanti/weChat/bo/OutPublicRelease.java
  74. 34 19
      src/main/java/com/goafanti/weChat/service/impl/PublicReleaseServiceImpl.java

+ 1 - 1
pom.xml

@@ -13,7 +13,7 @@
 
 	<properties>
 		<java-version>1.8</java-version>
-		<org.springframework-version>4.2.5.RELEASE</org.springframework-version>
+		<org.springframework-version>4.3.5.RELEASE</org.springframework-version>
 		<org.slf4j-version>1.7.21</org.slf4j-version>
 		<shiro-version>1.3.2</shiro-version>
 		<mybatis-version>3.2.8</mybatis-version>

+ 27 - 94
src/main/java/com/goafanti/admin/controller/AdminApiController.java

@@ -1,110 +1,43 @@
 package com.goafanti.admin.controller;
 
-import java.math.BigDecimal;
-import java.text.ParseException;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.validation.Valid;
-
+import com.goafanti.admin.service.AdminService;
 import com.goafanti.ambSystem.service.AmbPaymentService;
+import com.goafanti.cognizance.bo.*;
+import com.goafanti.cognizance.service.*;
+import com.goafanti.common.bo.Result;
+import com.goafanti.common.constant.AFTConstants;
+import com.goafanti.common.constant.ErrorConstants;
+import com.goafanti.common.controller.CertifyApiController;
+import com.goafanti.common.enums.*;
 import com.goafanti.common.model.*;
-import com.goafanti.common.utils.*;
+import com.goafanti.common.utils.DateUtils;
+import com.goafanti.common.utils.PasswordUtil;
+import com.goafanti.common.utils.StringUtils;
+import com.goafanti.common.utils.WeChatUtils;
+import com.goafanti.copyright.bo.CopyrightInfoDetail;
+import com.goafanti.copyright.service.CopyrightInfoService;
+import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.order.enums.OrderImgEnums;
+import com.goafanti.patent.service.PatentInfoService;
+import com.goafanti.user.bo.*;
+import com.goafanti.user.service.UserService;
+import com.goafanti.user.service.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
 import org.springframework.validation.BindingResult;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 
-import com.alibaba.fastjson.JSONObject;
-import com.goafanti.admin.service.AdminService;
-import com.goafanti.cognizance.bo.ActivityNumberBo;
-import com.goafanti.cognizance.bo.AnnualReportBo;
-import com.goafanti.cognizance.bo.CognizanceDetailBo;
-import com.goafanti.cognizance.bo.InputApplyCognizance;
-import com.goafanti.cognizance.bo.InputOrgActivity;
-import com.goafanti.cognizance.bo.InputOrgActivityCost;
-import com.goafanti.cognizance.bo.InputOrgAnnualReport;
-import com.goafanti.cognizance.bo.InputOrgFinance;
-import com.goafanti.cognizance.bo.InputOrgHonorDatum;
-import com.goafanti.cognizance.bo.InputOrgHumanResource;
-import com.goafanti.cognizance.bo.InputOrgIntellectualProperty;
-import com.goafanti.cognizance.bo.InputOrgRatepay;
-import com.goafanti.cognizance.bo.InputOrgStandard;
-import com.goafanti.cognizance.bo.InputOrgTechAchievement;
-import com.goafanti.cognizance.bo.InputOrgTechCenter;
-import com.goafanti.cognizance.bo.InputOrgTechCenterDetail;
-import com.goafanti.cognizance.bo.InputOrgTechProduct;
-import com.goafanti.cognizance.bo.OrgIntellectualPropertyDetailBo;
-import com.goafanti.cognizance.service.OrgActivityCostService;
-import com.goafanti.cognizance.service.OrgActivityService;
-import com.goafanti.cognizance.service.OrgAnnualReportService;
-import com.goafanti.cognizance.service.OrgCognizanceLogService;
-import com.goafanti.cognizance.service.OrgCognizanceProportionService;
-import com.goafanti.cognizance.service.OrgCognizanceService;
-import com.goafanti.cognizance.service.OrgFinanceService;
-import com.goafanti.cognizance.service.OrgHonorDatumService;
-import com.goafanti.cognizance.service.OrgIntellectualPropertyService;
-import com.goafanti.cognizance.service.OrgRatepayService;
-import com.goafanti.cognizance.service.OrgStandardService;
-import com.goafanti.cognizance.service.OrgTechAchievementService;
-import com.goafanti.cognizance.service.OrgTechCenterDetailService;
-import com.goafanti.cognizance.service.OrgTechCenterService;
-import com.goafanti.cognizance.service.OrgTechProductService;
-import com.goafanti.common.bo.Result;
-import com.goafanti.common.constant.AFTConstants;
-import com.goafanti.common.constant.ErrorConstants;
-import com.goafanti.common.controller.CertifyApiController;
-import com.goafanti.common.enums.AttachmentType;
-import com.goafanti.common.enums.CertifySubmitType;
-import com.goafanti.common.enums.CognizanceApplyFields;
-import com.goafanti.common.enums.DeleteStatus;
-import com.goafanti.common.enums.FinanceRatepayFields;
-import com.goafanti.common.enums.IdentityAuditStatus;
-import com.goafanti.common.enums.IdentityProcess;
-import com.goafanti.common.enums.IntellectualPropertyType;
-import com.goafanti.common.enums.OrgActivityFields;
-import com.goafanti.common.enums.OrgAnnualReportFields;
-import com.goafanti.common.enums.OrgCognizanceStatus;
-import com.goafanti.common.enums.OrgFinanceFields;
-import com.goafanti.common.enums.OrgHonorDatumFields;
-import com.goafanti.common.enums.OrgHumanResourceFields;
-import com.goafanti.common.enums.OrgIntellectualPropertyFields;
-import com.goafanti.common.enums.OrgRatepayFields;
-import com.goafanti.common.enums.OrgStandardFields;
-import com.goafanti.common.enums.OrgTechAchievementFields;
-import com.goafanti.common.enums.OrgTechCenterDetailFields;
-import com.goafanti.common.enums.OrgTechCenterFields;
-import com.goafanti.common.enums.OrgTechProductFields;
-import com.goafanti.common.enums.OrganizationIdentityFields;
-import com.goafanti.common.enums.ProportionStatus;
-import com.goafanti.common.enums.ProprotionFields;
-import com.goafanti.common.enums.UserAbilityFields;
-import com.goafanti.common.enums.UserFields;
-import com.goafanti.common.enums.UserIdentityFields;
-import com.goafanti.common.enums.UserLevel;
-import com.goafanti.common.enums.UserType;
-import com.goafanti.copyright.bo.CopyrightInfoDetail;
-import com.goafanti.copyright.service.CopyrightInfoService;
-import com.goafanti.core.shiro.token.TokenManager;
-import com.goafanti.patent.service.PatentInfoService;
-import com.goafanti.user.bo.InputOrganizationIdentity;
-import com.goafanti.user.bo.InputUser;
-import com.goafanti.user.bo.InputUserAbility;
-import com.goafanti.user.bo.InputUserIdentity;
-import com.goafanti.user.bo.OrgUnitNames;
-import com.goafanti.user.service.OrgHumanResourceService;
-import com.goafanti.user.service.OrganizationIdentityService;
-import com.goafanti.user.service.UserAbilityService;
-import com.goafanti.user.service.UserIdentityService;
-import com.goafanti.user.service.UserService;
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.math.BigDecimal;
+import java.text.ParseException;
+import java.util.*;
+import java.util.stream.Collectors;
 
 @Controller
 @RequestMapping(value = "/api/admin")

+ 3 - 2
src/main/java/com/goafanti/business/service/impl/RestrictProjectServiceImpl.java

@@ -193,12 +193,13 @@ public class RestrictProjectServiceImpl extends BaseMybatisDao<RestrictProjectMa
 //                LocalDateTime endTime = lockTime.plusDays(30);
 //                long between = ChronoUnit.DAYS.between(now, endTime);
 //                e.setPrivateDays(between>0?(int)between:0);
-                e.setPrivateDays(e.getDays());
+                //保持与旧版开发29-0一致,所以减去一天与私有客户同步
+                e.setPrivateDays(e.getDays()-1);
             }else if (e.getType()==2){
 //                LocalDateTime endTime = lockTime.plusDays(270);
 //                long between = ChronoUnit.DAYS.between(now, endTime);
 //                e.setSignDays(between>0?(int)between:0);
-                e.setSignDays(e.getDays());
+                e.setSignDays(e.getDays()-1);
             }
         }
     }

+ 3 - 0
src/main/java/com/goafanti/common/constant/AFTConstants.java

@@ -56,6 +56,9 @@ public class AFTConstants {
 	/** 运营管理 */
 	public static final String  OPERATION_MANAGER		            = "9989";
 
+	/** 运营管理 */
+	public static final String  OPERATION_GUARANTEE		            = "9988";
+
 	/**	湖南特批开票*/
 	public static final String  HN_APPROVED							= "9987";
 	/** 渠道总监 */

+ 6 - 2
src/main/java/com/goafanti/common/dao/DepartmentMapper.java

@@ -5,6 +5,7 @@ import com.goafanti.admin.bo.AdminListBo;
 import com.goafanti.admin.bo.DepCountBo;
 import com.goafanti.common.model.Department;
 import com.goafanti.organization.bo.DepOut;
+import com.goafanti.organization.bo.InputDep;
 import com.goafanti.organization.bo.OrganizationListOut;
 import org.apache.ibatis.annotations.Param;
 
@@ -13,7 +14,7 @@ import java.util.List;
 /**
 * @author Administrator
 * @description 针对表【department】的数据库操作Mapper
-* @createDate 2024-06-11 17:10:31
+* @createDate 2024-06-14 09:40:31
 * @Entity com.goafanti.common.model.Department
 */
 public interface DepartmentMapper {
@@ -125,7 +126,10 @@ public interface DepartmentMapper {
     void updateDepFinance(@Param("aid") String aid, @Param("transferId") String transferId);
 
 
-    void updateOrderDepFinanceNotExamine(@Param("newFinanceId") String newFinanceId, @Param("useFinanceId") String useFinanceId);
+    void updateOrderDepFinanceNotExamine(@Param("newFinanceId") String newFinanceId, @Param("useFinanceId") String useFinanceId, @Param("depId") String depId);
 
     void updateExpenseFinanceNotExamine(@Param("newFinanceId") String newFinanceId, @Param("useFinanceId") String useFinanceId);
+
+    void updateNull(InputDep in);
+
 }

+ 30 - 0
src/main/java/com/goafanti/common/dao/TOrderApprovalMapper.java

@@ -0,0 +1,30 @@
+package com.goafanti.common.dao;
+
+import com.goafanti.common.model.TOrderApproval;
+
+import java.util.List;
+
+/**
+* @author Administrator
+* @description 针对表【t_order_approval(订单特批分类表)】的数据库操作Mapper
+* @createDate 2024-06-20 09:06:19
+* @Entity com.goafanti.common.model.TOrderApproval
+*/
+public interface TOrderApprovalMapper {
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(TOrderApproval record);
+
+    int insertSelective(TOrderApproval record);
+
+    TOrderApproval selectByPrimaryKey(Integer id);
+
+    int updateByPrimaryKeySelective(TOrderApproval record);
+
+    int updateByPrimaryKey(TOrderApproval record);
+
+    void deleteByOderNo(String orderNo);
+
+    List<TOrderApproval> selectByOrderNo(String orderNo);
+}

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

@@ -33,4 +33,6 @@ public interface TOrderExamineMapper {
     List<TOrderExamine> selectExamineBytidAndAid(@Param("list")List<Integer> ids,@Param("aid") String aid);
 
     void deleteByTid(Integer tid);
+
+    void deleteExamineFinance(@Param("depId") String depId, @Param("aid") String aid);
 }

+ 11 - 4
src/main/java/com/goafanti/common/dao/TOrderNewMapper.java

@@ -15,7 +15,12 @@ import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-
+/**
+* @author Administrator
+* @description 针对表【t_order_new(订单表)】的数据库操作Mapper
+* @createDate 2024-06-19 17:07:06
+* @Entity com.goafanti.common.model.TOrderNew
+*/
 public interface TOrderNewMapper {
     int deleteByPrimaryKey(String orderNo);
 
@@ -46,7 +51,7 @@ public interface TOrderNewMapper {
 
     int updateFinance(@Param("aid")String aid, @Param("orderNos") List<String> orderNos, @Param("newFinance")String newFinance);
     int checkContractNo(String sno);
-    Map<String, Object> countTotalAndActually(@Param("o") OrderListBo o, @Param("fids") List<String> fids, @Param("deps")List<String> listDep);
+    Map<String, Object> countTotalAndActually(@Param("o") OrderListBo o, @Param("fids") List<String> fids, @Param("deps")List<String> listDep,@Param("types")List<String> types);
     TOrderBillNew getLastPayment(String orderNo);
     int updateSalesmanId(@Param("aid")String aid, @Param("transferId")String transferId);
     List<TOrderNewBo> selectUsedOrderByOrder(String orderNo);
@@ -100,13 +105,15 @@ public interface TOrderNewMapper {
 
     Department selectDepByOrderNo(String orderNo);
 
-    List<String> selectByFinanceNotExamine(String financeId);
+    List<String> selectByFinanceNotExamine(@Param("financeId") String financeId, @Param("depId") String depId);
 
-    void updateOrderDepFinanceExamineName(List<String> list);
+    void updateOrderDepFinanceExamineName(@Param("list") List<String> list, @Param("processStatus") Integer processStatus);
 
     List<ExpenseCountsBo> selectExpenseCount(ExpenseCountsInput in);
 
     List<ExpenseCountsBo> selectExpenseDepCount(ExpenseCountsInput in);
 
 
+    List<String> selectByDepAndProcess(@Param("depId") String depId, @Param("processStatus") Integer processStatus);
+
 }

+ 3 - 2
src/main/java/com/goafanti/common/dao/TOrderPublicReleaseCountMapper.java

@@ -1,11 +1,12 @@
 package com.goafanti.common.dao;
 
 import com.goafanti.common.model.TOrderPublicReleaseCount;
+import org.apache.ibatis.annotations.Param;
 
 /**
 * @author Administrator
 * @description 针对表【t_order_public_release_count(订单公出信息表)】的数据库操作Mapper
-* @createDate 2024-04-25 14:37:55
+* @createDate 2024-06-17 10:18:34
 * @Entity com.goafanti.common.model.TOrderPublicReleaseCount
 */
 public interface TOrderPublicReleaseCountMapper {
@@ -22,7 +23,7 @@ public interface TOrderPublicReleaseCountMapper {
 
     int updateByPrimaryKey(TOrderPublicReleaseCount record);
 
-    TOrderPublicReleaseCount selectByOrderNo(String orderNo);
+    TOrderPublicReleaseCount selectByOrderNo(@Param("orderNo") String orderNo, @Param("sumYear") String sumYear);
 
     void updateByOrderNo(TOrderPublicReleaseCount update);
 }

+ 11 - 11
src/main/java/com/goafanti/common/enums/NoticeTypes.java

@@ -31,7 +31,7 @@ public enum NoticeTypes {
 	 */
 	public static Integer getType(Integer i) {
 		if (i == NoticeStatus.TASK_PATENT_ERROR.getCode() || i == NoticeStatus.TASK_PATENT_REMIND.getCode()) {
-			return 1;
+			return ZLTX.code;
 		} else if (i == NoticeStatus.ORDER_CHANGE_ADD.getCode() || i == NoticeStatus.ORDER_CHANGE_UDPATE.getCode()
 				|| i == NoticeStatus.ORDER_BACK.getCode() || i == NoticeStatus.ORDER_REFUND.getCode()
 				|| i == NoticeStatus.ORDER_REFUND_REFUSE.getCode() || i == NoticeStatus.ORDER_CHANGE_YES.getCode()
@@ -49,34 +49,34 @@ public enum NoticeTypes {
 				|| i == NoticeStatus.PROJECT_SOPT_NO.getCode()
 				|| i == NoticeStatus.PROJECT_RENEW_START.getCode() || i == NoticeStatus.PROJECT_RENEW_YES.getCode()
 				|| i == NoticeStatus.PROJECT_RENEW_NO.getCode() ) {
-			return 2;
+			return DDSH.code;
 		} else if (i == NoticeStatus.CUSTOMER_LOSE30.getCode() || i == NoticeStatus.CUSTOMER_LOSE270.getCode()
 				|| i == NoticeStatus.CUSTOMER_CHENNEL_LOSE.getCode() || i == NoticeStatus.CUSTOMER_CHENNEL_RECOVERY.getCode()
 				|| i == NoticeStatus.RESTRICT_PROJECT_LOSE30.getCode() || i == NoticeStatus.RESTRICT_PROJECT_LOSE270.getCode()
+		) {
+			return KHSF.code;
+		} else if (i == NoticeStatus.CUSTOMER_PRIVATE_REMINDER.getCode()|| i == NoticeStatus.CUSTOMER_LOSE_REMINDER.getCode()
 				|| i == NoticeStatus.RESTRICT_PROJECT_LOSE30_REMIND.getCode() || i == NoticeStatus.RESTRICT_PROJECT_LOSE270_REMIND.getCode()
 		) {
-			return 3;
-		} else if (i == NoticeStatus.CUSTOMER_PRIVATE_REMINDER.getCode()
-				|| i == NoticeStatus.CUSTOMER_LOSE_REMINDER.getCode()) {
-			return 4;
+			return XSGJ.code;
 		} else if (i == NoticeStatus.ORDER_DUN.getCode() || i == NoticeStatus.ORDER_ARREARS_DUN.getCode()
 				|| i == NoticeStatus.PAYMENT_DUN.getCode() || i == NoticeStatus.PAYMENT_NODE.getCode()
 				|| i == NoticeStatus.PAYMENT_NO.getCode() || i == NoticeStatus.PAYMENT_YES.getCode()
 				|| i == NoticeStatus.PAYMENT_COMPLETE.getCode()) {
-			return 5;
+			return CKFK.code;
 		} else if (i == NoticeStatus.ORDER_INVPICE_START.getCode() || i == NoticeStatus.ORDER_INVPICE_YES.getCode()
 				|| i == NoticeStatus.ORDER_INVPICE_NO.getCode() || i == NoticeStatus.ORDER_INVPICE_APPROVA_YES.getCode()
 				|| i == NoticeStatus.ORDER_INVPICE_APPROVA_NO.getCode()
 				|| i == NoticeStatus.ORDER_INVPICE_END.getCode()) {
-			return 6;
+			return DDKP.code;
 		}else if (i == NoticeStatus.MENBER_DUN.getCode()) {
-			return 7;
+			return HYCS.code;
 		}else if ( i== NoticeStatus.PUBLIC_OTHERS_USER.getCode() || i== NoticeStatus.PUBLIC_RELEASE_START.getCode()
 				|| i== NoticeStatus.PUBLIC_RELEASE_YES.getCode()|| i== NoticeStatus.PUBLIC_RELEASE_NO.getCode()
 				|| i== NoticeStatus.PUBLIC_CARBON_COPY.getCode()) {
-			return 8;
+			return GCXX.code;
 		}
-		return 0;
+		return ELSE.code;
 	}
 
 	private static final Map<Integer, NoticeTypes> status = new HashMap<Integer, NoticeTypes>();

+ 3 - 0
src/main/java/com/goafanti/common/enums/OrderLogProcess.java

@@ -37,6 +37,9 @@ public enum OrderLogProcess {
 	HYTPBH(22,"会员特批驳回"),
 	HYXMWC(23,"会员项目完成"),
 	DDZJ(24,"订单转交"),
+
+	YYBZSHTG(26,"运营保障审核通过"),
+	YYBZSHBH(27,"运营保障审核驳回"),
 	NOT(99,"未知"),
 	;
 

+ 32 - 10
src/main/java/com/goafanti/common/mapper/DepartmentMapper.xml

@@ -36,6 +36,7 @@
             <result property="viceCeoExamine" column="vice_ceo_examine" jdbcType="INTEGER"/>
             <result property="cashierExamine" column="cashier_examine" jdbcType="INTEGER"/>
             <result property="techAdminId" column="tech_admin_id" jdbcType="VARCHAR"/>
+            <result property="operationGuaranteeId" column="operation_guarantee_id" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
@@ -49,7 +50,7 @@
         retrial_finance_id,approval,approval_aid,
         expense_finance_id,expense_retrial_finance_examine,ceo_examine,
         cfo_examine,vice_ceo_examine,cashier_examine,
-        tech_admin_id
+        tech_admin_id,operation_guarantee_id
     </sql>
 
     <select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
@@ -75,7 +76,7 @@
         ,retrial_finance_id,approval,approval_aid
         ,expense_finance_id,expense_retrial_finance_examine,ceo_examine
         ,cfo_examine,vice_ceo_examine,cashier_examine
-        ,tech_admin_id)
+        ,tech_admin_id,operation_guarantee_id)
         values (#{id,jdbcType=VARCHAR},#{createId,jdbcType=VARCHAR},#{createTime,jdbcType=TIMESTAMP}
         ,#{updateTime,jdbcType=TIMESTAMP},#{deletedSign,jdbcType=INTEGER},#{name,jdbcType=VARCHAR}
         ,#{type,jdbcType=VARCHAR},#{managerId,jdbcType=VARCHAR},#{depNo,jdbcType=VARCHAR}
@@ -86,7 +87,7 @@
         ,#{retrialFinanceId,jdbcType=VARCHAR},#{approval,jdbcType=INTEGER},#{approvalAid,jdbcType=VARCHAR}
         ,#{expenseFinanceId,jdbcType=VARCHAR},#{expenseRetrialFinanceExamine,jdbcType=INTEGER},#{ceoExamine,jdbcType=INTEGER}
         ,#{cfoExamine,jdbcType=INTEGER},#{viceCeoExamine,jdbcType=INTEGER},#{cashierExamine,jdbcType=INTEGER}
-        ,#{techAdminId,jdbcType=VARCHAR})
+        ,#{techAdminId,jdbcType=VARCHAR},#{operationGuaranteeId,jdbcType=VARCHAR})
     </insert>
     <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.Department" useGeneratedKeys="true">
         insert into department
@@ -122,6 +123,7 @@
                 <if test="viceCeoExamine != null">vice_ceo_examine,</if>
                 <if test="cashierExamine != null">cashier_examine,</if>
                 <if test="techAdminId != null">tech_admin_id,</if>
+                <if test="operationGuaranteeId != null">operation_guarantee_id,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
                 <if test="id != null">#{id,jdbcType=VARCHAR},</if>
@@ -155,6 +157,7 @@
                 <if test="viceCeoExamine != null">#{viceCeoExamine,jdbcType=INTEGER},</if>
                 <if test="cashierExamine != null">#{cashierExamine,jdbcType=INTEGER},</if>
                 <if test="techAdminId != null">#{techAdminId,jdbcType=VARCHAR},</if>
+                <if test="operationGuaranteeId != null">#{operationGuaranteeId,jdbcType=VARCHAR},</if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.Department">
@@ -250,6 +253,9 @@
                 <if test="techAdminId != null">
                     tech_admin_id = #{techAdminId,jdbcType=VARCHAR},
                 </if>
+                <if test="operationGuaranteeId != null">
+                    operation_guarantee_id = #{operationGuaranteeId,jdbcType=VARCHAR},
+                </if>
         </set>
         where   id = #{id,jdbcType=VARCHAR} 
     </update>
@@ -285,7 +291,8 @@
             cfo_examine =  #{cfoExamine,jdbcType=INTEGER},
             vice_ceo_examine =  #{viceCeoExamine,jdbcType=INTEGER},
             cashier_examine =  #{cashierExamine,jdbcType=INTEGER},
-            tech_admin_id =  #{techAdminId,jdbcType=VARCHAR}
+            tech_admin_id =  #{techAdminId,jdbcType=VARCHAR},
+            operation_guarantee_id =  #{operationGuaranteeId,jdbcType=VARCHAR}
         where   id = #{id,jdbcType=VARCHAR} 
     </update>
 
@@ -404,10 +411,11 @@
                a.ceo_examine ceoExamine,a.cfo_examine cfoExamine ,a.vice_ceo_examine viceCeoExamine,a.cashier_examine cashierExamine,
                a.province, c.name financeName, a.working_hours_type workingHoursType, b.name as managerName,
                a.retrial_finance_id retrialFinanceId, d.name retrialFinanceName,a.approval,a.approval_aid approvalAid,e.name approvalName,
-                a.tech_admin_id techAdminId,g.name techAdminName
+                a.tech_admin_id techAdminId,g.name techAdminName,a.operation_guarantee_id operationGuaranteeId,h.name operationGuaranteeName
         from department a left join admin b on a.manager_id = b.id left join admin c on a.finance_id = c.id
                           left join admin d on a.retrial_finance_id=d.id left join admin e on a.approval_aid =e.id
                           left join admin f on a.expense_finance_id=f.id left join admin g on a.tech_admin_id=g.id
+                        left join admin h on a.operation_guarantee_id=h.id
         where a.id=#{id,jdbcType=VARCHAR}
     </select>
     <delete id="deleteById" parameterType="java.lang.String">
@@ -602,10 +610,10 @@
     </update>
 
     <update id="updateOrderDepFinanceNotExamine">
-        update t_order_examine a ,admin b
-        set a.aid=b.id , aname =b.name
-        where a.aid=#{useFinanceId} and a.status =0
-          and b.id= #{newFinanceId}
+        update t_order_examine a left join t_order_new b on a.order_no =b.order_no,admin c
+        set a.aid=c.id , a.aname =c.name
+        where a.aid= #{useFinanceId} and a.status =0
+          and c.id= #{newFinanceId}   and b.order_dep=#{depId}
     </update>
     <update id="updateExpenseFinanceNotExamine">
         update expense_account_examine a ,admin b
@@ -613,5 +621,19 @@
         where a.process_status =3 and a.status =0 and a.auditor = #{useFinanceId}
           and b.id= #{newFinanceId}
     </update>
-
+    <update id="updateNull" parameterType="com.goafanti.organization.bo.InputDep">
+        update department
+        <set>
+            <if test="techAdminId ==null">
+                tech_admin_id=null,
+            </if>
+            <if test="operationGuaranteeId ==null">
+                operation_guarantee_id=null,
+            </if>
+            <if test="retrialFinanceId==null">
+                retrial_finance_id=null,
+            </if>
+        </set>
+        where id=#{id}
+    </update>
 </mapper>

+ 52 - 143
src/main/java/com/goafanti/common/mapper/NewOrderChangeMapper.xml

@@ -603,142 +603,13 @@ from new_order_change a where 1 = 1 and status in (0,1,2,3)
 	group by order_no,aid)x on a.order_no = x.order_no
 	</if>
 	where 1=1
-	<if test="processState==0">
-	and b.salesman_id= #{aid}
-	</if>
-    <if test="processState==1">
-      and d.manager_id= #{aid}
-    </if>
-	<if test="processState==3 and complete !=5">
-	and  x.aid=#{aid}  and a.process_state &gt;= #{processState}
-	</if>
-	<if test="processState==4 and complete !=5">
-	and x.aid=#{aid}  and a.process_state &gt;= #{processState}
-	</if>
-	<if test="processState==3 and complete ==5">
-	and  x.aid=#{aid}  and a.back_status &gt;= #{processState}
-	</if>
-	<if test="processState==4 and complete ==5">
-	and x.aid=#{aid}  and a.back_status &gt;= #{processState}
-	</if>
-	<if test="processState==6 and aid !=null">
-	and e.finance_id =#{aid}
-	</if>
-	<if test="processState==6 and aids !=null">
-	and e.finance_id in
-		<foreach close=")" collection="aids" item="id" open="(" separator=",">
-		#{id}
-		</foreach>
-	</if>
-    <if test="processState==8 and aid !=null">
-      and e.approval_aid =#{aid}
-    </if>
-	<if test="userName !=null">
-	and c.nickname like concat('%',#{userName},'%')
-	</if>
-	<if test="orderNo !=null">
-	and a.order_no like concat('%',#{orderNo},'%')
-	</if>
-	<if test="contractNo !=null">
-	and b.contract_no like concat('%',#{contractNo},'%')
-	</if>
-	<if test="type !=null">
-	and a.type = #{type}
-	</if>
-	<if test="timeType == 0 and startTime !=null and endTime !=null">
-	and a.create_time between #{startTime} and #{endTime}
-	</if>
-	<if test="timeType == 1 and startTime !=null and endTime !=null">
-	and b.create_time between #{startTime} and #{endTime}
-	</if>
-	<if test="deps !=null">
-	and b.order_dep in
-      <foreach close=")" collection="deps" item="depId" open="(" separator=",">
-        #{depId}
-      </foreach>
-	</if>
-	<if test="salesmanName !=null">
-	and d.name like concat('%',#{salesmanName},'%')
-	</if>
-    <if test="complete ==0 and  processState != 5  and processState &lt; 7">
-      and ((a.process_state &gt;= #{processState} or a.back_status &gt;= #{processState}))
-    </if>
-    <if test="complete ==0 and (processState == 5 or processState == 7)">
-      and ((a.process_state &gt;= #{processState} and  a.process_state &lt; 10)or a.back_status &gt;= #{processState})
-    </if>
-    <if test="complete ==0 and processState == 8">
-      and ((a.process_state &gt;= 8 and  a.process_state &lt; 10)or a.back_status &gt;= #{processState})
-    </if>
-    <if test="complete ==0 and processState == 9">
-      and ((a.process_state = 9 )or a.back_status &gt;= #{processState})
-    </if>
-    <if test="complete ==1 and processState &lt; 6">
-	 and a.process_state = #{processState} and a.status in (0,1,2,3)
-	</if>
-	<if test="complete ==1 and processState == 6">
-	 and (a.process_state in(6)  and a.status in (0,1,2,3,5,6))
-	</if>
-	<if test="complete ==1 and processState > 6">
-      and (a.process_state = #{processState}  and a.status =1)
-    </if>
-
-	<if test="complete ==2 and processState != 6 and processState != 8 and processState != 9 and processState !=3 and processState !=4">
-	 and a.process_state &gt; #{processState}
-	</if>
-	<if test="complete ==2 and processState == 6">
-	 and((a.process_state &gt; 6 and a.process_state &lt; 10) or (a.process_state =6 and a.status=4))
-	</if>
-	<if test="complete ==2 and processState == 8">
-	 and ((a.process_state = 8  and  a.status in(2,4))or a.process_state &gt; 8)
-	</if>
-	<if test="complete ==2 and processState == 9">
-	 and a.process_state = 9  and   a.status in (2,4)
-
-	</if>
-	<if test="complete ==3">
-	 and   a.status = 2
-	</if>
-	<if test="complete ==4">
-	 and   a.status = 4
-	</if>
-    <if test="complete ==5 and processState != 3 and processState != 4">
-	 and a.back_status = #{processState}
-	</if>
-    <if test="complete ==6">
-      and   a.status = 6
-    </if>
+    <include refid="selectOrderChangeSql"/>
 	order by a.status,a.create_time desc
 	<if test="page_sql != null">
 			${page_sql}
 	</if>
   </select>
-
-  <!--suppress MybatisPlusMapperXmlInspection -->
-  <select id="selectOrderChangeCount" resultType="java.lang.Integer">
-  select count(*) from new_order_change noc left join  new_order_change a on noc.id=a.id
-  left join t_order_new b on a.order_no=b.order_no left join user c on b.buyer_id=c.id
-  left join admin d on b.salesman_id=d.id left join department e on b.order_dep=e.id
-    <if test="processState==3">
-      left join (select order_no, aid from order_examine where`type`=0
-      <if test="complete ==1">
-        and status=0
-      </if>
-      <if test="complete ==2">
-        and status=1
-      </if>
-      group by order_no,aid)x on a.order_no = x.order_no
-    </if>
-    <if test="processState==4">
-      left join (select order_no, aid from order_examine where`type`=1
-      <if test="complete ==1">
-        and status=0
-      </if>
-      <if test="complete ==2">
-        and status=1
-      </if>
-      group by order_no,aid)x on a.order_no = x.order_no
-    </if>
-    where 1=1
+  <sql id="selectOrderChangeSql">
     <if test="processState==0">
       and b.salesman_id= #{aid}
     </if>
@@ -767,6 +638,9 @@ from new_order_change a where 1 = 1 and status in (0,1,2,3)
       </foreach>
     </if>
     <if test="processState==8 and aid !=null">
+      and e.operation_guarantee_id=#{aid}
+    </if>
+    <if test="processState==9 and aid !=null">
       and e.approval_aid =#{aid}
     </if>
     <if test="userName !=null">
@@ -796,17 +670,17 @@ from new_order_change a where 1 = 1 and status in (0,1,2,3)
     <if test="salesmanName !=null">
       and d.name like concat('%',#{salesmanName},'%')
     </if>
-    <if test="complete ==0 and  processState != 5  and processState &lt; 7">
+    <if test="complete ==0 and  processState != 5  and processState &lt;= 8">
       and ((a.process_state &gt;= #{processState} or a.back_status &gt;= #{processState}))
     </if>
     <if test="complete ==0 and (processState == 5 or processState == 7)">
       and ((a.process_state &gt;= #{processState} and  a.process_state &lt; 10)or a.back_status &gt;= #{processState})
     </if>
-    <if test="complete ==0 and processState == 8">
-      and ((a.process_state &gt;= 8 and  a.process_state &lt; 10)or a.back_status &gt;= #{processState})
-    </if>
     <if test="complete ==0 and processState == 9">
-      and ((a.process_state = 9 )or a.back_status &gt;= #{processState})
+      and ((a.process_state &gt;= 9 and  a.process_state &lt; 11)or a.back_status &gt;= #{processState})
+    </if>
+    <if test="complete ==0 and processState == 10">
+      and ((a.process_state = 10 )or a.back_status &gt;= #{processState})
     </if>
     <if test="complete ==1 and processState &lt; 6">
       and a.process_state = #{processState} and a.status in (0,1,2,3)
@@ -814,22 +688,27 @@ from new_order_change a where 1 = 1 and status in (0,1,2,3)
     <if test="complete ==1 and processState == 6">
       and (a.process_state in(6)  and a.status in (0,1,2,3,5,6))
     </if>
-    <if test="complete ==1 and processState > 6">
+    <if test="complete ==1 and processState > 6 and processState &lt; 8">
       and (a.process_state = #{processState}  and a.status =1)
     </if>
-
-    <if test="complete ==2 and processState != 6 and processState != 8 and processState != 9 and processState !=3 and processState !=4">
+    <if test="complete ==1  and processState > 7">
+      and a.process_state =  #{processState}   and a.status =1
+    </if>
+    <if test="complete ==2 and processState != 6 and processState != 9 and processState != 10 and processState !=3 and processState !=4">
       and a.process_state &gt; #{processState}
     </if>
     <if test="complete ==2 and processState == 6">
       and((a.process_state &gt; 6 and a.process_state &lt; 10) or (a.process_state =6 and a.status=4))
     </if>
     <if test="complete ==2 and processState == 8">
-      and ((a.process_state = 8  and  a.status in(2,4))or a.process_state &gt; 8)
+      and e.operation_guarantee_id=#{aid}
+      and  a.process_state > 7 and a.status in (2,4)
     </if>
     <if test="complete ==2 and processState == 9">
-      and a.process_state = 9  and   a.status in (2,4)
-
+      and ((a.process_state = 9  and  a.status in(2,4))or a.process_state &gt; 9)
+    </if>
+    <if test="complete ==2 and processState == 10">
+      and a.process_state = 10  and   a.status in (2,4)
     </if>
     <if test="complete ==3">
       and   a.status = 2
@@ -843,6 +722,35 @@ from new_order_change a where 1 = 1 and status in (0,1,2,3)
     <if test="complete ==6">
       and   a.status = 6
     </if>
+  </sql>
+
+  <!--suppress MybatisPlusMapperXmlInspection -->
+  <select id="selectOrderChangeCount" resultType="java.lang.Integer">
+  select count(*) from new_order_change noc left join  new_order_change a on noc.id=a.id
+  left join t_order_new b on a.order_no=b.order_no left join user c on b.buyer_id=c.id
+  left join admin d on b.salesman_id=d.id left join department e on b.order_dep=e.id
+    <if test="processState==3">
+      left join (select order_no, aid from order_examine where`type`=0
+      <if test="complete ==1">
+        and status=0
+      </if>
+      <if test="complete ==2">
+        and status=1
+      </if>
+      group by order_no,aid)x on a.order_no = x.order_no
+    </if>
+    <if test="processState==4">
+      left join (select order_no, aid from order_examine where`type`=1
+      <if test="complete ==1">
+        and status=0
+      </if>
+      <if test="complete ==2">
+        and status=1
+      </if>
+      group by order_no,aid)x on a.order_no = x.order_no
+    </if>
+    where 1=1
+    <include refid="selectOrderChangeSql"/>
 	</select>
 	<update id="addRefundInvoice">
 	update  new_order_change
@@ -940,7 +848,7 @@ from new_order_change a where 1 = 1 and status in (0,1,2,3)
     select a.id,a.order_no orderNo ,a.`type`,a.change_amount changeAmount ,a.status,a.process_state processState,
            if(dep.province=11,1,0)isHN, da.name approvalName,dep.approval approvalStatus,
            c.name yxy,mg.name yxjl, yxgly.name yxgly,zxs.name zxs,zxsjl.name zxsjl, zxsgly.name zxsgly,
-           fm.name cwzy,cwgly.name cwgly,dsz.name dsz,b.salesman_id salesmanId
+           fm.name cwzy,cwgly.name cwgly,dsz.name dsz,b.salesman_id salesmanId,yybz.name yybz
     from new_order_change a
            left join t_order_new b on a.order_no =b.order_no
            left join admin c on b.salesman_id =c.id
@@ -948,6 +856,7 @@ from new_order_change a where 1 = 1 and status in (0,1,2,3)
            left join admin da on dep.approval_aid = da.id
            left join admin fm on dep.finance_id =fm.id
            left join admin mg on c.manager_id =mg.id
+           left join admin yybz on dep.operation_guarantee_id=yybz.id
            left join (select a.department_id depId,group_concat(a.name) name
                       from admin a left join user_role b on a.id=b.uid
                                    left join `role` c on b.rid =c.id

+ 221 - 255
src/main/java/com/goafanti/common/mapper/PublicReleaseDetailsMapper.xml

@@ -1,263 +1,229 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.goafanti.common.dao.PublicReleaseDetailsMapper">
-  <resultMap id="BaseResultMap" type="com.goafanti.common.model.PublicReleaseDetails">
-    <id column="id" jdbcType="INTEGER" property="id" />
-    <result column="prid" jdbcType="INTEGER" property="prid" />
-    <result column="uid" jdbcType="VARCHAR" property="uid" />
-    <result column="ufid" jdbcType="VARCHAR" property="ufid" />
-    <result column="new_user" jdbcType="INTEGER" property="newUser" />
-    <result column="sign_sum" jdbcType="INTEGER" property="signSum" />
-    <result column="longitude" jdbcType="VARCHAR" property="longitude" />
-    <result column="latitude" jdbcType="VARCHAR" property="latitude" />
-    <result column="clock_in" jdbcType="INTEGER" property="clockIn" />
-    <result column="clock_in_time" jdbcType="TIMESTAMP" property="clockInTime" />
-    <result column="photo_url" jdbcType="VARCHAR" property="photoUrl" />
-    <result column="district_name" jdbcType="VARCHAR" property="districtName" />
-    <result column="clock_in_remarks" jdbcType="VARCHAR" property="clockInRemarks" />
-    <result column="duration" jdbcType="DOUBLE" property="duration" />
-    <result column="main_status" jdbcType="INTEGER" property="mainStatus" />
-    <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
-  </resultMap>
-  <sql id="Base_Column_List">
-    id, prid, `uid`, ufid, new_user, sign_sum, longitude, latitude, clock_in, clock_in_time,
-    photo_url, district_name, clock_in_remarks, duration, main_status, update_time
-  </sql>
-  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
-    select
-    <include refid="Base_Column_List" />
-    from public_release_details
-    where id = #{id,jdbcType=INTEGER}
-  </select>
-  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
-    delete from public_release_details
-    where id = #{id,jdbcType=INTEGER}
-  </delete>
-  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.PublicReleaseDetails" useGeneratedKeys="true">
-    insert into public_release_details (prid, `uid`, ufid,
-      new_user, sign_sum, longitude,
-      latitude, clock_in, clock_in_time,
-      photo_url, district_name, clock_in_remarks,
-      duration, main_status, update_time
-      )
-    values (#{prid,jdbcType=INTEGER}, #{uid,jdbcType=VARCHAR}, #{ufid,jdbcType=VARCHAR},
-      #{newUser,jdbcType=INTEGER}, #{signSum,jdbcType=INTEGER}, #{longitude,jdbcType=VARCHAR},
-      #{latitude,jdbcType=VARCHAR}, #{clockIn,jdbcType=INTEGER}, #{clockInTime,jdbcType=TIMESTAMP},
-      #{photoUrl,jdbcType=VARCHAR}, #{districtName,jdbcType=VARCHAR}, #{clockInRemarks,jdbcType=VARCHAR},
-      #{duration,jdbcType=DOUBLE}, #{mainStatus,jdbcType=INTEGER}, #{updateTime,jdbcType=TIMESTAMP}
-      )
-  </insert>
-  <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.PublicReleaseDetails" useGeneratedKeys="true">
-    insert into public_release_details
-    <trim prefix="(" suffix=")" suffixOverrides=",">
-      <if test="prid != null">
-        prid,
-      </if>
-      <if test="uid != null">
-        `uid`,
-      </if>
-      <if test="ufid != null">
-        ufid,
-      </if>
-      <if test="newUser != null">
-        new_user,
-      </if>
-      <if test="signSum != null">
-        sign_sum,
-      </if>
-      <if test="longitude != null">
-        longitude,
-      </if>
-      <if test="latitude != null">
-        latitude,
-      </if>
-      <if test="clockIn != null">
-        clock_in,
-      </if>
-      <if test="clockInTime != null">
-        clock_in_time,
-      </if>
-      <if test="photoUrl != null">
-        photo_url,
-      </if>
-      <if test="districtName != null">
-        district_name,
-      </if>
-      <if test="clockInRemarks != null">
-        clock_in_remarks,
-      </if>
-      <if test="duration != null">
-        duration,
-      </if>
-      <if test="mainStatus != null">
-        main_status,
-      </if>
-      <if test="updateTime != null">
-        update_time,
-      </if>
-    </trim>
-    <trim prefix="values (" suffix=")" suffixOverrides=",">
-      <if test="prid != null">
-        #{prid,jdbcType=INTEGER},
-      </if>
-      <if test="uid != null">
-        #{uid,jdbcType=VARCHAR},
-      </if>
-      <if test="ufid != null">
-        #{ufid,jdbcType=VARCHAR},
-      </if>
-      <if test="newUser != null">
-        #{newUser,jdbcType=INTEGER},
-      </if>
-      <if test="signSum != null">
-        #{signSum,jdbcType=INTEGER},
-      </if>
-      <if test="longitude != null">
-        #{longitude,jdbcType=VARCHAR},
-      </if>
-      <if test="latitude != null">
-        #{latitude,jdbcType=VARCHAR},
-      </if>
-      <if test="clockIn != null">
-        #{clockIn,jdbcType=INTEGER},
-      </if>
-      <if test="clockInTime != null">
-        #{clockInTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="photoUrl != null">
-        #{photoUrl,jdbcType=VARCHAR},
-      </if>
-      <if test="districtName != null">
-        #{districtName,jdbcType=VARCHAR},
-      </if>
-      <if test="clockInRemarks != null">
-        #{clockInRemarks,jdbcType=VARCHAR},
-      </if>
-      <if test="duration != null">
-        #{duration,jdbcType=DOUBLE},
-      </if>
-      <if test="mainStatus != null">
-        #{mainStatus,jdbcType=INTEGER},
-      </if>
-      <if test="updateTime != null">
-        #{updateTime,jdbcType=TIMESTAMP},
-      </if>
-    </trim>
-  </insert>
-  <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.PublicReleaseDetails">
-    update public_release_details
-    <set>
-      <if test="prid != null">
-        prid = #{prid,jdbcType=INTEGER},
-      </if>
-      <if test="uid != null">
-        `uid` = #{uid,jdbcType=VARCHAR},
-      </if>
-      <if test="ufid != null">
-        ufid = #{ufid,jdbcType=VARCHAR},
-      </if>
-      <if test="newUser != null">
-        new_user = #{newUser,jdbcType=INTEGER},
-      </if>
-      <if test="signSum != null">
-        sign_sum = #{signSum,jdbcType=INTEGER},
-      </if>
-      <if test="longitude != null">
-        longitude = #{longitude,jdbcType=VARCHAR},
-      </if>
-      <if test="latitude != null">
-        latitude = #{latitude,jdbcType=VARCHAR},
-      </if>
-      <if test="clockIn != null">
-        clock_in = #{clockIn,jdbcType=INTEGER},
-      </if>
-      <if test="clockInTime != null">
-        clock_in_time = #{clockInTime,jdbcType=TIMESTAMP},
-      </if>
-      <if test="photoUrl != null">
-        photo_url = #{photoUrl,jdbcType=VARCHAR},
-      </if>
-      <if test="districtName != null">
-        district_name = #{districtName,jdbcType=VARCHAR},
-      </if>
-      <if test="clockInRemarks != null">
-        clock_in_remarks = #{clockInRemarks,jdbcType=VARCHAR},
-      </if>
-      <if test="duration != null">
-        duration = #{duration,jdbcType=DOUBLE},
-      </if>
-      <if test="mainStatus != null">
-        main_status = #{mainStatus,jdbcType=INTEGER},
-      </if>
-      <if test="updateTime != null">
-        update_time = #{updateTime,jdbcType=TIMESTAMP},
-      </if>
-    </set>
-    where id = #{id,jdbcType=INTEGER}
-  </update>
-  <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.PublicReleaseDetails">
-    update public_release_details
-    set prid = #{prid,jdbcType=INTEGER},
-      `uid` = #{uid,jdbcType=VARCHAR},
-      ufid = #{ufid,jdbcType=VARCHAR},
-      new_user = #{newUser,jdbcType=INTEGER},
-      sign_sum = #{signSum,jdbcType=INTEGER},
-      longitude = #{longitude,jdbcType=VARCHAR},
-      latitude = #{latitude,jdbcType=VARCHAR},
-      clock_in = #{clockIn,jdbcType=INTEGER},
-      clock_in_time = #{clockInTime,jdbcType=TIMESTAMP},
-      photo_url = #{photoUrl,jdbcType=VARCHAR},
-      district_name = #{districtName,jdbcType=VARCHAR},
-      clock_in_remarks = #{clockInRemarks,jdbcType=VARCHAR},
-      duration = #{duration,jdbcType=DOUBLE},
-      main_status = #{mainStatus,jdbcType=INTEGER},
-      update_time = #{updateTime,jdbcType=TIMESTAMP}
-    where id = #{id,jdbcType=INTEGER}
-  </update>
 
+    <resultMap id="BaseResultMap" type="com.goafanti.common.model.PublicReleaseDetails">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="prid" column="prid" jdbcType="INTEGER"/>
+            <result property="uid" column="uid" jdbcType="VARCHAR"/>
+            <result property="ufid" column="ufid" jdbcType="VARCHAR"/>
+            <result property="newUser" column="new_user" jdbcType="INTEGER"/>
+            <result property="signSum" column="sign_sum" jdbcType="INTEGER"/>
+            <result property="longitude" column="longitude" jdbcType="VARCHAR"/>
+            <result property="latitude" column="latitude" jdbcType="VARCHAR"/>
+            <result property="clockIn" column="clock_in" jdbcType="INTEGER"/>
+            <result property="clockInTime" column="clock_in_time" jdbcType="TIMESTAMP"/>
+            <result property="photoUrl" column="photo_url" jdbcType="VARCHAR"/>
+            <result property="districtName" column="district_name" jdbcType="VARCHAR"/>
+            <result property="clockInRemarks" column="clock_in_remarks" jdbcType="VARCHAR"/>
+            <result property="duration" column="duration" jdbcType="DOUBLE"/>
+            <result property="mainStatus" column="main_status" jdbcType="INTEGER"/>
+            <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
+            <result property="addressName" column="address_name" jdbcType="VARCHAR"/>
+    </resultMap>
 
-  <select id="selectByPrid" resultType="com.goafanti.weChat.bo.OutPublicReleaseDetails">
-    select
-      a.id,a.prid, a.`uid`, a.ufid, a.new_user newUser,a.longitude,a.latitude,b.nickname userName,a.main_status mainStatus,a.duration,
-      a.district_name districtName ,a.clock_in clockIn,date_format(a.clock_in_time, '%Y-%m-%d %H:%i:%S')  clockInTimes,a.photo_url photoUrl
-    from public_release_details a left join user b on a.uid=b.id
-    where prid = #{id,jdbcType=INTEGER} order by a.update_time desc
-  </select>
+    <sql id="Base_Column_List">
+        id,prid,uid,
+        ufid,new_user,sign_sum,
+        longitude,latitude,clock_in,
+        clock_in_time,photo_url,district_name,
+        clock_in_remarks,duration,main_status,
+        update_time,address_name
+    </sql>
 
-  <insert id="insertBatch">
-    insert into public_release_details (prid, `uid`, ufid,
-    new_user, sign_sum, longitude,
-    latitude, clock_in, clock_in_time,
-    photo_url, district_name,duration,main_status)
-    values
-    <foreach  collection="list" item="prd"  separator=",">
-      (#{prd.prid,jdbcType=INTEGER}, #{prd.uid,jdbcType=VARCHAR}, #{prd.ufid,jdbcType=VARCHAR},
-      #{prd.newUser,jdbcType=INTEGER}, #{prd.signSum,jdbcType=INTEGER}, #{prd.longitude,jdbcType=VARCHAR},
-      #{prd.latitude,jdbcType=VARCHAR}, #{prd.clockIn,jdbcType=INTEGER}, #{prd.clockInTime,jdbcType=TIMESTAMP},
-      #{prd.photoUrl,jdbcType=VARCHAR}, #{prd.districtName,jdbcType=VARCHAR},#{prd.duration,jdbcType=DOUBLE},
-      #{prd.mainStatus,jdbcType=INTEGER})
-    </foreach>
-  </insert>
+    <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from public_release_details
+        where  id = #{id,jdbcType=INTEGER} 
+    </select>
 
-  <select id="getNamesByPrid" resultType="java.lang.String">
-    select  GROUP_CONCAT(b.nickname)userNames
-    from public_release_details a left join user b on a.uid =b.id
-    where prid = #{id}
-    group by prid
-  </select>
-  <select id="selectBypridAndUid" resultType="com.goafanti.weChat.bo.OutPublicReleaseDetails">
-    select
-      a.id,a.prid, a.`uid`, a.ufid, a.new_user newUser,a.longitude,a.latitude,b.nickname userName,
-      a.district_name districtName ,a.clock_in clockIn,date_format(a.clock_in_time, '%Y-%m-%d %H:%i:%S')  clockInTimes,a.photo_url photoUrl
-    from public_release_details a left join user b on a.uid=b.id
-    where prid = #{id,jdbcType=INTEGER} and uid =#{uid}
-  </select>
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        delete from public_release_details
+        where  id = #{id,jdbcType=INTEGER} 
+    </delete>
+    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.PublicReleaseDetails" useGeneratedKeys="true">
+        insert into public_release_details
+        ( id,prid,uid
+        ,ufid,new_user,sign_sum
+        ,longitude,latitude,clock_in
+        ,clock_in_time,photo_url,district_name
+        ,clock_in_remarks,duration,main_status
+        ,update_time,address_name)
+        values (#{id,jdbcType=INTEGER},#{prid,jdbcType=INTEGER},#{uid,jdbcType=VARCHAR}
+        ,#{ufid,jdbcType=VARCHAR},#{newUser,jdbcType=INTEGER},#{signSum,jdbcType=INTEGER}
+        ,#{longitude,jdbcType=VARCHAR},#{latitude,jdbcType=VARCHAR},#{clockIn,jdbcType=INTEGER}
+        ,#{clockInTime,jdbcType=TIMESTAMP},#{photoUrl,jdbcType=VARCHAR},#{districtName,jdbcType=VARCHAR}
+        ,#{clockInRemarks,jdbcType=VARCHAR},#{duration,jdbcType=DOUBLE},#{mainStatus,jdbcType=INTEGER}
+        ,#{updateTime,jdbcType=TIMESTAMP},#{addressName,jdbcType=VARCHAR})
+    </insert>
+    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.PublicReleaseDetails" useGeneratedKeys="true">
+        insert into public_release_details
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="id != null">id,</if>
+                <if test="prid != null">prid,</if>
+                <if test="uid != null">uid,</if>
+                <if test="ufid != null">ufid,</if>
+                <if test="newUser != null">new_user,</if>
+                <if test="signSum != null">sign_sum,</if>
+                <if test="longitude != null">longitude,</if>
+                <if test="latitude != null">latitude,</if>
+                <if test="clockIn != null">clock_in,</if>
+                <if test="clockInTime != null">clock_in_time,</if>
+                <if test="photoUrl != null">photo_url,</if>
+                <if test="districtName != null">district_name,</if>
+                <if test="clockInRemarks != null">clock_in_remarks,</if>
+                <if test="duration != null">duration,</if>
+                <if test="mainStatus != null">main_status,</if>
+                <if test="updateTime != null">update_time,</if>
+                <if test="addressName != null">address_name,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="id != null">#{id,jdbcType=INTEGER},</if>
+                <if test="prid != null">#{prid,jdbcType=INTEGER},</if>
+                <if test="uid != null">#{uid,jdbcType=VARCHAR},</if>
+                <if test="ufid != null">#{ufid,jdbcType=VARCHAR},</if>
+                <if test="newUser != null">#{newUser,jdbcType=INTEGER},</if>
+                <if test="signSum != null">#{signSum,jdbcType=INTEGER},</if>
+                <if test="longitude != null">#{longitude,jdbcType=VARCHAR},</if>
+                <if test="latitude != null">#{latitude,jdbcType=VARCHAR},</if>
+                <if test="clockIn != null">#{clockIn,jdbcType=INTEGER},</if>
+                <if test="clockInTime != null">#{clockInTime,jdbcType=TIMESTAMP},</if>
+                <if test="photoUrl != null">#{photoUrl,jdbcType=VARCHAR},</if>
+                <if test="districtName != null">#{districtName,jdbcType=VARCHAR},</if>
+                <if test="clockInRemarks != null">#{clockInRemarks,jdbcType=VARCHAR},</if>
+                <if test="duration != null">#{duration,jdbcType=DOUBLE},</if>
+                <if test="mainStatus != null">#{mainStatus,jdbcType=INTEGER},</if>
+                <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if>
+                <if test="addressName != null">#{addressName,jdbcType=VARCHAR},</if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.PublicReleaseDetails">
+        update public_release_details
+        <set>
+                <if test="prid != null">
+                    prid = #{prid,jdbcType=INTEGER},
+                </if>
+                <if test="uid != null">
+                    uid = #{uid,jdbcType=VARCHAR},
+                </if>
+                <if test="ufid != null">
+                    ufid = #{ufid,jdbcType=VARCHAR},
+                </if>
+                <if test="newUser != null">
+                    new_user = #{newUser,jdbcType=INTEGER},
+                </if>
+                <if test="signSum != null">
+                    sign_sum = #{signSum,jdbcType=INTEGER},
+                </if>
+                <if test="longitude != null">
+                    longitude = #{longitude,jdbcType=VARCHAR},
+                </if>
+                <if test="latitude != null">
+                    latitude = #{latitude,jdbcType=VARCHAR},
+                </if>
+                <if test="clockIn != null">
+                    clock_in = #{clockIn,jdbcType=INTEGER},
+                </if>
+                <if test="clockInTime != null">
+                    clock_in_time = #{clockInTime,jdbcType=TIMESTAMP},
+                </if>
+                <if test="photoUrl != null">
+                    photo_url = #{photoUrl,jdbcType=VARCHAR},
+                </if>
+                <if test="districtName != null">
+                    district_name = #{districtName,jdbcType=VARCHAR},
+                </if>
+                <if test="clockInRemarks != null">
+                    clock_in_remarks = #{clockInRemarks,jdbcType=VARCHAR},
+                </if>
+                <if test="duration != null">
+                    duration = #{duration,jdbcType=DOUBLE},
+                </if>
+                <if test="mainStatus != null">
+                    main_status = #{mainStatus,jdbcType=INTEGER},
+                </if>
+                <if test="updateTime != null">
+                    update_time = #{updateTime,jdbcType=TIMESTAMP},
+                </if>
+                <if test="addressName != null">
+                    address_name = #{addressName,jdbcType=VARCHAR},
+                </if>
+        </set>
+        where   id = #{id,jdbcType=INTEGER} 
+    </update>
+    <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.PublicReleaseDetails">
+        update public_release_details
+        set 
+            prid =  #{prid,jdbcType=INTEGER},
+            uid =  #{uid,jdbcType=VARCHAR},
+            ufid =  #{ufid,jdbcType=VARCHAR},
+            new_user =  #{newUser,jdbcType=INTEGER},
+            sign_sum =  #{signSum,jdbcType=INTEGER},
+            longitude =  #{longitude,jdbcType=VARCHAR},
+            latitude =  #{latitude,jdbcType=VARCHAR},
+            clock_in =  #{clockIn,jdbcType=INTEGER},
+            clock_in_time =  #{clockInTime,jdbcType=TIMESTAMP},
+            photo_url =  #{photoUrl,jdbcType=VARCHAR},
+            district_name =  #{districtName,jdbcType=VARCHAR},
+            clock_in_remarks =  #{clockInRemarks,jdbcType=VARCHAR},
+            duration =  #{duration,jdbcType=DOUBLE},
+            main_status =  #{mainStatus,jdbcType=INTEGER},
+            update_time =  #{updateTime,jdbcType=TIMESTAMP},
+            address_name =  #{addressName,jdbcType=VARCHAR}
+        where   id = #{id,jdbcType=INTEGER} 
+    </update>
 
-  <update id="updateDistrictByPrid">
-    update public_release_details
-    set longitude = #{longitude,jdbcType=VARCHAR},
-        latitude = #{latitude,jdbcType=VARCHAR},
-        district_name = #{districtName,jdbcType=VARCHAR}
-    where prid =#{id}
-  </update>
+
+
+
+    <select id="selectByPrid" resultType="com.goafanti.weChat.bo.OutPublicReleaseDetails">
+        select
+            a.id,a.prid, a.`uid`, a.ufid, a.new_user newUser,a.longitude,a.latitude,b.nickname userName,a.main_status mainStatus,a.duration,
+            a.address_name addressName,a.district_name districtName ,a.clock_in clockIn,
+            date_format(a.clock_in_time, '%Y-%m-%d %H:%i:%S')  clockInTimes,a.photo_url photoUrl
+        from public_release_details a left join user b on a.uid=b.id
+        where prid = #{id,jdbcType=INTEGER} order by a.update_time desc
+    </select>
+
+    <insert id="insertBatch">
+        insert into public_release_details (prid, `uid`, ufid,
+        new_user, sign_sum, longitude,
+        latitude, clock_in, clock_in_time,
+        photo_url, district_name,duration,main_status,address_name)
+        values
+        <foreach  collection="list" item="prd"  separator=",">
+            (#{prd.prid,jdbcType=INTEGER}, #{prd.uid,jdbcType=VARCHAR}, #{prd.ufid,jdbcType=VARCHAR},
+            #{prd.newUser,jdbcType=INTEGER}, #{prd.signSum,jdbcType=INTEGER}, #{prd.longitude,jdbcType=VARCHAR},
+            #{prd.latitude,jdbcType=VARCHAR}, #{prd.clockIn,jdbcType=INTEGER}, #{prd.clockInTime,jdbcType=TIMESTAMP},
+            #{prd.photoUrl,jdbcType=VARCHAR}, #{prd.districtName,jdbcType=VARCHAR},#{prd.duration,jdbcType=DOUBLE},
+            #{prd.mainStatus,jdbcType=INTEGER},#{prd.addressName,jdbcType=VARCHAR})
+        </foreach>
+    </insert>
+
+    <select id="getNamesByPrid" resultType="java.lang.String">
+        select  GROUP_CONCAT(b.nickname)userNames
+        from public_release_details a left join user b on a.uid =b.id
+        where prid = #{id}
+        group by prid
+    </select>
+    <select id="selectBypridAndUid" resultType="com.goafanti.weChat.bo.OutPublicReleaseDetails">
+        select
+            a.id,a.prid, a.`uid`, a.ufid, a.new_user newUser,a.longitude,a.latitude,b.nickname userName,
+            a.district_name districtName ,a.clock_in clockIn,date_format(a.clock_in_time, '%Y-%m-%d %H:%i:%S')  clockInTimes,a.photo_url photoUrl
+        from public_release_details a left join user b on a.uid=b.id
+        where prid = #{id,jdbcType=INTEGER} and uid =#{uid}
+    </select>
+
+    <update id="updateDistrictByPrid">
+        update public_release_details
+        set longitude = #{longitude,jdbcType=VARCHAR},
+            latitude = #{latitude,jdbcType=VARCHAR},
+            district_name = #{districtName,jdbcType=VARCHAR},
+            address_name =#{addressName,jdbcType=VARCHAR}
+        where prid =#{id}
+    </update>
 </mapper>
+

+ 14 - 7
src/main/java/com/goafanti/common/mapper/PublicReleaseMapper.xml

@@ -44,6 +44,7 @@
             <result property="districtName" column="district_name" jdbcType="VARCHAR"/>
             <result property="clockIn" column="clock_in" jdbcType="INTEGER"/>
             <result property="techStartProcess" column="tech_start_process" jdbcType="INTEGER"/>
+            <result property="addressName" column="address_name" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
@@ -59,7 +60,8 @@
         assistant_aid,assistant_name,public_again,
         audit_time,new_user,sign_sum,
         user_names,object_type,public_type,
-        district_name,clock_in,tech_start_process
+        district_name,clock_in,tech_start_process,
+        address_name
     </sql>
 
     <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
@@ -88,7 +90,7 @@
         ,audit_time,new_user,sign_sum
         ,user_names,object_type,public_type
         ,district_name,clock_in,tech_start_process
-        )
+        ,address_name)
         values (#{id,jdbcType=INTEGER},#{aid,jdbcType=VARCHAR},#{releaseStart,jdbcType=TIMESTAMP}
         ,#{releaseEnd,jdbcType=TIMESTAMP},#{remarks,jdbcType=VARCHAR},#{annexUrl,jdbcType=VARCHAR}
         ,#{status,jdbcType=INTEGER},#{createTime,jdbcType=TIMESTAMP},#{pid,jdbcType=VARCHAR}
@@ -102,7 +104,7 @@
         ,#{auditTime,jdbcType=TIMESTAMP},#{newUser,jdbcType=VARCHAR},#{signSum,jdbcType=VARCHAR}
         ,#{userNames,jdbcType=VARCHAR},#{objectType,jdbcType=INTEGER},#{publicType,jdbcType=INTEGER}
         ,#{districtName,jdbcType=VARCHAR},#{clockIn,jdbcType=INTEGER},#{techStartProcess,jdbcType=INTEGER}
-        )
+        ,#{addressName,jdbcType=VARCHAR})
     </insert>
     <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.PublicRelease" useGeneratedKeys="true">
         insert into public_release
@@ -146,6 +148,7 @@
                 <if test="districtName != null">district_name,</if>
                 <if test="clockIn != null">clock_in,</if>
                 <if test="techStartProcess != null">tech_start_process,</if>
+                <if test="addressName != null">address_name,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
                 <if test="id != null">#{id,jdbcType=INTEGER},</if>
@@ -187,6 +190,7 @@
                 <if test="districtName != null">#{districtName,jdbcType=VARCHAR},</if>
                 <if test="clockIn != null">#{clockIn,jdbcType=INTEGER},</if>
                 <if test="techStartProcess != null">#{techStartProcess,jdbcType=INTEGER},</if>
+                <if test="addressName != null">#{addressName,jdbcType=VARCHAR},</if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.PublicRelease">
@@ -306,6 +310,9 @@
                 <if test="techStartProcess != null">
                     tech_start_process = #{techStartProcess,jdbcType=INTEGER},
                 </if>
+                <if test="addressName != null">
+                    address_name = #{addressName,jdbcType=VARCHAR},
+                </if>
         </set>
         where   id = #{id,jdbcType=INTEGER} 
     </update>
@@ -349,7 +356,8 @@
             public_type =  #{publicType,jdbcType=INTEGER},
             district_name =  #{districtName,jdbcType=VARCHAR},
             clock_in =  #{clockIn,jdbcType=INTEGER},
-            tech_start_process =  #{techStartProcess,jdbcType=INTEGER}
+            tech_start_process =  #{techStartProcess,jdbcType=INTEGER},
+            address_name =  #{addressName,jdbcType=VARCHAR}
         where   id = #{id,jdbcType=INTEGER} 
     </update>
 
@@ -480,7 +488,7 @@
         select  a.id,c.name  aname,date_format(a.release_start,'%Y-%m-%d %H:%i:%S') releaseStarts,a.update_time updateTime,a.user_names userNames,
         date_format(a.release_end ,'%Y-%m-%d %H:%i:%S') releaseEnds,date_format(a.create_time ,'%Y-%m-%d %H:%i:%S') createTimes,a.status,
         a.annex_url annexUrl ,a.remarks,a.duration ,a.valid_date validDate ,a.aid ,c.superior_id suprId,a.tech_start_process techStartProcess,
-        a.plan ,a.expected_effect expectedEffect,a.next_plan nextPlan,c.reviewer,a.type,a.order_no orderNo,d.contract_no contractNo,
+        a.plan ,a.expected_effect expectedEffect,a.next_plan nextPlan,c.reviewer,a.type,a.order_no orderNo,d.contract_no contractNo,a.address_name addressName,
         date_format(a.update_time ,'%Y-%m-%d %H:%i:%S') updateTimes,a.update_Status updateStatus,a.assist,a.assist_aid assistAid,a.assist_aid_name assistAidName,
         a.main_name mainName,a.assistant_aid assistantAid,a.assistant_name assistantName,a.public_again publicAhain,x.uids,a.public_type publicType,c2.name reviewerName
         from public_release a  left join admin c on a.aid =c.id  left join admin c2 on c.reviewer =c2.id
@@ -558,7 +566,7 @@
         select a.id prdId,b.id,a.district_name districtName ,c.name aname,a.duration ,b.status ,b.annex_url annexUrl,a.photo_url photoUrl,d.nickname userName,
         date_format(a.clock_in_time ,'%Y-%m-%d %H:%i:%S') clockInTimes,a.clock_in clockIn ,b.remarks ,b.supplement ,b.`type` ,b.object_type objectType ,
         date_format(b.create_time ,'%Y-%m-%d %H:%i:%S') createTimes,b.audit_info auditInfo,date_format(b.audit_time ,'%Y-%m-%d %H:%i:%S') auditTimes,
-        date_format(b.release_start,'%Y-%m-%d %H:%i:%S') releaseStarts,date_format(b.release_end ,'%Y-%m-%d %H:%i:%S') releaseEnds,
+        date_format(b.release_start,'%Y-%m-%d %H:%i:%S') releaseStarts,date_format(b.release_end ,'%Y-%m-%d %H:%i:%S') releaseEnds,a.address_name addressName,
         b.plan ,b.next_plan nextPlan ,b.expected_effect expectedEffect,b.update_status updateStatus,b.assist_aid_name assistAidName,
         b.main_name mainName,b.assist,b.assistant_aid assistantAid, b.assistant_name assistantName,f.contract_no contractNo,
         e.name sname,f.total_amount  totalAmout,d.sign_bills signBills,date_format(d.sign_time,'%Y-%m-%d')signTime
@@ -795,4 +803,3 @@
         order by contract_no desc
     </select>
 </mapper>
-

+ 90 - 0
src/main/java/com/goafanti/common/mapper/TOrderApprovalMapper.xml

@@ -0,0 +1,90 @@
+<?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.TOrderApprovalMapper">
+
+    <resultMap id="BaseResultMap" type="com.goafanti.common.model.TOrderApproval">
+            <id property="id" column="id" jdbcType="INTEGER"/>
+            <result property="orderNo" column="order_no" jdbcType="VARCHAR"/>
+            <result property="type" column="type" jdbcType="INTEGER"/>
+            <result property="typeExplain" column="type_explain" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        id,order_no,type,
+        type_explain
+    </sql>
+
+    <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from t_order_approval
+        where  id = #{id,jdbcType=INTEGER} 
+    </select>
+
+
+    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+        delete from t_order_approval
+        where  id = #{id,jdbcType=INTEGER} 
+    </delete>
+
+    <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.TOrderApproval" useGeneratedKeys="true">
+        insert into t_order_approval
+        ( id,order_no,type
+        ,type_explain)
+        values (#{id,jdbcType=INTEGER},#{orderNo,jdbcType=VARCHAR},#{type,jdbcType=INTEGER}
+        ,#{typeExplain,jdbcType=VARCHAR})
+    </insert>
+    <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.TOrderApproval" useGeneratedKeys="true">
+        insert into t_order_approval
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+                <if test="id != null">id,</if>
+                <if test="orderNo != null">order_no,</if>
+                <if test="type != null">type,</if>
+                <if test="typeExplain != null">type_explain,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+                <if test="id != null">#{id,jdbcType=INTEGER},</if>
+                <if test="orderNo != null">#{orderNo,jdbcType=VARCHAR},</if>
+                <if test="type != null">#{type,jdbcType=INTEGER},</if>
+                <if test="typeExplain != null">#{typeExplain,jdbcType=VARCHAR},</if>
+        </trim>
+    </insert>
+    <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.TOrderApproval">
+        update t_order_approval
+        <set>
+                <if test="orderNo != null">
+                    order_no = #{orderNo,jdbcType=VARCHAR},
+                </if>
+                <if test="type != null">
+                    type = #{type,jdbcType=INTEGER},
+                </if>
+                <if test="typeExplain != null">
+                    type_explain = #{typeExplain,jdbcType=VARCHAR},
+                </if>
+        </set>
+        where   id = #{id,jdbcType=INTEGER} 
+    </update>
+    <update id="updateByPrimaryKey" parameterType="com.goafanti.common.model.TOrderApproval">
+        update t_order_approval
+        set 
+            order_no =  #{orderNo,jdbcType=VARCHAR},
+            type =  #{type,jdbcType=INTEGER},
+            type_explain =  #{typeExplain,jdbcType=VARCHAR}
+        where   id = #{id,jdbcType=INTEGER} 
+    </update>
+
+
+    <delete id="deleteByOderNo">
+        delete from t_order_approval
+        where  order_no= #{orderNo}
+    </delete>
+
+    <select id="selectByOrderNo"  resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List" />
+        from t_order_approval
+        where  order_no= #{orderNo}
+    </select>
+</mapper>

+ 7 - 1
src/main/java/com/goafanti/common/mapper/TOrderExamineMapper.xml

@@ -167,7 +167,8 @@
     delete from t_order_examine
     where tid = #{tid}
   </delete>
-  <select id="selectExamineBytidAndAid" resultMap="BaseResultMap">
+
+    <select id="selectExamineBytidAndAid" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List" />
     from t_order_examine a
@@ -178,4 +179,9 @@
     and a.aid= #{aid}
   </select>
 
+  <delete id="deleteExamineFinance">
+    delete a  from t_order_examine a left join t_order_new b on a.order_no =b.order_no
+    where a.status =0 and a.aid =#{aid} and b.order_dep = #{depId}
+  </delete>
+
 </mapper>

+ 100 - 25
src/main/java/com/goafanti/common/mapper/TOrderNewMapper.xml

@@ -781,9 +781,22 @@
       date_format(a.`final_Receivables_time`, '%Y-%m-%d %H:%i:%s')finalReceivablesTime,a.patent_cost patentCost,a.patent_cost_actual patentCostActual ,
       a.soft_cost softCost ,a.soft_cost_actual softCostActual ,a.audit_cost auditCost ,a.audit_cost_actual auditCostActual ,a.other_cost otherCost ,
       a.other_cost_actual otherCostActual , a.expect_profit expectProfit ,a.actual_profit  actualProfit,a.service_type serviceType,
-      a.service_project serviceProject,o.examine_name examineName
+      a.service_project serviceProject,o.examine_name examineName,toa.type,toa.type_explain typeExplain
     from t_order_new o left join department d on o.order_dep = d.id left join `user` u on o.buyer_id = u.id left join t_order_mid a on o.order_no=a.order_no
-    left join (select * from  t_order_outsource where type=0) too on o.order_no=too.order_no where delete_sign in(0,2) and o.approval in(0,1,2,4,5,7,8)
+    left join (select * from  t_order_outsource where type=0) too on o.order_no=too.order_no
+    left join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval group by order_no) toa on o.order_no=toa.order_no
+    <if test="type !=null">
+      inner join
+      (select distinct order_no
+      from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa2 on o.order_no=toa2.order_no
+    </if>
+    where delete_sign in(0,2) and o.approval in(0,1,2,4,5,7,8)
     and outsource=  #{o.outsource,jdbcType=INTEGER}
     <if test="o.processStatus == 3">
       and o.process_status = #{o.processStatus,jdbcType=INTEGER}
@@ -871,6 +884,16 @@
   <select id="financeCount" parameterType="Map" resultType="java.lang.Integer">
  select count(*) from t_order_new o left join `user` u on o.buyer_id = u.id
 left join department d on o.order_dep = d.id   left join t_order_mid a on o.order_no=a.order_no
+    <if test="type !=null">
+      inner join
+      (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+      from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa on o.order_no=toa.order_no
+    </if>
  where delete_sign in(0,2) and o.approval in(0,1,2,4,5,7,8) and outsource=  #{o.outsource,jdbcType=INTEGER}
     <if test="o.processStatus == 3">
       and o.process_status = #{o.processStatus,jdbcType=INTEGER}
@@ -955,10 +978,11 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
   <select id="getSaleIdByOno" parameterType="java.lang.String" resultType="com.goafanti.order.bo.TOrderNewBo">
     select o.order_no orderNo ,o.salesman_id as salesmanId, a.name as salesmanName,e.name managerName,
            o.contract_no contractNo,a.email ,u.nickname as userName,o.order_dep orderDep,d.name departmentName,
-           d.finance_id  financeId,d.approval approvalStatus,d.approval_aid approvalAid,ad.name approvalName
+           d.finance_id  financeId,d.approval approvalStatus,d.approval_aid approvalAid,ad.name approvalName,
+           d.operation_guarantee_id operationGuaranteeId,ad2.name operationGuaranteeName
     from t_order_new o left join admin a on o.salesman_id = a.id left join `user` u on u.id = o.buyer_id
     left join department d on o.order_dep=d.id left join admin e on a.manager_id=e.id
-    left join admin ad on d.approval_aid=ad.id
+    left join admin ad on d.approval_aid=ad.id left join admin ad2 on d.operation_guarantee_id=ad2.id
     where order_no = #{_parameter,jdbcType=VARCHAR}
   </select>
 
@@ -969,7 +993,7 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
   	a.contract_picture_url contractPictureUrl,
   	a.order_status as orderStatus, a.liquidation_status as liquidationStatus,a.approval,c.salesman_name as salesmanName,c.project_type projectType,
   	dep.name as depName,c.finance_name as financeName,c.invoice_amount invoiceAmount,a.settlement_amount settlementAmount,
-    a.sales_type salesType, a.channel_id channelId ,a.other,a.examine_name examineName,c.stop_project stopProject
+    a.sales_type salesType, a.channel_id channelId ,a.other,a.examine_name examineName,c.stop_project stopProject,toa.type,toa.type_explain typeExplain
     <if test="specially == 2">
   	,f.name as initiateName ,e.reason ,date_format(e.create_time,'%Y-%m-%d' ) as backDate,e.id as backId
   	</if>
@@ -993,7 +1017,19 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     <if test="specially == 10">
       left join admin mg on a.salesman_id=mg.id
     </if>
-  	where a.delete_sign in(0,2)
+    left join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval group by order_no) toa on a.order_no=toa.order_no
+    <if test="type !=null">
+      inner join
+      (select distinct order_no
+      from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa2 on a.order_no=toa2.order_no
+    </if>
+    where a.delete_sign in(0,2)
    <include refid="selectOrderNewSql"/>
   	order by
   	<if test="specially == 3">
@@ -1046,6 +1082,10 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
       and a.process_status = 1  and a.order_status in (0,1,2)
       and mg.manager_id= #{aid}
     </if>
+    <if test="specially == 11">
+      and a.process_status = 4  and a.approval >0
+      and dep.operation_guarantee_id =#{aid}
+    </if>
     <if test="specially == 1">
       and a.process_status = 2  and a.order_status in (0,1,2)
     </if>
@@ -1059,17 +1099,17 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
         and dep.approval_aid= #{aid,jdbcType=VARCHAR}
       </if>
       <if test="approval ==0">
-        and a.process_status in(4)
+        and a.process_status =5
         and a.approval = 0
       </if>
       <if test="approval ==1">
-        and a.process_status =4
+        and a.process_status =5
         and a.approval in
         <if test="manageType ==0">
           (1)
         </if>
         <if test="manageType ==1">
-          (4)
+          (5)
         </if>
       </if>
       <if test="approval ==2">
@@ -1078,7 +1118,7 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
           (2,3)
         </if>
         <if test="manageType ==1">
-          (5,6)
+          (6,7)
         </if>
 
       </if>
@@ -1098,7 +1138,7 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
       </if>
     </if>
     <if test="specially == 4">
-      and a.process_status in (3,5,6,7,99)
+      and a.process_status in(3,6,7,8,99)
       and a.order_status  in(1,2,3,4,6)
     </if>
     <if test="deps!=null">
@@ -1111,13 +1151,13 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
       and a.process_status = 3
     </if>
     <if test="distribution == 1">
-      and a.process_status = 5
+      and a.process_status = 6
     </if>
     <if test="distribution == 2">
-      and a.process_status = 6
+      and a.process_status = 7
     </if>
     <if test="distribution == 3">
-      and a.process_status = 7
+      and a.process_status = 8
     </if>
     <if test="name != null">
       and b.nickname like CONCAT('%',#{name,jdbcType=VARCHAR},'%')
@@ -1140,6 +1180,9 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     <if test="tag != null">
       and a.tag= #{tag}
     </if>
+    <if test="approvalType != null">
+      and fina.approval_type = #{approvalType,jdbcType=INTEGER}
+    </if>
     <if test="amountStatus == 0">
       and a.total_amount &lt; 10
     </if>
@@ -1173,6 +1216,16 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
   	 <if test="specially == 10">
        left join admin mg on a.salesman_id=mg.id
      </if>
+     <if test="type !=null">
+       inner join
+       (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+       from t_order_approval
+       where `type` in
+       <foreach collection="type" item="item" separator="," open="(" close=")">
+         #{item}
+       </foreach>
+       group by order_no) toa on a.order_no=toa.order_no
+     </if>
   	where a.delete_sign in(0,2)
      <include refid="selectOrderNewSql"/>
 
@@ -1344,13 +1397,16 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
       g.location_city as locationCity,g.location_area locationArea,g.postal_address postalAddress,outsource,a.primary_order primaryOrder,a.agreement_url agreementUrl,
       h.name NowFinance,h.contact_mobile NowFinanceMobile,a.additional_order additionalOrder,i.name as oldSalesmanName, i.contact_mobile oldSalesmanMobile,
       a.service_content serviceContent,a.examine_name examineName, tht.knowledge_services knowledgeServices, tht.audit_services auditServices,c.manager_id managerId,
-      tht.add_deduction_services addDeductionServices, tht.knowledge_other knowledgeOther, tht.audit_other auditOther, tht.add_deduction_other addDeductionOther
+      tht.add_deduction_services addDeductionServices, tht.knowledge_other knowledgeOther, tht.audit_other auditOther, tht.add_deduction_other addDeductionOther,
+      toa.type,toa.type_explain typeExplain
     from t_order_new a left join `user` b on a.buyer_id=b.id left join admin i on a.old_salesman_id=i.id
-         left join admin c on a.salesman_id=c.id left join department dep on a.order_dep=dep.id
-         left join admin d on a.finance_id=d.id left join admin h on dep.finance_id=h.id
-         left join  t_order_back  e on a.order_no=e.order_no and e.back_status=0
-         left join admin f on e.initiate=f.id left join organization_identity g on a.buyer_id=g.uid
-        left join t_order_high_tech tht on a.order_no=tht.order_no
+                       left join admin c on a.salesman_id=c.id left join department dep on a.order_dep=dep.id
+                       left join admin d on a.finance_id=d.id left join admin h on dep.finance_id=h.id
+                       left join  t_order_back  e on a.order_no=e.order_no and e.back_status=0
+                       left join admin f on e.initiate=f.id left join organization_identity g on a.buyer_id=g.uid
+                       left join t_order_high_tech tht on a.order_no=tht.order_no
+                       left join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+                                  from t_order_approval group by order_no) toa on a.order_no=toa.order_no
     where   a.order_no = #{orderNo,jdbcType=VARCHAR}
   </select>
 
@@ -1437,6 +1493,16 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     select IFNULL( sum(o.settlement_amount),0) actuallyTotalAmount,IFNULL(sum(o.total_amount),0)  signTotalAmount
     from t_order_new o
     left join department d   on o.order_dep=d.id left join `user` u on o.buyer_id = u.id  left join t_order_mid a on o.order_no=a.order_no
+    <if test="types !=null">
+      inner join
+      (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+      from t_order_approval
+      where `type` in
+      <foreach collection="types" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa on o.order_no=toa.order_no
+    </if>
     where o.delete_sign in(0,2,3)  and o.approval in(0,1,2,4,5,7,8) and outsource=  #{o.outsource,jdbcType=INTEGER}
     <if test="o.processStatus == 3">
       and o.process_status = #{o.processStatus,jdbcType=INTEGER}
@@ -1959,7 +2025,8 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
   </select>
   <select id="getProcessName" resultType="com.goafanti.order.bo.OrderProcessName">
     select a.order_no orderNo,a.approval,a.process_status processStatus  ,b.name yxy,mg.name yxjl,
-           yxgly.name yxgly,d.name cwzy, zxsgly.name zxsgly,dsz.name dsz,dep.approval approvalStatus ,da.name approvalName
+           yxgly.name yxgly,d.name cwzy, zxsgly.name zxsgly,dsz.name dsz,dep.approval approvalStatus ,da.name approvalName,
+           dep.operation_guarantee_id, ad2.name yybz
     from t_order_new a left join admin b on a.salesman_id =b.id
                        left join admin mg on b.manager_id =mg.id left join department c on a.order_dep =c.id
                        left join (select a.department_id depId,group_concat(a.name) name
@@ -1973,6 +2040,7 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
                                   from admin a left join user_role b on a.id=b.uid left join `role` c on b.rid =c.id
                                   where c.role_type in ('9998') and a.status ='0' ) zxsgly on 1=1
                        left join department dep on a.order_dep =dep.id left join admin da on dep.approval_aid=da.id
+                       left join admin ad2 on dep.operation_guarantee_id=ad2.id
     where a.order_no = #{orderNo}
   </select>
   <select id="selectByuidandAid" resultType="com.goafanti.order.bo.TOrderNewBo">
@@ -2033,7 +2101,7 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     <foreach collection="list" item="e" close=")" open="(" separator=",">
       #{e}
     </foreach>
-    and x.order_no =y.order_no
+    and x.order_no =y.order_no and x.process_status= #{processStatus}
   </update>
 
   <select id="selectAidAndDate" resultType="java.lang.Integer">
@@ -2060,14 +2128,15 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     where a.order_no =#{orderNo}
   </select>
   <select id="selectDepByOrderNo" resultType="com.goafanti.common.model.Department">
-    select a.id,a.name,a.province,a.finance_id financeId,a.approval ,a.approval_aid approvalAid
+    select a.id,a.name,a.province,a.finance_id financeId,a.approval ,a.approval_aid approvalAid,
+           a.operation_guarantee_id operationGuaranteeId
     from department a left join t_order_new b on a.id =b.order_dep
     where b.order_no= #{orderNo}
   </select>
   <select id="selectByFinanceNotExamine" resultType="string">
-    select a.order_no orderNo,a.process_status processStatus
+    select a.order_no orderNo
     from t_order_new a left join t_order_examine b on a.order_no=b.order_no
-    where b.status=0 and b.aid = #{financeId} and a.process_status = 3
+    where  b.aid = #{financeId} and a.process_status = 3 and a.order_dep= #{depId}
   </select>
     <select id="selectExpenseCount" parameterType="com.goafanti.expenseAccount.bo.ExpenseCountsInput" resultType="com.goafanti.expenseAccount.bo.ExpenseCountsBo">
       select a.order_no orderNo,a.contract_no contractNo,b.buyer_name buyerName,toc.max_duration maxDuration ,toc.actual_duration actualDuration ,
@@ -2176,5 +2245,11 @@ left join department d on o.order_dep = d.id   left join t_order_mid a on o.orde
     </if>
 
   </select>
+  <select id="selectByDepAndProcess" resultType="string">
+    select  a.order_no
+    from t_order_new a
+    where a.order_dep = #{depId}
+    and a.process_status = #{processStatus}
+  </select>
 
 </mapper>

+ 15 - 7
src/main/java/com/goafanti/common/mapper/TOrderPublicReleaseCountMapper.xml

@@ -14,12 +14,14 @@
             <result property="peopleCount" column="people_count" jdbcType="INTEGER"/>
             <result property="frequency" column="frequency" jdbcType="INTEGER"/>
             <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
+            <result property="sumYear" column="sum_year" jdbcType="VARCHAR"/>
     </resultMap>
 
     <sql id="Base_Column_List">
         id,order_no,status,
         max_duration,actual_duration,exceed_duration,
-        people_count,frequency,create_time
+        people_count,frequency,create_time,
+        sum_year
     </sql>
 
     <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap">
@@ -38,11 +40,11 @@
         ( id,order_no,status
         ,max_duration,actual_duration,exceed_duration
         ,people_count,frequency,create_time
-        )
+        ,sum_year)
         values (#{id,jdbcType=INTEGER},#{orderNo,jdbcType=VARCHAR},#{status,jdbcType=INTEGER}
         ,#{maxDuration,jdbcType=DOUBLE},#{actualDuration,jdbcType=DOUBLE},#{exceedDuration,jdbcType=DOUBLE}
         ,#{peopleCount,jdbcType=INTEGER},#{frequency,jdbcType=INTEGER},#{createTime,jdbcType=TIMESTAMP}
-        )
+        ,#{sumYear,jdbcType=VARCHAR})
     </insert>
     <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.goafanti.common.model.TOrderPublicReleaseCount" useGeneratedKeys="true">
         insert into t_order_public_release_count
@@ -56,6 +58,7 @@
                 <if test="peopleCount != null">people_count,</if>
                 <if test="frequency != null">frequency,</if>
                 <if test="createTime != null">create_time,</if>
+                <if test="sumYear != null">sum_year,</if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
                 <if test="id != null">#{id,jdbcType=INTEGER},</if>
@@ -67,6 +70,7 @@
                 <if test="peopleCount != null">#{peopleCount,jdbcType=INTEGER},</if>
                 <if test="frequency != null">#{frequency,jdbcType=INTEGER},</if>
                 <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
+                <if test="sumYear != null">#{sumYear,jdbcType=VARCHAR},</if>
         </trim>
     </insert>
     <update id="updateByPrimaryKeySelective" parameterType="com.goafanti.common.model.TOrderPublicReleaseCount">
@@ -96,6 +100,9 @@
                 <if test="createTime != null">
                     create_time = #{createTime,jdbcType=TIMESTAMP},
                 </if>
+                <if test="sumYear != null">
+                    sum_year = #{sumYear,jdbcType=VARCHAR},
+                </if>
         </set>
         where   id = #{id,jdbcType=INTEGER} 
     </update>
@@ -109,23 +116,24 @@
             exceed_duration =  #{exceedDuration,jdbcType=DOUBLE},
             people_count =  #{peopleCount,jdbcType=INTEGER},
             frequency =  #{frequency,jdbcType=INTEGER},
-            create_time =  #{createTime,jdbcType=TIMESTAMP}
+            create_time =  #{createTime,jdbcType=TIMESTAMP},
+            sum_year =  #{sumYear,jdbcType=VARCHAR}
         where   id = #{id,jdbcType=INTEGER} 
     </update>
     <update id="updateByOrderNo">
         update t_order_public_release_count
         set
             actual_duration =  #{actualDuration,jdbcType=DOUBLE},
-            exceed_duration =  if(#{actualDuration,jdbcType=DOUBLE}-max_duration>0,#{actualDuration,jdbcType=DOUBLE}-max_duration,0),
+            exceed_duration =  if(#{actualDuration,jdbcType=DOUBLE}-max_duration>0,(#{actualDuration,jdbcType=DOUBLE}-max_duration),0),
             people_count =  #{peopleCount,jdbcType=INTEGER},
             frequency =  #{frequency,jdbcType=INTEGER}
-        where   order_no =  #{orderNo,jdbcType=VARCHAR}
+        where   order_no =  #{orderNo,jdbcType=VARCHAR} and sum_year= #{sumYear,jdbcType=VARCHAR}
     </update>
 
     <select id="selectByOrderNo"  resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List" />
         from t_order_public_release_count
-        where  order_no =  #{orderNo,jdbcType=VARCHAR}
+        where  order_no =  #{orderNo,jdbcType=VARCHAR} and sum_year= #{sumYear,jdbcType=VARCHAR}
     </select>
 </mapper>

+ 123 - 5
src/main/java/com/goafanti/common/mapper/TOrderTaskMapper.xml

@@ -1080,11 +1080,22 @@
     e.approval,l.refund_status outsourceStatus,l.start_type outsourceType,ttm.certificates_count  alreadyNumber,f.nickname as userName,h.name as depName, l.company_name as outsourceName ,
     ifnull(k.hours,0) hours,a.split_status splitStatus,a.split_super splitSuper, a.split_id splitId,b.`type` projectType,ttm.cost_amount costAmount,tm.salesman_name salesmanName ,
     ttm.party_amount  partyAmount,a.commodity_price commodityPrice,a.outsource,date_format(a.task_end_time,'%Y-%m-%d') taskEndTime,date_format(e.sign_time,'%Y-%m-%d') signTime,
-    date_format(e.create_time ,'%Y-%m-%d')creteTime,a.patent_type  patentType,tmer.service_year serviceYear
+    date_format(e.create_time ,'%Y-%m-%d')creteTime,a.patent_type  patentType,tmer.service_year serviceYear,toa.type,toa.type_explain typeExplain
     from t_order_task a left join business_project b on a.commodity_id=b.id left join business_category c on b.cid=c.id
     left join t_order_new e on a.order_no=e.order_no left join user f on e.buyer_id=f.id left join t_order_mid tm on a.order_no =tm.order_no
     left join department h on e.order_dep=h.id  left join task_hours_count k on a.id=k.tid and a.task_receiver=k.aid left join t_order_outsource l
     on a.id=l.tid  left join t_task_mid ttm  on a.id=ttm.tid left join t_task_member tmer on a.id=tmer.tid
+    left join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval group by order_no) toa on e.order_no=toa.order_no
+    <if test="type !=null">
+      inner join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+    group by order_no) toa2 on e.order_no=toa2.order_no
+    </if>
     where  e.delete_sign in (0,2,3)  and e.order_status in (2,4)
     and a.outsource= #{outsource,jdbcType=INTEGER}
     <include refid="selectOrderTaskListSql"/>
@@ -1169,6 +1180,16 @@
     <if test="outsourceStatus !=null">
       left join t_order_outsource l on a.id=l.tid
     </if>
+    <if test="type !=null">
+      inner join
+      (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+      from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa on e.order_no=toa.order_no
+    </if>
     where e.delete_sign in (0,2,3)  and e.order_status in (2,4)
     and a.outsource= #{outsource,jdbcType=INTEGER}
     <include refid="selectOrderTaskListSql"/>
@@ -1188,6 +1209,16 @@
     <if test="outsourceStatus !=null">
       left join t_order_outsource l on a.id=l.tid
     </if>
+    <if test="type !=null">
+      inner join
+      (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+      from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa on e.order_no=toa.order_no
+    </if>
     where e.delete_sign in (0,2,3)  and e.order_status in (2,4)
     and a.outsource= #{outsource,jdbcType=INTEGER}
     <include refid="selectOrderTaskListSql"/>
@@ -1313,7 +1344,8 @@
     select  a.id,a.commodity_name as taskName,a.order_no as orderNo,c.cname,d.name as receiverName,
     a.project_status as projectStatus,a.task_status as taskStatus,date_format(a.task_distribution_time,'%Y-%m-%d') as taskDate,
     a.commodity_quantity as commodityQuantity,f.nickname as userName,h.name as depName,ifnull(i.alreadyNumber,0)as alreadyNumber,
-    a.split_status splitStatus,a.split_super splitSuper, a.split_id splitId,ttm.contract_term contractTerm,ttm.service_year serviceYear
+    a.split_status splitStatus,a.split_super splitSuper, a.split_id splitId,ttm.contract_term contractTerm,ttm.service_year serviceYear,
+    toa.type as type,toa.type_explain as typeExplain
     from (select task_id from t_task_log a where task_receiver=#{aid ,jdbcType=VARCHAR} UNION select task_id from t_task_log a
     where task_allocator=#{aid ,jdbcType=VARCHAR}) x left join  t_order_task a on x.task_id=a.id
     left join business_project b on a.commodity_id=b.id left join business_category c on b.cid=c.id
@@ -1321,6 +1353,18 @@
     left join user f on e.buyer_id=f.id left join department h on e.order_dep=h.id
     left join (select task_id , sum(already_number) as alreadyNumber from task_progress group by task_id) i on a.id=i.task_id
     left join t_task_member ttm on a.id=ttm.tid
+    left join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval group by order_no) toa on e.order_no=toa.order_no
+    <if test="type !=null">
+      inner join
+      (select distinct order_no
+      from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa2 on e.order_no=toa2.order_no
+    </if>
     where e.delete_sign in(0,2,3)
     <if test="orderNo != null">
       and a.order_no= #{orderNo,jdbcType=VARCHAR}
@@ -1363,6 +1407,16 @@
     left join user f on e.buyer_id=f.id
     left join department h on e.order_dep=h.id
     left join (select task_id , sum(already_number) as alreadyNumber from task_progress group by task_id) i on a.id=i.task_id
+    <if test="type !=null">
+      inner join
+      (select distinct order_no
+      from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa2 on e.order_no=toa2.order_no
+    </if>
     where e.delete_sign in(0,2,3)
     <if test="orderNo != null">
       and a.order_no= #{orderNo,jdbcType=VARCHAR}
@@ -1490,11 +1544,14 @@
     date_format(tp.accept_time, '%Y-%m-%d ' ) acceptTime , date_format(tp.authorize_time, '%Y-%m-%d ' )  authorizeTime, ttm.reject_count rejectCount ,
     tm.service_life serviceLife,tm.service_year serviceyear, tm.year_sum yearsum,tm.contract_term contractTerm, a.commodity_price commodityPrice ,
     a.special_comment specialComment,a.task_comment taskComment,ttm.last_year lastYear,ttm.last_year_capital lastYearCapital,ttm.last_year_income lastYearIncome,
-    e.service_type serviceType,e.service_project serviceProject, a.form_retrieve formRetrieve  ,a.satisfaction_degree satisfactionDegree
+    e.service_type serviceType,e.service_project serviceProject, a.form_retrieve formRetrieve  ,a.satisfaction_degree satisfactionDegree,
+    toa.type,toa.type_explain typeExplain,b.approval
     from t_order_task a left join t_order_new b on a.order_no =b.order_no left join department c on b.order_dep =c.id
     left join district_glossory d on c.province=d.id left join task_progress tp  on a.id=tp.task_id left join t_task_member tm on a.id=tm.tid
     left join t_order_mid e on b.order_no =e.order_no left join business_project bp on a.commodity_id =bp.id left join business_category bc on bp.cid =bc.id
     left join t_task_mid ttm on a.id=ttm.tid left join admin ta on a.task_receiver =ta.id left join department td on ta.department_id =td.id
+    left join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval group by order_no) toa on b.order_no=toa.order_no
     <if test="screen ==6">
       right join (select tid ,accept_count sls from t_task_mid where accept_count &gt; 0)tj on a.id=tj.tid
     </if>
@@ -1514,6 +1571,14 @@
       right join (select tid ,apply_count sqs,reject_count bhs,certificates_count xzs from t_task_mid
       where apply_count &gt; 0)tj on a.id=tj.tid
     </if>
+    <if test="type !=null">
+      inner join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval   where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+    group by order_no) toa2 on b.order_no=toa2.order_no
+    </if>
     where a.split_status in (0,2) and b. delete_sign in (0,2)
     <!--  筛选项 0库存 1派单 2完成 3立项 4抽查 5未通过 6受理 7完结 8授权 9驳回 10下证 11申请 -->
     <if test="screen ==0">
@@ -1657,6 +1722,16 @@
       right join (select tid ,apply_count sqs,reject_count bhs,certificates_count xzs from t_task_mid
       where apply_count &gt; 0)tj on a.id=tj.tid
     </if>
+    <if test="type !=null">
+      inner join
+      (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+      from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa on b.order_no=toa.order_no
+    </if>
     where a.split_status in (0,2) and b. delete_sign in (0,2)
     <!--  筛选项 0库存 1派单 2完成 3立项 4抽查 5未通过 6受理 7完结 8授权 9驳回 10下证 11申请 -->
     <if test="screen ==0">
@@ -1847,12 +1922,23 @@
     select a.id,a.task_distribution_time taskDistributionTime ,tm.province_name  provinceName,tm.dep_name depName,
     tm.salesman_name salesmanName, b.contract_no contractNo ,b.order_no orderNo,tm.buyer_name UserName,a.cname ,
     a.commodity_name commodityName,a.commodity_quantity commodityQuantity,dep.name techDepName,a.receiver_name techName,
-    a.project_status projectStatus ,a.commodity_price commodityPrice ,a.special_comment specialComment
+    a.project_status projectStatus ,a.commodity_price commodityPrice ,a.special_comment specialComment,
+    b.approval,toa.type,toa.type_explain typeExplain
     from  (select task_id from t_task_log a where task_receiver=#{aid}
     UNION select task_id from t_task_log a where task_allocator=#{aid}) x
     left join t_order_task a  on x.task_id=a.id left join t_order_new b on a.order_no =b.order_no
     left join t_order_mid tm on b.order_no=tm.order_no left join admin ad on a.task_receiver =ad.id
     left join department dep on ad.department_id =dep.id left join business_project bp on a.commodity_id =bp.id
+    left join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval group by order_no) toa on b.order_no=toa.order_no
+    <if test="type !=null">
+      inner join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+    group by order_no) toa on b.order_no=toa.order_no
+    </if>
     where 1=1
     <if test="orderNo !=null">
       and a.order_no = #{orderNo}
@@ -1899,6 +1985,16 @@
     left join t_order_task a  on x.task_id=a.id left join t_order_new b on a.order_no =b.order_no
     left join t_order_mid tm on b.order_no=tm.order_no left join admin ad on a.task_receiver =ad.id
     left join department dep on ad.department_id =dep.id left join business_project bp on a.commodity_id =bp.id
+    <if test="type !=null">
+      inner join
+      (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+      from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa on b.order_no=toa.order_no
+    </if>
     where 1=1
     <if test="orderNo !=null">
       and a.order_no = #{orderNo}
@@ -2104,13 +2200,25 @@
     b.delete_sign deleteSign ,b.total_amount totalAmount ,b.sales_type salesType ,b.other,a.examine_type examineType,
     a.process_status status,a.commodity_id commodityId,a.commodity_name commodityName,a.approval approvalType,
     a.commodity_quantity commodityQuantity,a.task_comment taskComment,a.picture_url pictureUrl,
-    e.service_life serviceLife ,e.service_year serviceYear,e.year_sum yearSum,e.contract_term contractTerm
+    e.service_life serviceLife ,e.service_year serviceYear,e.year_sum yearSum,e.contract_term contractTerm,
+    toa.type,toa.type_explain typeExplain
     from t_order_task a left join t_order_new b on a.order_no =b.order_no
     left join t_order_mid c on a.order_no =c.order_no
     left join t_task_member e on a.id=e.tid
+    left join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval group by order_no) toa on b.order_no=toa.order_no
     <if test="shiroType ==2 or  shiroType ==3">
       left join department d on b.order_dep =d.id
     </if>
+    <if test="type !=null">
+      inner join (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+    from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+    group by order_no) toa2 on b.order_no=toa2.order_no
+    </if>
     where  b.delete_sign in (0,2)
     and a.process_status in (1,2,3,4)
     <if test="shiroType ==1">
@@ -2184,6 +2292,16 @@
     <if test="shiroType ==2 or shiroType ==3">
       left join department d on b.order_dep =d.id
     </if>
+    <if test="type !=null">
+      inner join
+      (select order_no ,GROUP_CONCAT(`type`)`type` ,GROUP_CONCAT(type_explain)type_explain
+      from t_order_approval
+      where `type` in
+      <foreach collection="type" item="item" separator="," open="(" close=")">
+        #{item}
+      </foreach>
+      group by order_no) toa on b.order_no=toa.order_no
+    </if>
     where  b.delete_sign in (0,2)
     and a.process_status in (1,2,3,4)
     <if test="shiroType ==1">

+ 1 - 0
src/main/java/com/goafanti/common/mapper/UserMapperExt.xml

@@ -1531,6 +1531,7 @@
 			 user b
 			where b.status = 0 and b.channel =0  and new_channel=0 and b.share_type=0
 			  and b.nickname like concat('%',#{name},'%')
+			  and b.aid =#{aid}
     </select>
 
     <select id="selectSignedCustomerByName"  resultType="com.goafanti.customer.bo.CustomerSimpleBo">

+ 19 - 0
src/main/java/com/goafanti/common/model/Department.java

@@ -164,6 +164,11 @@ public class Department implements Serializable {
      */
     private String techAdminId;
 
+    /**
+     * 运营保障审核人
+     */
+    private String operationGuaranteeId;
+
     private static final long serialVersionUID = 1L;
 
     /**
@@ -599,4 +604,18 @@ public class Department implements Serializable {
     public void setTechAdminId(String techAdminId) {
         this.techAdminId = techAdminId;
     }
+
+    /**
+     * 运营保障审核人
+     */
+    public String getOperationGuaranteeId() {
+        return operationGuaranteeId;
+    }
+
+    /**
+     * 运营保障审核人
+     */
+    public void setOperationGuaranteeId(String operationGuaranteeId) {
+        this.operationGuaranteeId = operationGuaranteeId;
+    }
 }

+ 19 - 0
src/main/java/com/goafanti/common/model/PublicRelease.java

@@ -203,6 +203,11 @@ public class PublicRelease implements Serializable {
      */
     private Integer techStartProcess;
 
+    /**
+     * 公出企业地址
+     */
+    private String addressName;
+
     private static final long serialVersionUID = 1L;
 
     /**
@@ -750,4 +755,18 @@ public class PublicRelease implements Serializable {
     public void setTechStartProcess(Integer techStartProcess) {
         this.techStartProcess = techStartProcess;
     }
+
+    /**
+     * 公出企业地址
+     */
+    public String getAddressName() {
+        return addressName;
+    }
+
+    /**
+     * 公出企业地址
+     */
+    public void setAddressName(String addressName) {
+        this.addressName = addressName;
+    }
 }

+ 120 - 2
src/main/java/com/goafanti/common/model/PublicReleaseDetails.java

@@ -4,10 +4,13 @@ import java.io.Serializable;
 import java.util.Date;
 
 /**
- * public_release_details
- * @author 
+ * 公出详情表
+ * @TableName public_release_details
  */
 public class PublicReleaseDetails implements Serializable {
+    /**
+     * 
+     */
     private Integer id;
 
     /**
@@ -85,133 +88,248 @@ public class PublicReleaseDetails implements Serializable {
      */
     private Date updateTime;
 
+    /**
+     * 公出企业地址
+     */
+    private String addressName;
+
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 
+     */
     public Integer getId() {
         return id;
     }
 
+    /**
+     * 
+     */
     public void setId(Integer id) {
         this.id = id;
     }
 
+    /**
+     * 公出编号
+     */
     public Integer getPrid() {
         return prid;
     }
 
+    /**
+     * 公出编号
+     */
     public void setPrid(Integer prid) {
         this.prid = prid;
     }
 
+    /**
+     * 客户id
+     */
     public String getUid() {
         return uid;
     }
 
+    /**
+     * 客户id
+     */
     public void setUid(String uid) {
         this.uid = uid;
     }
 
+    /**
+     * 跟进id
+     */
     public String getUfid() {
         return ufid;
     }
 
+    /**
+     * 跟进id
+     */
     public void setUfid(String ufid) {
         this.ufid = ufid;
     }
 
+    /**
+     * 客户类型 0新客户 1老客户
+     */
     public Integer getNewUser() {
         return newUser;
     }
 
+    /**
+     * 客户类型 0新客户 1老客户
+     */
     public void setNewUser(Integer newUser) {
         this.newUser = newUser;
     }
 
+    /**
+     * 签单数
+     */
     public Integer getSignSum() {
         return signSum;
     }
 
+    /**
+     * 签单数
+     */
     public void setSignSum(Integer signSum) {
         this.signSum = signSum;
     }
 
+    /**
+     * 经度
+     */
     public String getLongitude() {
         return longitude;
     }
 
+    /**
+     * 经度
+     */
     public void setLongitude(String longitude) {
         this.longitude = longitude;
     }
 
+    /**
+     * 纬度
+     */
     public String getLatitude() {
         return latitude;
     }
 
+    /**
+     * 纬度
+     */
     public void setLatitude(String latitude) {
         this.latitude = latitude;
     }
 
+    /**
+     * 打卡状态 1正常打卡 2异常打卡
+     */
     public Integer getClockIn() {
         return clockIn;
     }
 
+    /**
+     * 打卡状态 1正常打卡 2异常打卡
+     */
     public void setClockIn(Integer clockIn) {
         this.clockIn = clockIn;
     }
 
+    /**
+     * 打卡时间
+     */
     public Date getClockInTime() {
         return clockInTime;
     }
 
+    /**
+     * 打卡时间
+     */
     public void setClockInTime(Date clockInTime) {
         this.clockInTime = clockInTime;
     }
 
+    /**
+     * 照片
+     */
     public String getPhotoUrl() {
         return photoUrl;
     }
 
+    /**
+     * 照片
+     */
     public void setPhotoUrl(String photoUrl) {
         this.photoUrl = photoUrl;
     }
 
+    /**
+     * 公出企业地址
+     */
     public String getDistrictName() {
         return districtName;
     }
 
+    /**
+     * 公出企业地址
+     */
     public void setDistrictName(String districtName) {
         this.districtName = districtName;
     }
 
+    /**
+     * 打卡说明
+     */
     public String getClockInRemarks() {
         return clockInRemarks;
     }
 
+    /**
+     * 打卡说明
+     */
     public void setClockInRemarks(String clockInRemarks) {
         this.clockInRemarks = clockInRemarks;
     }
 
+    /**
+     * 时长
+     */
     public Double getDuration() {
         return duration;
     }
 
+    /**
+     * 时长
+     */
     public void setDuration(Double duration) {
         this.duration = duration;
     }
 
+    /**
+     * 0辅助 1主要(根据客户是否是公出人判断)
+     */
     public Integer getMainStatus() {
         return mainStatus;
     }
 
+    /**
+     * 0辅助 1主要(根据客户是否是公出人判断)
+     */
     public void setMainStatus(Integer mainStatus) {
         this.mainStatus = mainStatus;
     }
 
+    /**
+     * 修改时间
+     */
     public Date getUpdateTime() {
         return updateTime;
     }
 
+    /**
+     * 修改时间
+     */
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
+
+    /**
+     * 公出企业地址
+     */
+    public String getAddressName() {
+        return addressName;
+    }
+
+    /**
+     * 公出企业地址
+     */
+    public void setAddressName(String addressName) {
+        this.addressName = addressName;
+    }
 }

+ 87 - 0
src/main/java/com/goafanti/common/model/TOrderApproval.java

@@ -0,0 +1,87 @@
+package com.goafanti.common.model;
+
+import java.io.Serializable;
+
+/**
+ * 订单特批分类表
+ * @TableName t_order_approval
+ */
+public class TOrderApproval implements Serializable {
+    /**
+     * 
+     */
+    private Integer id;
+
+    /**
+     * 订单编号
+     */
+    private String orderNo;
+
+    /**
+     * 特批类型 0其他,1=无前期款,2=暂无合同款,3=含高风险条款,4=新产品首单,5=通过率低于80%,6=3万以下会员,7=认证首期5K以下
+     */
+    private Integer type;
+
+    /**
+     * 特批其他说明
+     */
+    private String typeExplain;
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 
+     */
+    public Integer getId() {
+        return id;
+    }
+
+    /**
+     * 
+     */
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    /**
+     * 订单编号
+     */
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    /**
+     * 订单编号
+     */
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    /**
+     * 特批类型 0其他,1=无前期款,2=暂无合同款,3=含高风险条款,4=新产品首单,5=通过率低于80%,6=3万以下会员,7=认证首期5K以下
+     */
+    public Integer getType() {
+        return type;
+    }
+
+    /**
+     * 特批类型 0其他,1=无前期款,2=暂无合同款,3=含高风险条款,4=新产品首单,5=通过率低于80%,6=3万以下会员,7=认证首期5K以下
+     */
+    public void setType(Integer type) {
+        this.type = type;
+    }
+
+    /**
+     * 特批其他说明
+     */
+    public String getTypeExplain() {
+        return typeExplain;
+    }
+
+    /**
+     * 特批其他说明
+     */
+    public void setTypeExplain(String typeExplain) {
+        this.typeExplain = typeExplain;
+    }
+}

+ 297 - 3
src/main/java/com/goafanti/common/model/TOrderNew.java

@@ -5,8 +5,8 @@ import java.math.BigDecimal;
 import java.util.Date;
 
 /**
- * t_order_new
- * @author 
+ * 订单表
+ * @TableName t_order_new
  */
 public class TOrderNew implements Serializable {
     /**
@@ -235,7 +235,7 @@ public class TOrderNew implements Serializable {
     private String other;
 
     /**
-     * 客户类型 0私有客户 1签单客户
+     * 客户类型 0私有客户 1签单客户 2=限定项目客户
      */
     private Integer userType;
 
@@ -256,394 +256,688 @@ public class TOrderNew implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 订单编号
+     */
     public String getOrderNo() {
         return orderNo;
     }
 
+    /**
+     * 订单编号
+     */
     public void setOrderNo(String orderNo) {
         this.orderNo = orderNo;
     }
 
+    /**
+     * 订单类型 0认证项目 1科技项目 2 两化融化管理体系认证项目
+     */
     public Integer getOrderType() {
         return orderType;
     }
 
+    /**
+     * 订单类型 0认证项目 1科技项目 2 两化融化管理体系认证项目
+     */
     public void setOrderType(Integer orderType) {
         this.orderType = orderType;
     }
 
+    /**
+     * 创建人
+     */
     public String getCreater() {
         return creater;
     }
 
+    /**
+     * 创建人
+     */
     public void setCreater(String creater) {
         this.creater = creater;
     }
 
+    /**
+     * 创建时间
+     */
     public Date getCreateTime() {
         return createTime;
     }
 
+    /**
+     * 创建时间
+     */
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
 
+    /**
+     * 更新时间
+     */
     public Date getUpdateTime() {
         return updateTime;
     }
 
+    /**
+     * 更新时间
+     */
     public void setUpdateTime(Date updateTime) {
         this.updateTime = updateTime;
     }
 
+    /**
+     * 买方id
+     */
     public String getBuyerId() {
         return buyerId;
     }
 
+    /**
+     * 买方id
+     */
     public void setBuyerId(String buyerId) {
         this.buyerId = buyerId;
     }
 
+    /**
+     * 首付金额
+     */
     public BigDecimal getFirstAmount() {
         return firstAmount;
     }
 
+    /**
+     * 首付金额
+     */
     public void setFirstAmount(BigDecimal firstAmount) {
         this.firstAmount = firstAmount;
     }
 
+    /**
+     * 总金额
+     */
     public BigDecimal getTotalAmount() {
         return totalAmount;
     }
 
+    /**
+     * 总金额
+     */
     public void setTotalAmount(BigDecimal totalAmount) {
         this.totalAmount = totalAmount;
     }
 
+    /**
+     * 已收金额
+     */
     public BigDecimal getSettlementAmount() {
         return settlementAmount;
     }
 
+    /**
+     * 已收金额
+     */
     public void setSettlementAmount(BigDecimal settlementAmount) {
         this.settlementAmount = settlementAmount;
     }
 
+    /**
+     * 退款金额
+     */
     public BigDecimal getRefundAmount() {
         return refundAmount;
     }
 
+    /**
+     * 退款金额
+     */
     public void setRefundAmount(BigDecimal refundAmount) {
         this.refundAmount = refundAmount;
     }
 
+    /**
+     * 订单状态 0-待签单,1-签单待审,2-签单审核通过,3-签单审核拒绝,4-已结项,5-已驳回,6-已退单
+     */
     public Integer getOrderStatus() {
         return orderStatus;
     }
 
+    /**
+     * 订单状态 0-待签单,1-签单待审,2-签单审核通过,3-签单审核拒绝,4-已结项,5-已驳回,6-已退单
+     */
     public void setOrderStatus(Integer orderStatus) {
         this.orderStatus = orderStatus;
     }
 
+    /**
+     * 清算状态 0-首付待付请,1-尾款待付清,2-已付请,3-部分退款,4-全部退款
+     */
     public Integer getLiquidationStatus() {
         return liquidationStatus;
     }
 
+    /**
+     * 清算状态 0-首付待付请,1-尾款待付清,2-已付请,3-部分退款,4-全部退款
+     */
     public void setLiquidationStatus(Integer liquidationStatus) {
         this.liquidationStatus = liquidationStatus;
     }
 
+    /**
+     * 流程状态 0=营销员,1=经理,2=营销管理员,3=财务与技术总监,4=总裁,5=技术总监派单,6部分分配,7全部分配
+     */
     public Integer getProcessStatus() {
         return processStatus;
     }
 
+    /**
+     * 流程状态 0=营销员,1=经理,2=营销管理员,3=财务与技术总监,4=总裁,5=技术总监派单,6部分分配,7全部分配
+     */
     public void setProcessStatus(Integer processStatus) {
         this.processStatus = processStatus;
     }
 
+    /**
+     * 项目状态 0-项目待提交 1-项目已提交,2-项目评审,3-项目立项,4-项目公示,5-项目抽查,6-项目备案,7-项目下证,8-项目验收,9-项目拨款
+     */
     public Integer getProjectStatus() {
         return projectStatus;
     }
 
+    /**
+     * 项目状态 0-项目待提交 1-项目已提交,2-项目评审,3-项目立项,4-项目公示,5-项目抽查,6-项目备案,7-项目下证,8-项目验收,9-项目拨款
+     */
     public void setProjectStatus(Integer projectStatus) {
         this.projectStatus = projectStatus;
     }
 
+    /**
+     * 特批状态 0-非特批 ,1-总裁待审核,2-总裁通过,3-总裁驳回 4董事长待审核 5董事长通过 6董事长驳回
+     */
     public Integer getApproval() {
         return approval;
     }
 
+    /**
+     * 特批状态 0-非特批 ,1-总裁待审核,2-总裁通过,3-总裁驳回 4董事长待审核 5董事长通过 6董事长驳回
+     */
     public void setApproval(Integer approval) {
         this.approval = approval;
     }
 
+    /**
+     * 订单备注
+     */
     public String getOrderRemarks() {
         return orderRemarks;
     }
 
+    /**
+     * 订单备注
+     */
     public void setOrderRemarks(String orderRemarks) {
         this.orderRemarks = orderRemarks;
     }
 
+    /**
+     * 0正常 1作废 2锁定 3变更中
+     */
     public Integer getDeleteSign() {
         return deleteSign;
     }
 
+    /**
+     * 0正常 1作废 2锁定 3变更中
+     */
     public void setDeleteSign(Integer deleteSign) {
         this.deleteSign = deleteSign;
     }
 
+    /**
+     * 营销员id
+     */
     public String getSalesmanId() {
         return salesmanId;
     }
 
+    /**
+     * 营销员id
+     */
     public void setSalesmanId(String salesmanId) {
         this.salesmanId = salesmanId;
     }
 
+    /**
+     * 财务id
+     */
     public String getFinanceId() {
         return financeId;
     }
 
+    /**
+     * 财务id
+     */
     public void setFinanceId(String financeId) {
         this.financeId = financeId;
     }
 
+    /**
+     * 技术员id
+     */
     public String getTechnicianId() {
         return technicianId;
     }
 
+    /**
+     * 技术员id
+     */
     public void setTechnicianId(String technicianId) {
         this.technicianId = technicianId;
     }
 
+    /**
+     * 签单日期
+     */
     public Date getSignTime() {
         return signTime;
     }
 
+    /**
+     * 签单日期
+     */
     public void setSignTime(Date signTime) {
         this.signTime = signTime;
     }
 
+    /**
+     * 结算日期
+     */
     public Date getSettlementTime() {
         return settlementTime;
     }
 
+    /**
+     * 结算日期
+     */
     public void setSettlementTime(Date settlementTime) {
         this.settlementTime = settlementTime;
     }
 
+    /**
+     * 合同图片
+     */
     public String getContractPictureUrl() {
         return contractPictureUrl;
     }
 
+    /**
+     * 合同图片
+     */
     public void setContractPictureUrl(String contractPictureUrl) {
         this.contractPictureUrl = contractPictureUrl;
     }
 
+    /**
+     * 合同编号
+     */
     public String getContractNo() {
         return contractNo;
     }
 
+    /**
+     * 合同编号
+     */
     public void setContractNo(String contractNo) {
         this.contractNo = contractNo;
     }
 
+    /**
+     * 业务品类
+     */
     public String getContractType() {
         return contractType;
     }
 
+    /**
+     * 业务品类
+     */
     public void setContractType(String contractType) {
         this.contractType = contractType;
     }
 
+    /**
+     * 企业负责人
+     */
     public String getContacts() {
         return contacts;
     }
 
+    /**
+     * 企业负责人
+     */
     public void setContacts(String contacts) {
         this.contacts = contacts;
     }
 
+    /**
+     * 负责人联系电话
+     */
     public String getContactMobile() {
         return contactMobile;
     }
 
+    /**
+     * 负责人联系电话
+     */
     public void setContactMobile(String contactMobile) {
         this.contactMobile = contactMobile;
     }
 
+    /**
+     * 企业法人
+     */
     public String getLegalPerson() {
         return legalPerson;
     }
 
+    /**
+     * 企业法人
+     */
     public void setLegalPerson(String legalPerson) {
         this.legalPerson = legalPerson;
     }
 
+    /**
+     * 法人联系电话
+     */
     public String getLegalPersonTel() {
         return legalPersonTel;
     }
 
+    /**
+     * 法人联系电话
+     */
     public void setLegalPersonTel(String legalPersonTel) {
         this.legalPersonTel = legalPersonTel;
     }
 
+    /**
+     * 校对单量
+     */
     public Double getProofCount() {
         return proofCount;
     }
 
+    /**
+     * 校对单量
+     */
     public void setProofCount(Double proofCount) {
         this.proofCount = proofCount;
     }
 
+    /**
+     * 校对人
+     */
     public String getProofAid() {
         return proofAid;
     }
 
+    /**
+     * 校对人
+     */
     public void setProofAid(String proofAid) {
         this.proofAid = proofAid;
     }
 
+    /**
+     * 校对时间
+     */
     public Date getProofTime() {
         return proofTime;
     }
 
+    /**
+     * 校对时间
+     */
     public void setProofTime(Date proofTime) {
         this.proofTime = proofTime;
     }
 
+    /**
+     * 校对状态(0-未校对 1已校对)
+     */
     public Integer getProofStatus() {
         return proofStatus;
     }
 
+    /**
+     * 校对状态(0-未校对 1已校对)
+     */
     public void setProofStatus(Integer proofStatus) {
         this.proofStatus = proofStatus;
     }
 
+    /**
+     * 订单部门
+     */
     public String getOrderDep() {
         return orderDep;
     }
 
+    /**
+     * 订单部门
+     */
     public void setOrderDep(String orderDep) {
         this.orderDep = orderDep;
     }
 
+    /**
+     * 外包 0否 1是
+     */
     public Integer getOutsource() {
         return outsource;
     }
 
+    /**
+     * 外包 0否 1是
+     */
     public void setOutsource(Integer outsource) {
         this.outsource = outsource;
     }
 
+    /**
+     * 附加订单
+     */
     public String getAdditionalOrder() {
         return additionalOrder;
     }
 
+    /**
+     * 附加订单
+     */
     public void setAdditionalOrder(String additionalOrder) {
         this.additionalOrder = additionalOrder;
     }
 
+    /**
+     * 原订单
+     */
     public String getPrimaryOrder() {
         return primaryOrder;
     }
 
+    /**
+     * 原订单
+     */
     public void setPrimaryOrder(String primaryOrder) {
         this.primaryOrder = primaryOrder;
     }
 
+    /**
+     * 原营销员id
+     */
     public String getOldSalesmanId() {
         return oldSalesmanId;
     }
 
+    /**
+     * 原营销员id
+     */
     public void setOldSalesmanId(String oldSalesmanId) {
         this.oldSalesmanId = oldSalesmanId;
     }
 
+    /**
+     * 驳回位置 (同流程状态)
+     */
     public Integer getBackStatus() {
         return backStatus;
     }
 
+    /**
+     * 驳回位置 (同流程状态)
+     */
     public void setBackStatus(Integer backStatus) {
         this.backStatus = backStatus;
     }
 
+    /**
+     * 补充协议
+     */
     public String getAgreementUrl() {
         return agreementUrl;
     }
 
+    /**
+     * 补充协议
+     */
     public void setAgreementUrl(String agreementUrl) {
         this.agreementUrl = agreementUrl;
     }
 
+    /**
+     * 客户类型 0新客户 1老客户
+     */
     public Integer getNewUser() {
         return newUser;
     }
 
+    /**
+     * 客户类型 0新客户 1老客户
+     */
     public void setNewUser(Integer newUser) {
         this.newUser = newUser;
     }
 
+    /**
+     * 服务内容
+     */
     public String getServiceContent() {
         return serviceContent;
     }
 
+    /**
+     * 服务内容
+     */
     public void setServiceContent(String serviceContent) {
         this.serviceContent = serviceContent;
     }
 
+    /**
+     * 销售类型 0=电话新开发,1=电话自带资源,2=网络,3=渠道,4=转介绍,5=其他,6=高新复购,7=其他复购
+     */
     public Integer getSalesType() {
         return salesType;
     }
 
+    /**
+     * 销售类型 0=电话新开发,1=电话自带资源,2=网络,3=渠道,4=转介绍,5=其他,6=高新复购,7=其他复购
+     */
     public void setSalesType(Integer salesType) {
         this.salesType = salesType;
     }
 
+    /**
+     * 渠道客户编号
+     */
     public String getChannelId() {
         return channelId;
     }
 
+    /**
+     * 渠道客户编号
+     */
     public void setChannelId(String channelId) {
         this.channelId = channelId;
     }
 
+    /**
+     * 销售其他描述
+     */
     public String getOther() {
         return other;
     }
 
+    /**
+     * 销售其他描述
+     */
     public void setOther(String other) {
         this.other = other;
     }
 
+    /**
+     * 客户类型 0私有客户 1签单客户 2=限定项目客户
+     */
     public Integer getUserType() {
         return userType;
     }
 
+    /**
+     * 客户类型 0私有客户 1签单客户 2=限定项目客户
+     */
     public void setUserType(Integer userType) {
         this.userType = userType;
     }
 
+    /**
+     * 审核人员名称
+     */
     public String getExamineName() {
         return examineName;
     }
 
+    /**
+     * 审核人员名称
+     */
     public void setExamineName(String examineName) {
         this.examineName = examineName;
     }
 
+    /**
+     * 标签 0=默认,1=待处理,2=待派单,3=暂不处理,4=已过期,已作废
+     */
     public Integer getTag() {
         return tag;
     }
 
+    /**
+     * 标签 0=默认,1=待处理,2=待派单,3=暂不处理,4=已过期,已作废
+     */
     public void setTag(Integer tag) {
         this.tag = tag;
     }
 
+    /**
+     * 0=客户自己完成,1=非客户自己完成
+     */
     public Integer getPatentStatus() {
         return patentStatus;
     }
 
+    /**
+     * 0=客户自己完成,1=非客户自己完成
+     */
     public void setPatentStatus(Integer patentStatus) {
         this.patentStatus = patentStatus;
     }

+ 19 - 0
src/main/java/com/goafanti/common/model/TOrderNewWithBLOBs.java

@@ -40,6 +40,25 @@ public class TOrderNewWithBLOBs extends TOrderNew {
 	 */
 	private String addDeductionOther;
 
+	private String type;
+	private String typeExplain;
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getTypeExplain() {
+		return typeExplain;
+	}
+
+	public void setTypeExplain(String typeExplain) {
+		this.typeExplain = typeExplain;
+	}
+
 	public Integer getKnowledgeServices() {
 		return knowledgeServices;
 	}

+ 19 - 0
src/main/java/com/goafanti/common/model/TOrderPublicReleaseCount.java

@@ -53,6 +53,11 @@ public class TOrderPublicReleaseCount implements Serializable {
      */
     private Date createTime;
 
+    /**
+     * 统计年份
+     */
+    private String sumYear;
+
     private static final long serialVersionUID = 1L;
 
     /**
@@ -180,4 +185,18 @@ public class TOrderPublicReleaseCount implements Serializable {
     public void setCreateTime(Date createTime) {
         this.createTime = createTime;
     }
+
+    /**
+     * 统计年份
+     */
+    public String getSumYear() {
+        return sumYear;
+    }
+
+    /**
+     * 统计年份
+     */
+    public void setSumYear(String sumYear) {
+        this.sumYear = sumYear;
+    }
 }

+ 1 - 1
src/main/java/com/goafanti/common/task/ReleaseUserTask.java

@@ -374,7 +374,7 @@ public class ReleaseUserTask {
 				}else if(u.getNewChannel()==1){
 					str2= "渠道";
 				}
-				str=String.format("您的%s客户【%s】已经30天未跟进%s,已经自动释放!", str2,str3, u.getUserName());
+				str=String.format("您的%s客户【%s】已经30天未跟进%s,已经自动释放!", str2, u.getUserName(),str3);
 				nl.add(new Notice(UUID.randomUUID().toString(), new Date(), 0, u.getAid(),
 						NoticeStatus.CUSTOMER_LOSE30.getCode(),
 						str,

+ 23 - 16
src/main/java/com/goafanti/expenseAccount/service/impl/ExpenseAccountServiceImpl.java

@@ -46,6 +46,7 @@ import javax.servlet.http.HttpServletResponse;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.time.LocalDate;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -432,19 +433,19 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
             StringBuffer types=new StringBuffer();
             for (SonExpenseAccount e : mainExpenseAccount.getSonList()) {
                 if (e.getType()!=0){
-                    types=types.append(EATypes.getDescByCode(e.getType()));
+                    types.append(EATypes.getDescByCode(e.getType()));
                 }else {
-                    types=types.append(e.getTypeOther());
+                    types.append(e.getTypeOther());
                 }
                 if (e.getType()==2){
                     if (e.getSecondaryType()==0){
-                        types=types.append("-").append(e.getSecondaryTypeOther());
+                        types.append("-").append(e.getSecondaryTypeOther());
                     }else{
                         String descByCode = EAsecondaryTypes.getDescByCode(e.getSecondaryType());
-                        types=types.append("-").append(descByCode);
+                        types.append("-").append(descByCode);
                     }
                 }
-                types=types.append(",");
+                types.append(",");
             }
             expenseAccountMapper.updateSonTypeOther(id,types.substring(0,types.length()-1));
         }
@@ -468,6 +469,7 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
 
     @Override
     public void pushExpenseTotalAmount() {
+//                        orderNewService.pushOrderPublicReleaseCount("800326086952370176");
         List<TOrderNew> tOrderNews = orderNewService.selectGetAll();
         for (TOrderNew e : tOrderNews) {
                 orderNewService.pushOrderPublicReleaseCount(e.getOrderNo());
@@ -1418,19 +1420,16 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
                     districtName=districtName.replace(userNames,"");
                     e.setDistrictName(districtName);
                 }
-
-
             }
             if (e.getOrderNo()!=null){
-
                 List<ExpenseAccount> expenseAccounts = expenseAccountMapper.selectByOrderNo(e.getOrderNo());
-
+                int year = LocalDate.now().getYear();
+                BigDecimal count = BigDecimal.ZERO;
+                BigDecimal yxyCount = BigDecimal.ZERO;
+                BigDecimal zxsCount = BigDecimal.ZERO;
+                BigDecimal qtCount = BigDecimal.ZERO;
+                TOrderPublicReleaseCount out = tOrderPublicReleaseCountMapper.selectByOrderNo(e.getOrderNo(), String.valueOf(year));
                 if(!expenseAccounts.isEmpty()){
-                    TOrderPublicReleaseCount out = tOrderPublicReleaseCountMapper.selectByOrderNo(e.getOrderNo());
-                    BigDecimal count = BigDecimal.ZERO;
-                    BigDecimal yxyCount = BigDecimal.ZERO;
-                    BigDecimal zxsCount = BigDecimal.ZERO;
-                    BigDecimal qtCount = BigDecimal.ZERO;
                     for (ExpenseAccount ea : expenseAccounts) {
                         count=count.add(ea.getAmount());
                         Admin admin = adminMapper.selectByPrimaryKey(ea.getAid());
@@ -1444,9 +1443,9 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
                             }
                         }
                     }
-                    String str = getString(e, out, count, yxyCount, zxsCount,qtCount);
-                    e.setCountStr(str);
                 }
+                String str = getString(e, out, count, yxyCount, zxsCount,qtCount);
+                e.setCountStr(str);
             }
         }
 
@@ -1456,6 +1455,14 @@ public class ExpenseAccountServiceImpl extends BaseMybatisDao<ExpenseAccountMapp
     }
 
     private String getString(SonExpenseAccount e, TOrderPublicReleaseCount out, BigDecimal count, BigDecimal yxyCount, BigDecimal zxsCount, BigDecimal qtCount) {
+        if (out == null){
+            out=new TOrderPublicReleaseCount();
+            out.setMaxDuration(0d);
+            out.setExceedDuration(0d);
+            out.setActualDuration(0d);
+            out.setFrequency(0);
+            out.setPeopleCount(0);
+        }
         String maxString=":应公出" + out.getMaxDuration() + "小时";
         String actualString=",超过" + out.getExceedDuration() + "小时,";
         if (out.getMaxDuration().equals(-1d)){

+ 9 - 2
src/main/java/com/goafanti/order/bo/InputMemberList.java

@@ -1,7 +1,5 @@
 package com.goafanti.order.bo;
 
-import java.util.List;
-
 public class InputMemberList {
     private String orderNo;
     private String userName;
@@ -17,10 +15,19 @@ public class InputMemberList {
      * 0 所有  1营销(自己)  2财务审核 3特批审核
      */
     private Integer shiroType;
+    private String type;
 
     private Integer pageSize;
     private Integer pageNo;
 
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
     public Integer getShiroType() {
         if (shiroType==null)return 1;
         return shiroType;

+ 9 - 0
src/main/java/com/goafanti/order/bo/InputOrderNewListBo.java

@@ -21,12 +21,21 @@ public class InputOrderNewListBo {
     private String contractStart;
     private String contractEnd;
     private String uid;
+    private String type;
     private Integer projectType;
     private Integer processStatus;
     private Integer tag;
     private  Integer pageNo;
     private Integer pageSize;
 
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
     public Integer getTag() {
         return tag;
     }

+ 9 - 0
src/main/java/com/goafanti/order/bo/InputProjectStatistics.java

@@ -28,6 +28,7 @@ public class InputProjectStatistics {
 	private Integer province;
 	private String provinceName;
 	private String projectId;
+	private String type;
 	/**
 	 * 筛选项 0库存 1派单 2完成 3立项 4抽查 5未通过 6受理 7完结 8授权 9驳回 10下证 11申请
 	 */
@@ -40,6 +41,14 @@ public class InputProjectStatistics {
 	 */
 	private Integer sdStatus;
 
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
 	public Integer getSdStatus() {
 		return sdStatus;
 	}

+ 23 - 3
src/main/java/com/goafanti/order/bo/OrderListBo.java

@@ -1,10 +1,9 @@
 package com.goafanti.order.bo;
 
-import java.math.BigDecimal;
-import java.util.List;
-
 import com.goafanti.common.utils.excel.Excel;
 
+import java.math.BigDecimal;
+
 
 /**
  * 订单列表
@@ -72,6 +71,8 @@ public class OrderListBo {
 	private Integer processStatus;
 	@Excel(name="是否特批" ,readConverterExp = "0=非特批,1=待审核,2=通过,3=驳回")
 	private Integer approval;
+	@Excel(name = "特批类型")
+	private String type;
 	/** 订单类型 **/
 	private Integer orderType;
 	@Excel(name="会员" ,readConverterExp = "0=否,1=是")
@@ -153,6 +154,25 @@ public class OrderListBo {
 
 	private Integer myExamine;
 
+
+	private String typeExplain;
+
+	public String getTypeExplain() {
+		return typeExplain;
+	}
+
+	public void setTypeExplain(String typeExplain) {
+		this.typeExplain = typeExplain;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
 	public Integer getMyExamine() {
 		return myExamine;
 	}

+ 9 - 0
src/main/java/com/goafanti/order/bo/OrderProcessName.java

@@ -13,6 +13,15 @@ public class OrderProcessName {
     private String approvalName;
     private String zxsgly;
     private String dsz;
+    private String yybz;
+
+    public String getYybz() {
+        return yybz;
+    }
+
+    public void setYybz(String yybz) {
+        this.yybz = yybz;
+    }
 
     public Integer getApprovalStatus() {
         return approvalStatus;

+ 20 - 0
src/main/java/com/goafanti/order/bo/OutMemberList.java

@@ -15,6 +15,10 @@ public class OutMemberList {
     private String orderNo;
     @Excel(name = "特批状态",readConverterExp = "0=非特批,1=待审核,2=通过,3=驳回",width = MINWIDTH)
     private Integer approval;
+    @Excel(name = "特批类型")
+    private String type;
+    private String typeExplain;
+
     @Excel(name = "订单部门",width = 20)
     private String depName;
     @Excel(name = "订单负责人")
@@ -59,6 +63,22 @@ public class OutMemberList {
     private Integer myExamine;
     private Integer examineType;
 
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getTypeExplain() {
+        return typeExplain;
+    }
+
+    public void setTypeExplain(String typeExplain) {
+        this.typeExplain = typeExplain;
+    }
+
     public Integer getApprovalType() {
         return approvalType;
     }

+ 9 - 0
src/main/java/com/goafanti/order/bo/OutProcessName.java

@@ -22,6 +22,15 @@ public class OutProcessName {
     private String cwgly;
 
     private String dsz;
+    private String yybz;
+
+    public String getYybz() {
+        return yybz;
+    }
+
+    public void setYybz(String yybz) {
+        this.yybz = yybz;
+    }
 
     public Integer getIsHN() {
         return isHN;

+ 28 - 2
src/main/java/com/goafanti/order/bo/OutProjectStatistics.java

@@ -1,7 +1,5 @@
 package com.goafanti.order.bo;
 
-import com.goafanti.common.utils.excel.Excel;
-
 import java.math.BigDecimal;
 
 
@@ -76,6 +74,34 @@ public class OutProjectStatistics {
 	private BigDecimal lastYearCapital;
 	private BigDecimal lastYearIncome;
 
+	private Integer approval;
+	private String type;
+	private String typeExplain;
+
+	public Integer getApproval() {
+		return approval;
+	}
+
+	public void setApproval(Integer approval) {
+		this.approval = approval;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getTypeExplain() {
+		return typeExplain;
+	}
+
+	public void setTypeExplain(String typeExplain) {
+		this.typeExplain = typeExplain;
+	}
+
 
 	public Integer getFormRetrieve() {
 		return formRetrieve;

+ 38 - 0
src/main/java/com/goafanti/order/bo/TOrderNewBo.java

@@ -94,6 +94,44 @@ public class TOrderNewBo extends TOrderNew{
 	private Integer approvalStatus;
 	private String approvalAid;
 	private String approvalName;
+	private String operationGuaranteeId;
+	private String operationGuaranteeName;
+
+	private String typeExplain;
+
+	private String type;
+
+	public String getTypeExplain() {
+		return typeExplain;
+	}
+
+	public void setTypeExplain(String typeExplain) {
+		this.typeExplain = typeExplain;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getOperationGuaranteeId() {
+		return operationGuaranteeId;
+	}
+
+	public void setOperationGuaranteeId(String operationGuaranteeId) {
+		this.operationGuaranteeId = operationGuaranteeId;
+	}
+
+	public String getOperationGuaranteeName() {
+		return operationGuaranteeName;
+	}
+
+	public void setOperationGuaranteeName(String operationGuaranteeName) {
+		this.operationGuaranteeName = operationGuaranteeName;
+	}
 
 	public String getApprovalName() {
 		return approvalName;

+ 21 - 0
src/main/java/com/goafanti/order/bo/TOrderTaskListBo.java

@@ -48,7 +48,11 @@ public class TOrderTaskListBo {
 	@Excel(name = "派单日期")
 	private String creteTime;
 	private Integer alreadyNumber;
+	@Excel(name = "特批",readConverterExp = "0=非特批,1=特批待审核,2=特批通过,3=特批驳回,4=董事长特批待审核,5=董事长特批通过,6董事长特批驳回")
 	private Integer approval;
+	@Excel(name="特批类型")
+	private String type;
+	private String typeExplain;
 	/** 外包部门 */
 	private String outsourceName;
 	private Integer outsourceStatus;
@@ -100,6 +104,23 @@ public class TOrderTaskListBo {
 
 	private String receiverMobile;
 
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getTypeExplain() {
+		return typeExplain;
+	}
+
+	public void setTypeExplain(String typeExplain) {
+		this.typeExplain = typeExplain;
+	}
+
 	public String getReceiverMobile() {
 		return receiverMobile;
 	}

+ 14 - 0
src/main/java/com/goafanti/order/bo/inuptTaskListBo.java

@@ -17,9 +17,23 @@ public class inuptTaskListBo {
 	private String startTime;
 	private String endTime;
 	private String cid;
+
+	/**
+	 * 特批类型
+	 */
+	private String type;
+
 	private Integer pageNo;
 	private Integer pageSize;
 
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
 	public String getProjectName() {
 		return projectName;
 	}

+ 54 - 0
src/main/java/com/goafanti/order/bo/managerListBo.java

@@ -37,6 +37,35 @@ public class managerListBo {
 	private String commodityPrice;
 	@Excel(name = "特批说明")
 	private String specialComment;
+	@Excel(name = "特批",readConverterExp = "0=非特批,1=特批待审核,2=特批通过,3=特批驳回,4=董事长特批待审核,5=董事长特批通过,6董事长特批驳回")
+	private Integer approval;
+	@Excel(name = "特批类型")
+	private String type;
+	private String typeExplain;
+
+	public Integer getApproval() {
+		return approval;
+	}
+
+	public void setApproval(Integer approval) {
+		this.approval = approval;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getTypeExplain() {
+		return typeExplain;
+	}
+
+	public void setTypeExplain(String typeExplain) {
+		this.typeExplain = typeExplain;
+	}
 
 	public String getProjectStatusName() {
 		return projectStatusName;
@@ -176,4 +205,29 @@ public class managerListBo {
 		this.specialComment = specialComment;
 	}
 
+	@Override
+	public String toString() {
+		return "managerListBo{" +
+				"id='" + id + '\'' +
+				", taskDistributionTime='" + taskDistributionTime + '\'' +
+				", provinceName='" + provinceName + '\'' +
+				", depName='" + depName + '\'' +
+				", salesmanName='" + salesmanName + '\'' +
+				", contractNo='" + contractNo + '\'' +
+				", orderNo='" + orderNo + '\'' +
+				", UserName='" + UserName + '\'' +
+				", cname='" + cname + '\'' +
+				", commodityName='" + commodityName + '\'' +
+				", commodityQuantity='" + commodityQuantity + '\'' +
+				", techDepName='" + techDepName + '\'' +
+				", techName='" + techName + '\'' +
+				", projectStatusName='" + projectStatusName + '\'' +
+				", projectStatus='" + projectStatus + '\'' +
+				", commodityPrice='" + commodityPrice + '\'' +
+				", specialComment='" + specialComment + '\'' +
+				", approval=" + approval +
+				", type='" + type + '\'' +
+				", typeExplain='" + typeExplain + '\'' +
+				'}';
+	}
 }

+ 36 - 0
src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsAudit.java

@@ -56,6 +56,12 @@ public class OutProjectStatisticsAudit extends OutProjectStatistics {
     @Excel(name = "满意度",readConverterExp = "0=非常满意,1=满意,2=一般,3=不满意")
     private Integer satisfactionDegree;
 
+    @Excel(name = "特批",readConverterExp = "0=非特批,1=特批待审核,2=特批通过,3=特批驳回,4=董事长特批待审核,5=董事长特批通过,6董事长特批驳回")
+    private Integer approval;
+    @Excel(name="特批类型")
+    private String type;
+    private String typeExplain;
+
 
     private Integer  setUpStatus;
     private String setUpTime;
@@ -80,6 +86,36 @@ public class OutProjectStatisticsAudit extends OutProjectStatistics {
     private Integer	certificatesCount;
 
     @Override
+    public Integer getApproval() {
+        return approval;
+    }
+
+    @Override
+    public void setApproval(Integer approval) {
+        this.approval = approval;
+    }
+
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    @Override
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public String getTypeExplain() {
+        return typeExplain;
+    }
+
+    @Override
+    public void setTypeExplain(String typeExplain) {
+        this.typeExplain = typeExplain;
+    }
+
+    @Override
     public Integer getFormRetrieve() {
         return formRetrieve;
     }

+ 35 - 0
src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsCommon.java

@@ -49,6 +49,41 @@ public class OutProjectStatisticsCommon extends OutProjectStatistics {
     private Integer formRetrieve;
     @Excel(name = "满意度",readConverterExp = "0=非常满意,1=满意,2=一般,3=不满意")
     private Integer satisfactionDegree;
+    @Excel(name = "特批",readConverterExp = "0=非特批,1=特批待审核,2=特批通过,3=特批驳回,4=董事长特批待审核,5=董事长特批通过,6董事长特批驳回")
+    private Integer approval;
+    @Excel(name="特批类型")
+    private String type;
+    private String typeExplain;
+
+    @Override
+    public Integer getApproval() {
+        return approval;
+    }
+
+    @Override
+    public void setApproval(Integer approval) {
+        this.approval = approval;
+    }
+
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    @Override
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public String getTypeExplain() {
+        return typeExplain;
+    }
+
+    @Override
+    public void setTypeExplain(String typeExplain) {
+        this.typeExplain = typeExplain;
+    }
 
     @Override
     public Integer getFormRetrieve() {

+ 36 - 0
src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsDoubleSoft.java

@@ -52,6 +52,42 @@ public class OutProjectStatisticsDoubleSoft extends OutProjectStatistics {
     @Excel(name = "满意度",readConverterExp = "0=非常满意,1=满意,2=一般,3=不满意")
     private Integer satisfactionDegree;
 
+    @Excel(name = "特批",readConverterExp = "0=非特批,1=特批待审核,2=特批通过,3=特批驳回,4=董事长特批待审核,5=董事长特批通过,6董事长特批驳回")
+    private Integer approval;
+    @Excel(name="特批类型")
+    private String type;
+    private String typeExplain;
+
+    @Override
+    public Integer getApproval() {
+        return approval;
+    }
+
+    @Override
+    public void setApproval(Integer approval) {
+        this.approval = approval;
+    }
+
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    @Override
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public String getTypeExplain() {
+        return typeExplain;
+    }
+
+    @Override
+    public void setTypeExplain(String typeExplain) {
+        this.typeExplain = typeExplain;
+    }
+
     @Override
     public Integer getFormRetrieve() {
         return formRetrieve;

+ 35 - 0
src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsHighTech.java

@@ -65,6 +65,11 @@ public class OutProjectStatisticsHighTech extends OutProjectStatistics {
     private String orderRemarks;
     @Excel(name = "满意度调查表")
     private String formRetrieveName;
+    @Excel(name = "特批",readConverterExp = "0=非特批,1=特批待审核,2=特批通过,3=特批驳回,4=董事长特批待审核,5=董事长特批通过,6董事长特批驳回")
+    private Integer approval;
+    @Excel(name="特批类型")
+    private String type;
+    private String typeExplain;
 
 
 
@@ -83,6 +88,36 @@ public class OutProjectStatisticsHighTech extends OutProjectStatistics {
 
     private Integer	certificatesCount;
 
+    @Override
+    public Integer getApproval() {
+        return approval;
+    }
+
+    @Override
+    public void setApproval(Integer approval) {
+        this.approval = approval;
+    }
+
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    @Override
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public String getTypeExplain() {
+        return typeExplain;
+    }
+
+    @Override
+    public void setTypeExplain(String typeExplain) {
+        this.typeExplain = typeExplain;
+    }
+
     public String getFormRetrieveName() {
         return formRetrieveName;
     }

+ 36 - 0
src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsMember.java

@@ -50,6 +50,12 @@ public class OutProjectStatisticsMember extends OutProjectStatistics {
     @Excel(name = "满意度",readConverterExp = "0=非常满意,1=满意,2=一般,3=不满意")
     private Integer satisfactionDegree;
 
+    @Excel(name = "特批",readConverterExp = "0=非特批,1=特批待审核,2=特批通过,3=特批驳回,4=董事长特批待审核,5=董事长特批通过,6董事长特批驳回")
+    private Integer approval;
+    @Excel(name="特批类型")
+    private String type;
+    private String typeExplain;
+
     private Integer  setUpStatus;
     private String setUpTime;
     private Integer  spotCheckStatus;
@@ -81,6 +87,36 @@ public class OutProjectStatisticsMember extends OutProjectStatistics {
     private String contractTerm;
 
     @Override
+    public Integer getApproval() {
+        return approval;
+    }
+
+    @Override
+    public void setApproval(Integer approval) {
+        this.approval = approval;
+    }
+
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    @Override
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public String getTypeExplain() {
+        return typeExplain;
+    }
+
+    @Override
+    public void setTypeExplain(String typeExplain) {
+        this.typeExplain = typeExplain;
+    }
+
+    @Override
     public Integer getFormRetrieve() {
         return formRetrieve;
     }

+ 36 - 0
src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsPatent.java

@@ -66,6 +66,12 @@ public class OutProjectStatisticsPatent extends OutProjectStatistics {
     @Excel(name = "满意度",readConverterExp = "0=非常满意,1=满意,2=一般,3=不满意")
     private Integer satisfactionDegree;
 
+    @Excel(name = "特批",readConverterExp = "0=非特批,1=特批待审核,2=特批通过,3=特批驳回,4=董事长特批待审核,5=董事长特批通过,6董事长特批驳回")
+    private Integer approval;
+    @Excel(name="特批类型")
+    private String type;
+    private String typeExplain;
+
 
     private Integer  setUpStatus;
     private String setUpTime;
@@ -80,6 +86,36 @@ public class OutProjectStatisticsPatent extends OutProjectStatistics {
     private Integer	certificatesCount;
 
     @Override
+    public Integer getApproval() {
+        return approval;
+    }
+
+    @Override
+    public void setApproval(Integer approval) {
+        this.approval = approval;
+    }
+
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    @Override
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public String getTypeExplain() {
+        return typeExplain;
+    }
+
+    @Override
+    public void setTypeExplain(String typeExplain) {
+        this.typeExplain = typeExplain;
+    }
+
+    @Override
     public Integer getFormRetrieve() {
         return formRetrieve;
     }

+ 36 - 0
src/main/java/com/goafanti/order/bo/outStatistics/OutProjectStatisticsSoftwareWorks.java

@@ -64,6 +64,12 @@ public class OutProjectStatisticsSoftwareWorks extends OutProjectStatistics {
     @Excel(name = "满意度",readConverterExp = "0=非常满意,1=满意,2=一般,3=不满意")
     private Integer satisfactionDegree;
 
+    @Excel(name = "特批",readConverterExp = "0=非特批,1=特批待审核,2=特批通过,3=特批驳回,4=董事长特批待审核,5=董事长特批通过,6董事长特批驳回")
+    private Integer approval;
+    @Excel(name="特批类型")
+    private String type;
+    private String typeExplain;
+
     private Integer  setUpStatus;
     private String setUpTime;
     private Integer  spotCheckStatus;
@@ -78,6 +84,36 @@ public class OutProjectStatisticsSoftwareWorks extends OutProjectStatistics {
     private Integer	certificatesCount;
 
     @Override
+    public Integer getApproval() {
+        return approval;
+    }
+
+    @Override
+    public void setApproval(Integer approval) {
+        this.approval = approval;
+    }
+
+    @Override
+    public String getType() {
+        return type;
+    }
+
+    @Override
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Override
+    public String getTypeExplain() {
+        return typeExplain;
+    }
+
+    @Override
+    public void setTypeExplain(String typeExplain) {
+        this.typeExplain = typeExplain;
+    }
+
+    @Override
     public Integer getFormRetrieve() {
         return formRetrieve;
     }

+ 27 - 2
src/main/java/com/goafanti/order/controller/AdminNewOrderApiController.java

@@ -327,7 +327,7 @@ public class AdminNewOrderApiController extends CertifyApiController {
 
 	/**
 	 * 		订单列表
-	 *  specially 0 个人 1 营销员管理 2 驳回 3 特批 4 咨询师管理 5部门订单查询 6客服查询 7统计签单订单 8客户订单列表 9 复审订单 10 营销经理
+	 *  specially 0 个人 1 营销员管理 2 驳回 3 特批 4 咨询师管理 5部门订单查询 6客服查询 7统计签单订单 8客户订单列表 9 复审订单 10 营销经理 11运营保障
 	 *  distribution (咨询师管理列表 0 未分配 1部分 2全部
 	 *  amountStatus  0 10万元以下 1 10万~20万 2 20万~30万 3 30万~40万  4 40万以上
 	 * @return
@@ -371,7 +371,7 @@ public class AdminNewOrderApiController extends CertifyApiController {
 
 
 	/**
-	 * 订单审核.营销管理员审核
+	 * 订单审核 营销管理员审核
 	 */
 	@RequestMapping(value="/auditOrderNew", method = RequestMethod.POST)
 	public Result auditOrderNew(String orderNo,Integer orderStatus,String reason){
@@ -394,6 +394,31 @@ public class AdminNewOrderApiController extends CertifyApiController {
 
 
 	/**
+	 * 订单审核 运营保障审核
+	 * @param orderNo 订单编号
+	 * @param type 0拒绝 1通过
+	 * @param reason 说明
+	 */
+	@RequestMapping(value="/operationGuaranteeAudit", method = RequestMethod.POST)
+	public Result operationGuaranteeAudit(String orderNo,Integer type,String reason){
+		Result res=new Result();
+		if(StringUtils.isBlank(orderNo)){
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR, "订单编号","订单编号"));
+			return res;
+		}
+		if (type==null||(type!=0&&type!=1)) {
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"审核状态", "审核状态"));
+			return res;
+		}
+		if (StringUtils.isBlank(reason)) {
+			res.getError().add(buildError(ErrorConstants.PARAM_EMPTY_ERROR,"驳回原因", "驳回原因"));
+			return res;
+		}
+		return res.data(orderNewService.addOperationGuaranteeAudit(orderNo,type,reason));
+	}
+
+
+	/**
 	 * 催款统计列表
 	 * @param newStatus 0旧催款 1新催款
 	 * @param specially 0查看自己 1查看别人

+ 38 - 20
src/main/java/com/goafanti/order/controller/AdminOrderReceivablesApiController.java

@@ -1,26 +1,6 @@
 package com.goafanti.order.controller;
 
 
-
-
-
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
 import com.goafanti.admin.service.AttachmentService;
 import com.goafanti.common.bo.Error;
 import com.goafanti.common.bo.Result;
@@ -37,10 +17,25 @@ import com.goafanti.order.bo.OrderListBo;
 import com.goafanti.order.bo.ReceivablesListBo;
 import com.goafanti.order.bo.TOrderInvoiceBo;
 import com.goafanti.order.bo.TemporaryReceivablesBo;
+import com.goafanti.order.enums.ApprovalTypeEnums;
 import com.goafanti.order.service.FundManageOrderService;
 import com.goafanti.order.service.OrderBillService;
 import com.goafanti.order.service.OrderInvoiceService;
 import com.goafanti.order.service.OrderReceivablesService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping(value = "/api/admin/receivables")
@@ -217,6 +212,29 @@ public class AdminOrderReceivablesApiController extends CertifyApiController {
     	Pagination<OrderListBo> p=(Pagination<OrderListBo>) fundManageOrderService.financeList(o, pageNo, pageSize).get("pagination");
 		@SuppressWarnings("unchecked")
 		List<OrderListBo> list=(List<OrderListBo>)p.getList() ;
+		for (OrderListBo e : list) {
+			if (e.getType()!=null){
+				String[] split = e.getType().split(",");
+				StringBuilder str=new StringBuilder();
+				int index = 1;
+				for (int i = 1; i < 9; i++) {
+					for (String s : split) {
+						if (index ==Integer.parseInt(s)){
+							if (ApprovalTypeEnums.QT.getCode().equals(Integer.parseInt(s))){
+								str.append(ApprovalTypeEnums.getDesc(s))
+										.append("(").append(e.getTypeExplain()).append(")")
+										.append(",");
+							}else {
+								str.append(ApprovalTypeEnums.getDesc(s)).append(",");
+							}
+						}
+					}
+					index++;
+					if (index==8)index=0;
+				}
+				e.setType(str.substring(0,str.length()-1));
+			}
+		}
     	NewExcelUtil<OrderListBo>excel=new NewExcelUtil<>(OrderListBo.class);
 		 return  excel.exportExcel(list,"订单回款列表",uploadPath);
     }

+ 1 - 1
src/main/java/com/goafanti/order/controller/FundManagerOrderApiController.java

@@ -147,7 +147,7 @@ public class FundManagerOrderApiController extends CertifyApiController {
 		return res;
 	}
 	/**
-	 * 财务审核通过
+	 *  订单审核 财务审核
 	 */
 	@RequestMapping(value="/financeApproval", method = RequestMethod.POST)
 	public Result financeApproval(String orderNo,String remarks,String aid) {

+ 9 - 20
src/main/java/com/goafanti/order/controller/OrderChangeApiController.java

@@ -248,14 +248,14 @@ public class OrderChangeApiController extends CertifyApiController {
 	}
 	/**
 	 *   变更审核
-	 *  赠送:营销-经理-总经理审核-财务(已收款情况)-总裁
-	 *  重报:营销-经理-总经理审核-技术员-财务-财务总监-总裁
-	 * 	仅项目:营销-经理-总经理审核-技术员-技术总监-财务-财务总监-总裁
-	 *  项目&金额:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-总裁
-	 *  退单退款:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-总裁-董事长(大于2K,需董事长审核)-财务退票
-	 *  退单不退款:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-总裁-财务退票
-	 * 	仅金额:营销-经理-总经理审核-技术总监-财务-财务总监-总裁
-	 * 	框架协议审核流程: 营销员发起-营销经理审核-营销管理员审核-财务审核-完成
+	 *  赠送:营销-经理-总经理审核-财务(已收款情况)-运营保障-总裁
+	 *  重报:营销-经理-总经理审核-技术员-财务-财务总监-运营保障-总裁
+	 *  仅项目:营销-经理-总经理审核-技术员-技术总监-财务-财务总监-运营保障-总裁
+	 *  项目&金额:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-运营保障-总裁
+	 *  退单退款:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-运营保障-总裁-董事长(大于2K,需董事长审核)-财务退票
+	 *  退单不退款:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-运营保障-总裁-财务退票
+	 *  仅金额:营销-经理-总经理审核-技术总监-财务-财务总监-运营保障-总裁
+	 *  框架协议审核流程: 营销员发起-营销经理审核-营销管理员审核-财务审核-运营保障-完成
 	 */
 	@RequestMapping(value = "/orderChangeAudit", method = RequestMethod.POST)
 	public Result orderChangeAudit(String changeId,String remarks,Integer status,Integer processState,Integer rejectState){
@@ -304,18 +304,7 @@ public class OrderChangeApiController extends CertifyApiController {
 	 * 	首先是草稿然后发起变成审核中,再在流程中走一遍当金额小于2000总裁通过标记为通过,大于2000总裁通过不改变状态,流转到董事长,董事长审核改变
 	 * 	状态为通过,通过状态下为财务退票,退票完成后改状态为上传附件,实际为营销员上传附件,营销员上传完后触发完成变更,状态才变成完成
 	 * 	状态 0草稿 1审核中 2通过 3驳回 4完成 5撤销 6上传附件
-	 * @param userName
-	 * @param processState 流程状态 0=营销员,1=营销经理,2=营销管理员,3=技术员,4=技术经理,5=技术总监,6=财务专员,7=财务总监,8=总裁,9=董事长
-	 * @param timeType
-	 * @param startTime
-	 * @param endTime
-	 * @param salesmanName
-	 * @param complete
-	 * @param orderNo
-	 * @param contractNo
-	 * @param type
-	 * @param pageSize
-	 * @param pageNo
+	 * @param processState 流程状态 0=营销员,1=营销经理,2=营销管理员,3=技术员,4=技术经理,5=技术总监,6=财务专员,7=财务总监,8运营保障 9=总裁,10=董事长
 	 * @return
 	 */
 	@RequestMapping(value ="/orderChangeList",method = RequestMethod.GET)

+ 63 - 52
src/main/java/com/goafanti/order/controller/OrderProjectApiController.java

@@ -13,6 +13,7 @@ import com.goafanti.common.utils.excel.NewExcelUtil;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.order.bo.*;
+import com.goafanti.order.enums.ApprovalTypeEnums;
 import com.goafanti.order.service.OrderNewService;
 import com.goafanti.order.service.OrderProjectService;
 import org.springframework.beans.BeanUtils;
@@ -27,10 +28,10 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
-import java.io.IOException;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 @RestController
@@ -89,9 +90,9 @@ public class OrderProjectApiController extends CertifyApiController {
 	 */
 	@RequestMapping(value="/selectTaskList" ,method = RequestMethod.GET)
 	public Result selectTaskList(String name,String orderNo,String taskId,Integer taskStatus,String adminName,Integer specially  ,String depId,String thchId
-			,Integer pageNo,Integer pageSize){
+			,String type,Integer pageNo,Integer pageSize){
 		Result res=new Result();
-		res.setData(orderProjectService.selectTaskList( name, orderNo, taskId, taskStatus, adminName,specially ,  depId,thchId  ,pageNo, pageSize));
+		res.setData(orderProjectService.selectTaskList( name, orderNo, taskId, taskStatus, adminName,specially ,  depId,thchId ,type ,pageNo, pageSize));
 		return res;
 	}
 
@@ -103,10 +104,10 @@ public class OrderProjectApiController extends CertifyApiController {
 	@RequestMapping(value="/managerSelect" ,method = RequestMethod.GET)
 	public Result managerSelect(String name,String orderNo,String contractNo,String cid,String projectType,String thchId,
 			String depId,String techDepId  ,Integer declarationBatch  ,String commodityPrice,String startTime,
-			String endTime,Integer pageNo,Integer pageSize){
+			String endTime,String type,Integer pageNo,Integer pageSize){
 		Result res=new Result();
 		res.setData(orderProjectService.managerSelect( name, orderNo, contractNo, cid, projectType,thchId,
-				 depId, techDepId  , declarationBatch  ,commodityPrice,startTime, endTime , pageNo, pageSize));
+				 depId, techDepId  , declarationBatch  ,commodityPrice,startTime, endTime,type , pageNo, pageSize));
 		return res;
 	}
 
@@ -117,10 +118,22 @@ public class OrderProjectApiController extends CertifyApiController {
 	@RequestMapping(value="/exportManagerSelect" ,method = RequestMethod.GET)
 	public Result exportManagerSelect(String name,String orderNo,String contractNo,String cid,String projectType,String thchId,
 			String depId,String techDepId  ,Integer declarationBatch  ,String commodityPrice,String startTime,
-			String endTime,Integer pageNo,Integer pageSize){
-		@SuppressWarnings("unchecked")
+			String endTime,String type,Integer pageNo,Integer pageSize){
+
 		List<managerListBo> list=(List<managerListBo>) orderProjectService.managerSelect( name, orderNo, contractNo,
-				cid, projectType,thchId,depId, techDepId  , declarationBatch  ,commodityPrice,startTime, endTime , pageNo, pageSize).getList();
+				cid, projectType,thchId,depId, techDepId  , declarationBatch  ,commodityPrice,startTime, endTime ,type, pageNo, pageSize).getList();
+		for (managerListBo e : list) {
+			if (StringUtils.isNotEmpty(e.getType())){
+				String[] split = e.getType().split(",");
+				StringBuilder stringBuilder = new StringBuilder();
+				Arrays.stream(split).forEach(
+						s->{
+							stringBuilder.append(ApprovalTypeEnums.getDesc(s)).append(",");
+						}
+				);
+				e.setType(stringBuilder.substring(0,stringBuilder.length()-1));
+			}
+		}
 		NewExcelUtil<managerListBo> excel=new NewExcelUtil<>(managerListBo.class);
 		return excel.exportExcel(list, "企业项目查询列表", uploadPath);
 	}
@@ -345,12 +358,10 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 我的工时列表导出xls
-	 * @throws IOException
 	 */
 	@RequestMapping(value = "/exportMyTaskList", method = RequestMethod.GET)
 	public Result exportMyTaskList(inuptTaskHoursListBo ib, Integer pageNo, Integer pageSize) {
 		if(pageSize==null)pageSize=999999;
-		@SuppressWarnings("unchecked")
 		List<TOrderTaskListBo> list=(List<TOrderTaskListBo>) orderProjectService.taskHoursList(ib,  pageNo, pageSize).getList();
 		NewExcelUtil<TOrderTaskListBo> excel=new NewExcelUtil<>(TOrderTaskListBo.class);
 		return excel.exportExcel(list, "工时信息记录表",uploadPath);
@@ -358,22 +369,43 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 我的任务列表导出xls
-	 * @throws IOException
 	 */
 	@RequestMapping(value = "/exporProjectList", method = RequestMethod.GET)
 	public Result exporProjectList(HttpServletResponse response,inuptTaskListBo ib) {
 		if(ib.getPageSize()==null)ib.setPageSize(99999);
 		String str="项目任务列表";
-		@SuppressWarnings("unchecked")
 		List<TOrderTaskListBo> list=(List<TOrderTaskListBo>) orderProjectService.orderTaskList(ib).getList();
+		list.forEach(e->{
+				if(e.getType()!=null) {
+					String[] split = e.getType().split(",");
+					StringBuilder stringBuilder = new StringBuilder();
+					int index = 1;
+					for (int i = 1; i < 9; i++) {
+						for (String s : split) {
+							if (index ==Integer.parseInt(s)){
+								if (ApprovalTypeEnums.QT.getCode().equals(Integer.parseInt(s))){
+									stringBuilder.append(ApprovalTypeEnums.getDesc(s))
+											.append("(").append(e.getTypeExplain()).append(")")
+											.append(",");
+								}else {
+									stringBuilder.append(ApprovalTypeEnums.getDesc(s)).append(",");
+								}
+							}
+						}
+						index++;
+						if (index==8)index=0;
+					}
+					if(stringBuilder.length()>0)e.setType(stringBuilder.substring(0,stringBuilder.length()-1));
+				}
+			}
+
+		);
 		NewExcelUtil<TOrderTaskListBo>excel=new NewExcelUtil<>(TOrderTaskListBo.class);
 		return excel.exportExcel(list, str, response);
 		}
 
 	/**
 	 * 	项目日志 (转交日志)
-	 * @param tid
-	 * @return
 	 */
 	@RequestMapping(value = "/taskAttributionLog",method = RequestMethod.GET)
 	public Result taskAttributionLog(Integer tid) {
@@ -387,7 +419,6 @@ public class OrderProjectApiController extends CertifyApiController {
 	}
 	/**
 	 * 	客户项目列表
-	 * @return
 	 */
 	@RequestMapping(value = "/selectUidByproject",method = RequestMethod.GET)
 	public Result selectUidByproject(String uid) {
@@ -402,8 +433,6 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 	发起项目核对
-	 * @param tid
-	 * @return
 	 */
 	@RequestMapping(value = "/addProjectCheck",method = RequestMethod.POST)
 	public Result addProjectCheck(Integer tid) {
@@ -418,8 +447,6 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 	核对日志
-	 * @param tid
-	 * @return
 	 */
 	@RequestMapping(value = "/projectCheckLog",method = RequestMethod.GET)
 	public Result projectCheckLog(Integer tid) {
@@ -434,7 +461,6 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 	获取专利分类
-	 * @return
 	 */
 	@RequestMapping(value = "/getPatentType",method = RequestMethod.GET)
 	public Result getPatentType() {
@@ -445,7 +471,6 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 	核对列表
-	 * @return
 	 */
 	@RequestMapping(value = "/selectProjectCheck",method = RequestMethod.GET)
 	public Result selectProjectCheck(InputProjectCheck in) {
@@ -471,9 +496,9 @@ public class OrderProjectApiController extends CertifyApiController {
 	public Result highNewRetrialStatisticsExport(String depId,String startDate,String endDate,String depName) {
 		List<OutHighNewRetrialStatistics>  list=orderProjectService.highNewRetrialStatistics(depId,startDate,endDate);
 		NewExcelUtil<OutHighNewRetrialStatistics> newExcelUtil=new NewExcelUtil<>(OutHighNewRetrialStatistics.class);
-		StringBuffer str=new StringBuffer("搜索条件=》");
-		if (depName!=null)str=str.append("部门:").append(depName).append(",");
-		if (startDate!=null&&endDate!=null)str=str.append("时间:").append(startDate).append("~").append(endDate).append(",");
+		StringBuilder str=new StringBuilder("搜索条件=》");
+		if (depName!=null)str.append("部门:").append(depName).append(",");
+		if (startDate!=null&&endDate!=null)str.append("时间:").append(startDate).append("~").append(endDate).append(",");
 		return newExcelUtil.exportExcel(list,"高新复审统计",uploadPath,str.substring(0,str.toString().length()-1));
 	}
 
@@ -492,23 +517,21 @@ public class OrderProjectApiController extends CertifyApiController {
 										   String aName,Integer sort) {
 		List<OutHighNewRetrialList>  list=orderProjectService.highNewRetrialList(province,depId,aid,sort,startDate,endDate);
 		NewExcelUtil<OutHighNewRetrialList> newExcelUtil=new NewExcelUtil<>(OutHighNewRetrialList.class);
-		StringBuffer str=new StringBuffer("搜索条件=》");
-		if (provinceName!=null)str=str.append("省份:").append(provinceName).append(",");
-		if (depName!=null)str=str.append("部门:").append(depName).append(",");
-		if (aName!=null)str=str.append("跟进人:").append(aName).append(",");
-		if (startDate!=null&&endDate!=null)str=str.append("时间:").append(startDate).append("~").append(endDate).append(",");
+		StringBuilder str=new StringBuilder("搜索条件=》");
+		if (provinceName!=null)str.append("省份:").append(provinceName).append(",");
+		if (depName!=null)str.append("部门:").append(depName).append(",");
+		if (aName!=null)str.append("跟进人:").append(aName).append(",");
+		if (startDate!=null&&endDate!=null)str.append("时间:").append(startDate).append("~").append(endDate).append(",");
 		if(sort!=null){
-			str=str.append("排序:");
-			if(sort==0)str=str.append("按签通过高新排序");
-			else if(sort==1)str=str.append("按未通过高新排序");
+			str.append("排序:");
+			if(sort==0)str.append("按签通过高新排序");
+			else if(sort==1)str.append("按未通过高新排序");
 		}
 		return newExcelUtil.exportExcel(list,"高新复审详情",uploadPath,str.substring(0,str.toString().length()-1));
 	}
 
 	/**
 	 * 新增会员项目
-	 * @param t
-	 * @return
 	 */
 	@RequestMapping(value = "/addMemberProject" ,method = RequestMethod.POST)
 	public Result addMemberProject(InputAddTask t){
@@ -525,8 +548,6 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 会员项目审核
-	 * @param in
-	 * @return
 	 */
 	@RequestMapping(value = "/examineMemberProject" ,method = RequestMethod.POST)
 	public Result examineMemberProject(InputMenber in){
@@ -541,8 +562,6 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 会员项目修改
-	 * @param t
-	 * @return
 	 */
 	@RequestMapping(value = "/updateMemberProject" ,method = RequestMethod.POST)
 	public Result updateMemberProject(InputAddTask t){
@@ -557,8 +576,6 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 会员项目列表
-	 * @param in
-	 * @return
 	 */
 	@RequestMapping(value = "/memberList" ,method = RequestMethod.GET)
 	public Result memberList(InputMemberList in){
@@ -568,7 +585,6 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 会员项目列表
-	 * @return
 	 */
 	@RequestMapping(value = "/memberLog" ,method = RequestMethod.GET)
 	public Result memberLog(Integer id){
@@ -579,8 +595,6 @@ public class OrderProjectApiController extends CertifyApiController {
 
 	/**
 	 * 会员项目列表
-	 * @param in
-	 * @return
 	 */
 	@RequestMapping(value = "/memberList/export" ,method = RequestMethod.GET)
 	public Result memberListExport(InputMemberList in){
@@ -601,7 +615,6 @@ public class OrderProjectApiController extends CertifyApiController {
 	/**
 	 * 新增会员子项目(发起新增、无需审核)
 	 *
-	 * @return
 	 */
 	@RequestMapping(value = "/addMemberFirstSonProject" ,method = RequestMethod.POST)
 	public Result addMemberFirstSonProject(Integer tid,String serviceYear,String taskComment){
@@ -620,7 +633,6 @@ public class OrderProjectApiController extends CertifyApiController {
 	/**
 	 * 新增会员子项目(审核)
 	 *
-	 * @return
 	 */
 	@RequestMapping(value = "/addMemberSonProject" ,method = RequestMethod.POST)
 	public Result addMemberSonProject(Integer tid,String serviceYear,String taskComment,Integer memberType,String pictureUrl){
@@ -636,7 +648,6 @@ public class OrderProjectApiController extends CertifyApiController {
 	/**
 	 * 删除会员子项目
 	 *
-	 * @return
 	 */
 	@RequestMapping(value = "/deleteMemberSonProject" ,method = RequestMethod.POST)
 	public Result deleteMemberSonProject(Integer id){
@@ -744,18 +755,18 @@ public class OrderProjectApiController extends CertifyApiController {
 			for (OutselectProjectSotp use : list) {
 				OutselectProjectSotpBo o = new OutselectProjectSotpBo();
 				BeanUtils.copyProperties(use,o);
-				StringBuffer str =new StringBuffer();
+				StringBuilder str =new StringBuilder();
 				if (o.getStopStatus()==0){
-					str=str.append("已发起");
+					str.append("已发起");
 				}else if (o.getStopStatus()==1){
-					str=str.append("已完成");
+					str.append("已完成");
 				}else if (o.getStopStatus()==2){
-					str=str.append("已拒绝");
+					str.append("已拒绝");
 				}
 				if (o.getStopType()==0){
-					str=str.append("暂停");
+					str.append("暂停");
 				}else if (o.getStopStatus()==1){
-					str=str.append("重启");
+					str.append("重启");
 				}
 				o.setStatusName(str.toString());
 				list2.add(o);

+ 7 - 1
src/main/java/com/goafanti/order/controller/StatisticsApiController.java

@@ -1,10 +1,11 @@
 package com.goafanti.order.controller;
 
 
-
 import com.goafanti.common.bo.Result;
+import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.controller.CertifyApiController;
 import com.goafanti.common.utils.excel.NewExcelUtil;
+import com.goafanti.core.shiro.token.TokenManager;
 import com.goafanti.order.bo.*;
 import com.goafanti.order.bo.outStatistics.OutOrderSalesSourceAmount;
 import com.goafanti.order.service.OrderStatisticsService;
@@ -54,6 +55,11 @@ public class StatisticsApiController extends CertifyApiController {
 	 */
 	@RequestMapping(value = "/exporTaskList", method = RequestMethod.GET)
 	public Result exporTaskList(InputProjectStatistics ib,HttpServletResponse response) {
+			Result res = res();
+			if (!TokenManager.hasRole(AFTConstants.SUPERADMIN)){
+				res.getError().add(buildError("权限不足"));
+				return res;
+			}
 			return projectStatisticsService.exporTaskList(ib,response);
 	}
 

+ 70 - 0
src/main/java/com/goafanti/order/enums/ApprovalTypeEnums.java

@@ -0,0 +1,70 @@
+package com.goafanti.order.enums;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 特批类型 0其他,1=无前期款,2=暂无合同款,3=含高风险条款,4=新产品首单,5=通过率低于80%,6=3万以下会员,7=认证首期5K以下
+ */
+public enum ApprovalTypeEnums {
+
+    QT(0,"其他"),
+    WQQK(1,"无前期款"),
+    ZWHTK(2,"暂无合同款"),
+    HGFXTK(3,"含高风险条款"),
+    XCPSD(4,"新产品首单"),
+    TGLDY(5,"通过率低于80%"),
+    HY3WYX(6,"3万以下会员"),
+    RZSQ5KYX(7,"认证首期5K以下");
+
+    private Integer code;
+    private String desc;
+
+    private ApprovalTypeEnums(Integer code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+    private static Map<Integer, ApprovalTypeEnums> status = new HashMap<Integer, ApprovalTypeEnums>();
+
+    static {
+        for (ApprovalTypeEnums value : ApprovalTypeEnums.values()) {
+            status.put(value.getCode(), value);
+        }
+    }
+    public static ApprovalTypeEnums getStatus(Integer code) {
+        if (containsType(code)) {
+            return status.get(code);
+        }
+        return QT;
+    }
+    public static String getDesc(Integer code) {
+        if (containsType(code)) {
+            return status.get(code).getDesc();
+        }
+        return QT.getDesc();
+    }
+
+    public static String getDesc(String code) {
+        return getDesc(Integer.valueOf(code));
+    }
+
+    public static boolean containsType(Integer code) {
+        return status.containsKey(code);
+    }
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+}

+ 4 - 3
src/main/java/com/goafanti/order/enums/OrderChangeProcess.java

@@ -18,9 +18,10 @@ public enum OrderChangeProcess {
 	JSZJ(5, "技术总监"),
 	CWZY(6, "财务专员"),
 	CWZJ(7, "财务总监 "),
-	TPSH(8, "特批审核"),//修改总裁为特殊审核
-	DSZ(9, "董事长"),
-	FZC(10, "副总裁"),//已经去掉副总裁
+	YYBZ(8, "运营保障"),//修改总裁为特殊审核
+	TPSH(9, "特批审核"),//修改总裁为特殊审核
+	DSZ(10, "董事长"),
+	FZC(11, "副总裁"),//已经去掉副总裁
 	INVALID(99, "无效");
 
 	private OrderChangeProcess(Integer code, String desc) {

+ 6 - 6
src/main/java/com/goafanti/order/enums/ProcessStatus.java

@@ -18,17 +18,17 @@ public enum ProcessStatus {
 	/** 已派财务与技术总监**/
 	YPCW_JSZJ(3,"已派财务与技术总监"),
 	/**
-	 * 指定审核
+	 * 运营保障审核
 	 */
-//	CWZDSH(4,"财务指定审核人"),
+	YYBZSH(4,"运营保障审核"),
 	/** 已派特批审核 **/
-	YPTPSH(4,"已派特批审核"),
+	YPTPSH(5,"已派特批审核"),
 	/** 已派咨询师管理员 **/
-	YPZXSGLY(5,"已派咨询师管理员"),
+	YPZXSGLY(6,"已派咨询师管理员"),
 	/** 已部分派咨询师经理 **/
-	YBFPZXSGLY(6,"已部分分派咨询师经理"),
+	YBFPZXSGLY(7,"已部分分派咨询师经理"),
 	/** 已全部分派咨询师经理 **/
-	YQBFPZXSGLY(7,"已全部分派咨询师经理"),
+	YQBFPZXSGLY(8,"已全部分派咨询师经理"),
 
 
 	/** 无效 **/

+ 2 - 0
src/main/java/com/goafanti/order/service/OrderNewService.java

@@ -233,4 +233,6 @@ public interface OrderNewService {
 	void pushOrderPublicReleaseCount(String orderNo);
 
 	List<TOrderNew> selectGetAll();
+
+    Object addOperationGuaranteeAudit(String orderNo, Integer type, String reason);
 }

+ 2 - 2
src/main/java/com/goafanti/order/service/OrderProjectService.java

@@ -35,7 +35,7 @@ public interface OrderProjectService {
 
 
 	Pagination<TOrderTaskListBo>  selectTaskList(String name, String orderNo, String taskId, Integer taskStatus, String adminName,
-			Integer specially,String depId  ,String thchId, Integer pageNo, Integer pageSize);
+			Integer specially,String depId  ,String thchId,String typpe, Integer pageNo, Integer pageSize);
 
 	List<TaskLogBo> TaskLogList(Integer id);
 
@@ -63,7 +63,7 @@ public interface OrderProjectService {
 	int updateTaskProgress(TaskProgressBo t);
 
 	Pagination<managerListBo> managerSelect(String name, String orderNo, String contractNo, String cid, String projectType,String thchId, String depId,
-			String techDepId, Integer declarationBatch, String commodityPrice, String startTime, String endTime, Integer pageNo, Integer pageSize);
+			String techDepId, Integer declarationBatch, String commodityPrice, String startTime, String endTime, String type,Integer pageNo, Integer pageSize);
 
 	int updateProjectStatus(UpdateProjectStatusBo b);
 

+ 30 - 13
src/main/java/com/goafanti/order/service/impl/FundManagerOrderServiceImpl.java

@@ -148,6 +148,11 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 		}
 		if (order.getOutsource()==null)order.setOutsource(0);//默认非外包
 		params.put("o", order);
+		List<String> types=null;
+		if (order.getType()!=null){
+			types=Arrays.asList(order.getType().split(","));
+			params.put("type", types);
+		}
 		List<String> listDep=null;
 		if (order.getDeps()!=null){
 			params.put("deps", departmentService.parseArray(order.getDeps()));
@@ -165,7 +170,7 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 				else o.setMyExamine(0);
 			}
 		}
-		Map<String, Object> count = tOrderNewMapper.countTotalAndActually(order,fids,listDep);
+		Map<String, Object> count = tOrderNewMapper.countTotalAndActually(order,fids,listDep,types);
 		result.put("count", count);
 		return result;
 	}
@@ -520,6 +525,7 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 //				order.setProcessStatus(ProcessStatus.CWZDSH.getCode());
 //				pushGeneralSendNoticeAndEmail(aids, NoticeStatus.ORDER_YES.getCode(),order, TokenManager.getAdminId(), use.getApproval());
 //			}else {
+
 				pushNoticeAndEmail(t, use);
 
 //			}
@@ -540,15 +546,21 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 
 
 
+
 	private void pushNoticeAndEmail(TOrderNew t, TOrderNew new1) {
 		List<String> aids = new ArrayList<>();
 		StringBuffer str= new StringBuffer();
 		boolean flag= false;
 		TOrderNewBo order = tOrderNewMapper.getSaleIdByOno(t.getOrderNo());
+
+
 		//如果订单是特批
 		if (new1.getApproval()==ApprovalNewState.TPDSH.getCode()|| new1.getApproval()==ApprovalNewState.TPBH.getCode()) {
-			//未设置跳过
-			if (order.getApprovalStatus()==0){
+			if (StringUtils.isNotEmpty(order.getOperationGuaranteeId())){
+				t.setProcessStatus(ProcessStatus.YYBZSH.getCode());
+				str.append(order.getOperationGuaranteeName()).append(",");
+				aids.add(order.getOperationGuaranteeId());
+			} else if (order.getApprovalStatus()==0){
 				t.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
 				t.setApproval(ApprovalNewState.TPTG.getCode());
 				flag=true;
@@ -558,15 +570,21 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 				str.append(order.getApprovalName()).append(",");
 			}
 		}else if (new1.getApproval()==ApprovalNewState.DSZDSH.getCode()|| new1.getApproval()==ApprovalNewState.DSZBH.getCode()) {
-			t.setProcessStatus(ProcessStatus.YPTPSH.getCode());
-			List<String> types=new ArrayList<>();
-			//董事长加助理
-			types.add(AFTConstants.APPROVAL_DECISION);
-			types.add(AFTConstants.APPROVAL_DECISION_ASSISTANT);
-			for (Admin admin : adminMapper.getAdminRoleTypesList(types)) {
-				aids.add(admin.getId());
-                str.append(admin.getName()).append(",");
-            }
+
+			if (order.getOperationGuaranteeId()!=null){
+				t.setProcessStatus(ProcessStatus.YYBZSH.getCode());
+				str.append(order.getApprovalName()).append(",");
+			}else {
+				t.setProcessStatus(ProcessStatus.YPTPSH.getCode());
+				List<String> types=new ArrayList<>();
+				//董事长加助理
+				types.add(AFTConstants.APPROVAL_DECISION);
+				types.add(AFTConstants.APPROVAL_DECISION_ASSISTANT);
+				for (Admin admin : adminMapper.getAdminRoleTypesList(types)) {
+					aids.add(admin.getId());
+					str.append(admin.getName()).append(",");
+				}
+			}
 		}else  {
 			t.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
 		}
@@ -590,7 +608,6 @@ public class FundManagerOrderServiceImpl extends BaseMybatisDao<TOrderNewMapper>
 	}
 
 	private void addTorderLog(TOrderNew t) {
-		boolean flag=judgeOrderExamine(t.getOrderNo());
 		TOrderLog tl=new TOrderLog();
 		tl.setAid(AFTConstants.SUPERADMIN_ID);
 		tl.setProcess(OrderLogProcess.TP.getCode());

+ 76 - 45
src/main/java/com/goafanti/order/service/impl/OrderChangeServiceImpl.java

@@ -275,20 +275,24 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			//变更类型 0退单退款 1项目及金额变更 2仅项目变更 3仅金额变更 4重报 5赠送 6退单不退款 7仅变更合同
 			if(nb.getType() !=null){
 				if(Objects.equals(nb.getType(), OrderChangeType.JBGGT.getCode())){
-					//仅合同图片修改:营销-营销总经理
+					//
 					if(Objects.equals(nb.getProcessState(), OrderChangeProcess.YXGLY.getCode())){
+						nb.setProcessState(OrderChangeProcess.YYBZ.getCode());
+					}else if(Objects.equals(nb.getProcessState(), OrderChangeProcess.YYBZ.getCode())){
 						completeChange(remarks, nb);
 						return 1;
 					}
 				} else {
-/*				 	 赠送:营销-经理-总经理审核-财务(已收款情况)-总裁(副总裁)
-				 	 重报:营销-经理-总经理审核-技术员-财务-财务总监-总裁(副总裁)
-					仅项目:营销-经理-总经理审核-技术员-技术总监-财务-财务总监-总裁(副总裁)
-				 项目&金额:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-总裁(副总裁)
-				  退单退款:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-总裁(副总裁)-董事长(副总裁大于2K,需董事长审核)-财务退票
-				 退单不退款:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-总裁(副总裁)-财务退票
-					仅金额:营销-经理-总经理审核-技术总监-财务-财务总监-总裁(副总裁)
-				框架协议审核流程: 营销员发起-营销经理审核-营销管理员审核-财务审核 */
+/* 赠送:营销-经理-总经理审核-财务(已收款情况)-运营保障-总裁
+   重报:营销-经理-总经理审核-技术员-财务-财务总监-运营保障-总裁
+   仅项目:营销-经理-总经理审核-技术员-技术总监-财务-财务总监-运营保障-总裁
+   项目&金额:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-运营保障-总裁
+   退单退款:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-运营保障-总裁-董事长(大于2K,需董事长审核)-财务退票
+   退单不退款:营销-经理-总经理审核-技术员-技术经理-技术总监-财务-财务总监-运营保障-总裁-财务退票
+   仅金额:营销-经理-总经理审核-技术总监-财务-财务总监-运营保障-总裁
+   框架协议审核流程: 营销员发起-营销经理审核-营销管理员审核-财务审核-运营保障-完成
+   仅合同图片修改:营销-营销总经理-运营保障-完成
+*/
 					if (Objects.equals(nb.getProcessState(), OrderChangeProcess.YXJL.getCode())){
 						nb.setProcessState(OrderChangeProcess.YXGLY.getCode());
 					}else if (Objects.equals(nb.getProcessState(), OrderChangeProcess.YXGLY.getCode())){
@@ -302,6 +306,9 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 							nb.setProcessState(OrderChangeProcess.JSZJ.getCode());
 						}else if (Objects.equals(nb.getType(), OrderChangeType.ZS.getCode()) || Objects.equals(nb.getType(), OrderChangeType.KJXY.getCode())){
 							nb.setProcessState(OrderChangeProcess.CWZY.getCode());
+						}else if (Objects.equals(nb.getType(), OrderChangeType.JBGGT.getCode())){
+							//新增运营保障审核
+							nb.setProcessState(OrderChangeProcess.YYBZ.getCode());
 						}
 					}else if (Objects.equals(nb.getProcessState(), OrderChangeProcess.JSY.getCode())){
 						orderExamineMapper.updateByOrderNoAndAid(orderNo,TokenManager.getAdminId(),0);
@@ -315,18 +322,49 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 						nb.setProcessState(OrderChangeProcess.CWZY.getCode());
 					}else if (Objects.equals(nb.getProcessState(), OrderChangeProcess.CWZY.getCode())){
 						if (Objects.equals(nb.getType(), OrderChangeType.ZS.getCode())){
-							boolean flag=pushApproval(nb, dep,remarks);
-							if (flag) return 1;
+							//新增运营保障审核
+							if (dep.getOperationGuaranteeId()==null){
+								date.setTime(date.getTime()+100);
+								addOrderChangeLog("无运营保障自动通过", 2, nb.getOrderNo(), nb.getId(),date);
+								boolean flag=pushApproval(nb, dep,remarks);
+								if (flag) return 1;
+							}else {
+								nb.setProcessState(OrderChangeProcess.YYBZ.getCode());
+							}
 						}else if (Objects.equals(nb.getType(), OrderChangeType.KJXY.getCode())){
-							completeChange(remarks, nb);
-							return 1;
+							//新增运营保障审核
+							if (dep.getOperationGuaranteeId()==null){
+								date.setTime(date.getTime()+100);
+								addOrderChangeLog("无运营保障自动通过", 2, nb.getOrderNo(), nb.getId(),date);
+								completeChange(remarks, nb);
+								return 1;
+							}else {
+								nb.setProcessState(OrderChangeProcess.YYBZ.getCode());
+							}
+							nb.setProcessState(OrderChangeProcess.YYBZ.getCode());
+
 						}else {
 							nb.setProcessState(OrderChangeProcess.CWZJ.getCode());
 						}
 					}else if (Objects.equals(nb.getProcessState(), OrderChangeProcess.CWZJ.getCode())){
-						boolean flag=pushApproval(nb, dep,remarks);
-						if (flag){
+						//新增运营保障审核
+						if (dep.getOperationGuaranteeId()==null){
+							date.setTime(date.getTime()+100);
+							addOrderChangeLog("无运营保障自动通过", 2, nb.getOrderNo(), nb.getId(),date);
+							boolean flag=pushApproval(nb, dep,remarks);
+							if (flag) return 1;
+						}else {
+							nb.setProcessState(OrderChangeProcess.YYBZ.getCode());
+						}
+					}else if (Objects.equals(nb.getProcessState(), OrderChangeProcess.YYBZ.getCode())){
+						if (Objects.equals(nb.getType(), OrderChangeType.KJXY.getCode())){
+							completeChange(remarks, nb);
 							return 1;
+						}else {
+							boolean flag=pushApproval(nb, dep,remarks);
+							if (flag){
+								return 1;
+							}
 						}
 					}else if(Objects.equals(nb.getProcessState(), OrderChangeProcess.TPSH.getCode())) {
 						if (Objects.equals(nb.getType(), OrderChangeType.TDTK.getCode()) || Objects.equals(nb.getType(), OrderChangeType.TDBTK.getCode())) {
@@ -516,46 +554,36 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		//获取接收者
 		//流程状态 0=营销员,1=营销经理,2=营销管理员,3=技术员,4=技术经理,5=技术总监,6=财务专员,7=财务总监,8=总裁,9=董事长
 		List<String> alist = new ArrayList<>();
-		//获取部门负责财务人员
-		switch (nb.getProcessState()) {
-		case 0:
+		if (nb.getProcessState().equals(OrderChangeProcess.YXY.getCode())){
 			alist.add(o.getSalesmanId());
-			break;
-		case 1:
+		} else if (nb.getProcessState().equals(OrderChangeProcess.YXJL.getCode())) {
 			Admin saleaman = adminMapper.selectByPrimaryKey(o.getSalesmanId());
 			alist.add(saleaman.getManagerId());
-			break;
-		case 2:
+		}else if (nb.getProcessState().equals(OrderChangeProcess.YXGLY.getCode())) {
 			alist.addAll(adminMapper.listNameByDepAndName(o.getOrderDep(), AFTConstants.SALESMAN_ADMIN));
-			break;
-		case 3:
-
+		}else if (nb.getProcessState().equals(OrderChangeProcess.JSY.getCode())) {
 			alist.addAll(addOrderExamine(o.getOrderNo(),0));
-			break;
-		case 4:
+		}else if (nb.getProcessState().equals(OrderChangeProcess.JSJL.getCode())) {
 			alist.addAll(addOrderExamine(o.getOrderNo(),1));
-			break;
-		case 5:
+		}else if (nb.getProcessState().equals(OrderChangeProcess.JSZJ.getCode())) {
 			for (Admin admin : adminMapper.getAdminRoleTypeList(AFTConstants.TECH_ADMIN)) {
 				alist.add(admin.getId());
 			}
-			break;
-		case 6:
+		}else if (nb.getProcessState().equals(OrderChangeProcess.CWZY.getCode())) {
 			alist.add(o.getFinanceId());
-			break;
-		case 7:
+		}else if (nb.getProcessState().equals(OrderChangeProcess.CWZJ.getCode())) {
 			for (Admin admin : adminMapper.getAdminRoleTypeList(AFTConstants.FINANCE_ADMIN)) {
 				alist.add(admin.getId());
 			}
-			break;
-		case 8:
+		}else if (nb.getProcessState().equals(OrderChangeProcess.YYBZ.getCode())) {
+			alist.add(o.getOperationGuaranteeId());
+		}else if (nb.getProcessState().equals(OrderChangeProcess.TPSH.getCode())) {
 			if(nb.getStatus()==2) {
 				alist.add(o.getFinanceId());
 			}else {
 				alist.add(o.getApprovalAid());
 			}
-			break;
-		case 9:
+		}else if (nb.getProcessState().equals(OrderChangeProcess.DSZ.getCode())) {
 			if(nb.getStatus()==2) {
 				alist.add(o.getFinanceId());
 			}else {
@@ -563,8 +591,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 					alist.add(admin.getId());
 				}
 			}
-			break;
-		case 10:
+		}else if (nb.getProcessState().equals(OrderChangeProcess.FZC.getCode())) {
 			if(nb.getStatus()==2) {
 				alist.add(o.getFinanceId());
 			}else {
@@ -572,7 +599,6 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 					alist.add(admin.getId());
 				}
 			}
-			break;
 		}
 		//发送站内信息与邮件
 		pushGeneralSendNoticeAndEmail(alist, type, o, TokenManager.getAdminId(),0);
@@ -762,7 +788,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 					noc.setProcessState(OrderChangeProcess.YXJL.getCode());
 				}else {
 					//增加营销经理的日志
-					date.setTime(date.getTime()+500);
+					date.setTime(date.getTime()+200);
 					addOrderChangeLog("未设置营销经理自动通过", 2, t.getOrderNo(), noc.getId(),date);
 					//营销经理不存在判定营销管理员
 					List<Admin> admins = adminMapper.listAdminBydepIdAndRoleType(tOrderNew.getOrderDep(), AFTConstants.SALESMAN_ADMIN);
@@ -774,7 +800,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 					}
 					//如果自己是审核人员则跳过
 					if (flag){
-						date.setTime(date.getTime()+500);
+						date.setTime(date.getTime()+200);
 						addOrderChangeLog("审核人重复自动通过", 2, t.getOrderNo(), noc.getId(),date);
 						noc.setProcessState(OrderChangeProcess.JSY.getCode());
 						if (t.getType()==OrderChangeType.CB.getCode()||
@@ -793,8 +819,8 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 					}else {
 						//不跳过就设置流程未营销管理员
 						noc.setProcessState(OrderChangeProcess.YXGLY.getCode());
+						t.setProcessState(OrderChangeProcess.YXGLY.getCode());
 					}
-
 				}
 			}else {
 				noc.setProcessState(OrderChangeProcess.YXGLY.getCode());
@@ -839,7 +865,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			if (str.length()>0)noc.setExamineName(str.substring(0,str.length()-1));
 		}else if (noc.getProcessState()== OrderChangeProcess.JSY.getCode()){
 			List<OrderExamineBo> os = orderExamineMapper.selectByOrderNo(noc.getOrderNo(), 0);
-			StringBuffer str=new StringBuffer();
+			StringBuilder str=new StringBuilder();
 			for (OrderExamineBo o : os) {
 				if (o.getStatus()==0){
 					if (!str.toString().contains(o.getName()))str.append(o.getName()).append(",");
@@ -877,7 +903,10 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			}
 			if (str.length()>0)noc.setExamineName(str.substring(0,str.length()-1));
 
-		}else if (Objects.equals(noc.getProcessState(), OrderChangeProcess.TPSH.getCode())
+		}else if (Objects.equals(noc.getProcessState(), OrderChangeProcess.YYBZ.getCode())){
+			TOrderNewBo ton = tOrderNewMapper.getSaleIdByOno(noc.getOrderNo());
+			noc.setExamineName(ton.getOperationGuaranteeName());
+		} else if (Objects.equals(noc.getProcessState(), OrderChangeProcess.TPSH.getCode())
 				|| Objects.equals(noc.getProcessState(), OrderChangeProcess.DSZ.getCode())
 				|| Objects.equals(noc.getProcessState(), OrderChangeProcess.FZC.getCode())){
 			if(noc.getStatus()==1){
@@ -1669,7 +1698,9 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 			if (processName.getApprovalStatus()==0){
 				processName.setApprovalName("未设置特批审核人员");
 			}
+
 		}
+		processName.setYybz(processName.getYybz()==null?"未设置营运保障审核":processName.getYybz());
 		return processName;
 	}
 

+ 174 - 39
src/main/java/com/goafanti/order/service/impl/OrderNewServiceImpl.java

@@ -52,6 +52,8 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
@@ -145,7 +147,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 	@Autowired
 	private TOrderPublicReleaseCountMapper tOrderPublicReleaseCountMapper;
 	@Autowired
-	private RestrictProjectMapper restrictProjectMapper;
+	private TOrderApprovalMapper tOrderApprovalMapper;
 
 
 	@Value(value = "${upload.path}")
@@ -517,6 +519,8 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		if (StringUtils.isBlank(t.getOrderDep())) {
 			t.setOrderDep(a.getDepartmentId());
 		}
+		//处理特批类型相关字段
+		pushApprovalType(t);
 		if (t.getKnowledgeServices()!=null||t.getAuditServices()!=null||t.getAddDeductionServices()!=null){
 			TOrderHighTech tighTech=new TOrderHighTech();
 			tighTech.setOrderNo(t.getOrderNo());
@@ -651,22 +655,103 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		return 1;
 	}
 
+	private void pushApprovalType(TOrderNewWithBLOBs t) {
+		if (StringUtils.isBlank(t.getType())|| Objects.equals(t.getApproval(), ApprovalNewState.FTP.getCode())){
+			tOrderApprovalMapper.deleteByOderNo(t.getOrderNo());
+		}else {
+			String[] split = t.getType().split(",");
+			List<TOrderApproval> tOrderApprovals = tOrderApprovalMapper.selectByOrderNo(t.getOrderNo());
+			//删除
+			int index = 0;
+			for (TOrderApproval e : tOrderApprovals) {
+				boolean flag=false;
+				for (String s : split) {
+					if (Integer.valueOf(s).equals(e.getType())){
+						flag=true;
+						break;
+					}
+				}
+				if(!flag){
+					tOrderApprovalMapper.deleteByPrimaryKey(e.getId());
+				}else if(e.getType()==0&&index==0){
+					index++;
+					if (t.getTypeExplain()!=null){
+						e.setTypeExplain(t.getTypeExplain());
+						tOrderApprovalMapper.updateByPrimaryKeySelective(e);
+					}
+				}
+
+			}
+			//新增
+			for (String s : split) {
+				boolean flag=false;
+				for (TOrderApproval e : tOrderApprovals) {
+					if (Integer.valueOf(s).equals(e.getType())){
+						flag=true;
+					}
+				}
+				if (!flag){
+					TOrderApproval newTOA=new TOrderApproval();
+					newTOA.setType(Integer.valueOf(s));
+					newTOA.setOrderNo(t.getOrderNo());
+					if(t.getTypeExplain()!=null&&newTOA.getType()==0){
+					newTOA.setTypeExplain(t.getTypeExplain());
+					}
+					tOrderApprovalMapper.insertSelective(newTOA);
+				}
+			}
+
+		}
+	}
 
 
+	/**
+	 * 处理订单公出&报销之间数据统计
+	 * @param orderNo
+	 */
 	public void pushOrderPublicReleaseCount(String orderNo) {
-			List<PublicRelease> list = publicReleaseMapper.selectByOrderNo(orderNo);
-			TOrderNewBo t = tOrderNewMapper.getOrderNewDetail(orderNo);
-			BigDecimal durationCount = BigDecimal.ZERO;
-			int count=0;
-			List<String> peopleList = new ArrayList<>();
+		//获取所有公出、订单与会员信息
+		List<PublicRelease> list = publicReleaseMapper.selectByOrderNo(orderNo);
+		TOrderNewBo t = tOrderNewMapper.getOrderNewDetail(orderNo);
+		List<TTaskMember> tTaskMembers = tTaskMemberMapper.selectByOrderNo(t.getOrderNo());
+		//公出时间统计
+		BigDecimal durationCount = BigDecimal.ZERO;
+		//公出次数
+		int count=0;
+		//年数
+		int yearSum=1;
+		//公出人数
+		List<String> peopleList = new ArrayList<>();
+		LocalDate startDate = LocalDate.now().withMonth(1).withDayOfMonth(1);
+		String sumYear= String.valueOf(startDate.getYear());
+		LocalDate endDate = startDate.withYear(startDate.getYear()+1);
+		//分成会员统计和非会员统计
+		if (!tTaskMembers.isEmpty()){
 			for (PublicRelease e : list) {
-				durationCount=durationCount.add(BigDecimal.valueOf(e.getDuration()));
-				if (!peopleList.contains(e.getAid())){
-					peopleList.add(e.getAid());
+				LocalDate date = e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+				if (date.isAfter(startDate)&&date.isBefore(endDate)){
+					durationCount=durationCount.add(BigDecimal.valueOf(e.getDuration()));
+					if (!peopleList.contains(e.getAid())){
+						peopleList.add(e.getAid());
+					}
+					count++;
 				}
-				count++;
 			}
-		TOrderPublicReleaseCount out = tOrderPublicReleaseCountMapper.selectByOrderNo(orderNo);
+			for (TTaskMember e : tTaskMembers) {
+				if(e.getYearSum()!=null&&e.getYearSum()>yearSum){
+					yearSum=e.getYearSum();
+				}
+			}
+		}else {
+			for (PublicRelease e : list) {
+					durationCount=durationCount.add(BigDecimal.valueOf(e.getDuration()));
+					if (!peopleList.contains(e.getAid())){
+						peopleList.add(e.getAid());
+					}
+					count++;
+			}
+		}
+		TOrderPublicReleaseCount out = tOrderPublicReleaseCountMapper.selectByOrderNo(orderNo,sumYear);
 			if (out==null){
 				out=new TOrderPublicReleaseCount();
 				out.setOrderNo(orderNo);
@@ -674,7 +759,8 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 				out.setActualDuration(durationCount.doubleValue());
 				out.setPeopleCount(peopleList.size());
 				out.setFrequency(count);
-				pushMaxDuration(t,out);
+				out.setSumYear(sumYear);
+				pushMaxDuration(t,out,yearSum);
 				tOrderPublicReleaseCountMapper.insertSelective(out);
 			}else {
 				out.setOrderNo(orderNo);
@@ -682,7 +768,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 				out.setActualDuration(durationCount.doubleValue());
 				out.setPeopleCount(peopleList.size());
 				out.setFrequency(count);
-				pushMaxDuration(t,out);
+				pushMaxDuration(t,out,yearSum);
 				tOrderPublicReleaseCountMapper.updateByPrimaryKeySelective(out);
 			}
 
@@ -694,16 +780,57 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		return tOrderNewMapper.selectgetAll();
 	}
 
-	private void pushMaxDuration(TOrderNewBo t,TOrderPublicReleaseCount out ) {
-		BigDecimal res=BigDecimal.ZERO;
-		//新增如果有会员年份,计算金额改为总金额除以年份
-		List<TTaskMember> tTaskMembers = tTaskMemberMapper.selectByOrderNo(t.getOrderNo());
-		int yearSum=1;
-		for (TTaskMember e : tTaskMembers) {
-			if(e.getYearSum()!=null&&e.getYearSum()>1){
-				yearSum=e.getYearSum();
-			}
+	@Override
+	public Object addOperationGuaranteeAudit(String orderNo, Integer type, String reason) {
+		TOrderNew t= new TOrderNew();
+		TOrderNew t2= checkDeleteSign(orderNo);
+		if (!Objects.equals(t2.getProcessStatus(), ProcessStatus.YYBZSH.getCode())){
+			throw new BusinessException("订单审核状态错误");
+		}
+		List<String> aids = new ArrayList<>();
+		StringBuffer str =new StringBuffer();
+		t.setOrderNo(orderNo);
+		TOrderLog tl=new TOrderLog();
+		tl.setAid(TokenManager.getAdminId());
+		tl.setOrderNo(orderNo);
+		tl.setProcess(OrderLogProcess.YYBZSHTG.getCode());
+		TOrderNewBo order = tOrderNewMapper.getSaleIdByOno(t2.getOrderNo());
+		Integer noticeType=0;
+		if (type==0){
+			t.setProcessStatus(ProcessStatus.YPYXY.getCode());
+			t.setOrderStatus(OrderNewState.YBH.getCode());
+			tl.setProcess(OrderLogProcess.YYBZSHBH.getCode());
+			aids.add(t.getSalesmanId());
+			noticeType= NoticeStatus.ORDER_NO.getCode();
+		} else if (type==1) {
+			t.setProcessStatus(ProcessStatus.YPTPSH.getCode());
+			tl.setProcess(OrderLogProcess.YYBZSHTG.getCode());
+			if (t2.getApproval().equals(ApprovalNewState.TPDSH.getCode())){
+				str.append(order.getApprovalName()).append(",");
+				aids.add(order.getApprovalAid());
+			}else if (t2.getApproval().equals(ApprovalNewState.DSZDSH.getCode())){
+				List<Admin> admins = adminMapper.selectAdminByRoleType(AFTConstants.APPROVAL_DECISION);
+				admins.forEach(e->{
+					aids.add(e.getId());
+					str.append(e.getName()).append(",");
+				});
+			}
+			t.setExamineName(str.substring(0,str.length()-1));
+			noticeType= NoticeStatus.ORDER_YES.getCode();
 		}
+		addOrderLog(tl,reason);
+		pushGeneralSendNoticeAndEmail(aids, noticeType,order, TokenManager.getAdminId(),t2.getApproval());
+		return tOrderNewMapper.updateByPrimaryKeySelective(t);
+	}
+
+	/**
+	 * 处理订单公出&报销最大公出
+	 * @param t
+	 * @param out
+	 * @param yearSum
+	 */
+	private void pushMaxDuration(TOrderNewBo t,TOrderPublicReleaseCount out ,int yearSum) {
+		BigDecimal res=BigDecimal.ZERO;
 		BigDecimal totalAmount=t.getTotalAmount();
 		if (yearSum>1){
 			totalAmount=totalAmount.divide(BigDecimal.valueOf(yearSum),2, RoundingMode.HALF_UP);
@@ -727,7 +854,6 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		}
 		out.setMaxDuration(res.doubleValue());
 		out.setStatus(status);
-
 	}
 
 
@@ -1012,7 +1138,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 	private Pagination<TOrderNewBo> addParams(InputOrderNewListBo in, Map<String, Object> params) {
 //		specially 0 个人 1 营销员管理 2 驳回 3 特批 4 咨询师管理 5部门订单查询 6客服查询 7统计签单订单 8客户订单列表 9 复审订单 10 营销经理
 		if (in.getSpecially()!=null&&(in.getSpecially()==0|| in.getSpecially()==1|| in.getSpecially()==2||
-				in.getSpecially()==4|| in.getSpecially()==5|| in.getSpecially()==7|| in.getSpecially()==10)) {
+				in.getSpecially()==4|| in.getSpecially()==5|| in.getSpecially()==7|| in.getSpecially()==10|| in.getSpecially()==11)) {
 			//0 个人 1 营销员管理 2 驳回 3 特批 4 咨询师管理 5部门订单查询
 			if (in.getSpecially()!=3&& in.getSpecially()!=4) {
 				if (in.getAid() ==null){
@@ -1075,7 +1201,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			params.put("amountStatus", in.getAmountStatus());
 		}
 		if (StringUtils.isNotBlank(in.getOrderNo())) {
-			params.put("orderNo", in.getOrderNo());
+			params.put("orderNo", in.getOrderNo().trim());
 		}
 		if (StringUtils.isNotBlank(in.getStarTime())) {
 			params.put("starTime", in.getStarTime());
@@ -1098,6 +1224,12 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		if(null != in.getTag()){
 			params.put("tag",in.getTag());
 		}
+		if(in.getType()!=null){
+			if (!in.getType().equals("0,1,2,3,4,5,6,7")){
+				String[] split = in.getType().split(",");
+				params.put("type", split);
+			}
+		}
 		params.put("outsource", in.getOutsource());
 		return null;
 	}
@@ -1995,19 +2127,21 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		}
 		//只有到技术总监是派单,其他都是审核
 		if (order.getProcessStatus()==null||(!order.getProcessStatus().equals(ProcessStatus.YPZXSGLY.getCode()))){
-			str=str.append("[审核]");
-		}else if (order.getProcessStatus().equals(ProcessStatus.YPZXSGLY.getCode())){
-			str=str.append("[派单]");
+			str.append("[审核]");
+		}else {
+			str.append("[派单]");
+		}
+		str.append(approvalType).append(noticeTypeName).append(":");
+		if (tid != null) {
+			str.append("项目编号[").append(tid).append("],");
 		}
-		str=str.append(approvalType).append(noticeTypeName).append(":");
-		if (tid != null) {str=str.append("项目编号[").append(tid).append("],");}
-		str=str.append("客户名称[") .append(order.getUserName()).append("],");
+		str.append("客户名称[") .append(order.getUserName()).append("],");
 		if(StringUtils.isNotBlank(order.getContractNo())) {
-			str=str.append("合同编号[").append(order.getContractNo()).append("],");
+			str.append("合同编号[").append(order.getContractNo()).append("],");
 		}
-		str=str.append("订单编号[").append(order.getOrderNo()).append("],").append("操作人:")
+		str.append("订单编号[").append(order.getOrderNo()).append("],").append("操作人:")
 				.append(a.getDepartmentName()).append("-").append(a.getName()).append("。");
-		String adminIds="";
+		StringBuilder adminIds= new StringBuilder();
 		List<Notice> nlist=new  ArrayList<>();
 		for (String string : alist) {
 			Notice n =new Notice();
@@ -2021,17 +2155,17 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 			Admin admin = adminMapper.selectAllByid(string);
 			//去除邮件重复的
 			if(admin!=null&&admin.getEmail()!=null&&SendEmailUtil.isEmail(admin.getEmail().trim())){
-				if (!adminIds.contains(admin.getEmail())){
-					adminIds+=admin.getEmail()+",";
+				if (!adminIds.toString().contains(admin.getEmail())){
+					adminIds.append(admin.getEmail()).append(",");
 				}
 			}
 		}
 		if(!nlist.isEmpty()) {
 			asyncUtils.addNoticeBatch(nlist);
 		}
-		if (!nlist.isEmpty()&&StringUtils.isNotBlank(adminIds)) {
-			adminIds=adminIds.substring(0, adminIds.length()-1);
-			EmailBo bo=new EmailBo(noticeTypeName,adminIds,str.toString());
+		if (!nlist.isEmpty()&&StringUtils.isNotBlank(adminIds.toString())) {
+			adminIds = new StringBuilder(adminIds.substring(0, adminIds.length() - 1));
+			EmailBo bo=new EmailBo(noticeTypeName, adminIds.toString(),str.toString());
 			asyncUtils.send(bo);
 		}
 	}
@@ -2330,6 +2464,7 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
 		if (names.getApprovalStatus()==0){
 			names.setApprovalName("未设置特批审核人员");
 		}
+		names.setYybz(names.getYybz()==null?"未设置运营保障审核":names.getYybz());
 		return names;
 	}
 

+ 41 - 5
src/main/java/com/goafanti/order/service/impl/OrderProjectServiceImpl.java

@@ -311,9 +311,13 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 	 */
 	private void pushUser(TOrderTask t, TOrderNew tn, Date date) {
 		if (userMapper.checkLock(tn.getBuyerId())<1) {
-			//签单改成刷新客户跟进时间
-			userLockReleaseMapper.updateByAidAndUid(tn.getBuyerId());
-			userMapper.updateShareType(tn.getBuyerId(),tn.getSalesmanId());
+			User user = userMapper.selectByPrimaryKey(tn.getBuyerId());
+			//新增如果不是渠道才转换时间和改成签单
+			if (user!=null&&user.getNewChannel()!=1){
+				//签单改成刷新客户跟进时间
+				userLockReleaseMapper.updateByAidAndUid(tn.getBuyerId());
+				userMapper.updateShareType(tn.getBuyerId(),tn.getSalesmanId());
+			}
 		}
 		//判定用户最后签单时间
 		pushSignTime(tn);
@@ -460,6 +464,10 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 		if (null != ib.getTaskStatus()) params.put("taskStatus", ib.getTaskStatus());
 		if (ib.getOutsourceStatus() !=null) params.put("outsourceStatus", ib.getOutsourceStatus());
 		if (ib.getCid() !=null) params.put("cid", ib.getCid());
+		if (ib.getType()!=null){
+			String[] split = ib.getType().split(",");
+			params.put("type", split);
+		}
 		List<String> fids=new ArrayList<>();
 		 if (TokenManager.hasRole(AFTConstants.TECH)||TokenManager.hasRole(AFTConstants.TECH_MANAGER)){
 			params.put("role", 0);
@@ -1021,7 +1029,7 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 	@SuppressWarnings("unchecked")
 	@Override
 	public Pagination<TOrderTaskListBo> selectTaskList(String name, String orderNo, String taskId, Integer taskStatus,
-			String adminName, Integer specially,String depId,String thchId  , Integer pageNo, Integer pageSize) {
+			String adminName, Integer specially,String depId,String thchId  ,String type  , Integer pageNo, Integer pageSize) {
 		Map<String, Object> params = new HashMap<String, Object>();
 		if(pageSize==null||pageSize<0)pageSize=10;
 		if(pageNo==null||pageNo<0)pageNo=1;
@@ -1033,6 +1041,9 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 		if (StringUtils.isNotBlank(thchId)) params.put("thchId", thchId);
 		if (StringUtils.isNotBlank(adminName)) params.put("adminName", adminName);
 		if (null != taskStatus) params.put("taskStatus", taskStatus);
+		if (StringUtils.isNotBlank(type)){
+			params.put("type", type.split(","));
+		}
 		Pagination<TOrderTaskListBo> p = (Pagination<TOrderTaskListBo>)findPage("selectTaskListByPage", "selectTaskListCount", params, pageNo, pageSize);
 		return p;
 	}
@@ -1182,7 +1193,7 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 	@Override
 	public Pagination<managerListBo> managerSelect(String name, String orderNo, String contractNo, String cid,
 			String projectType,String thchId, String depId, String techDepId, Integer declarationBatch, String commodityPrice,
-			String startTime,String endTime ,Integer pageNo, Integer pageSize) {
+			String startTime,String endTime ,String type,Integer pageNo, Integer pageSize) {
 		Map<String, Object> params = new HashMap<String, Object>();
 		if(pageSize==null||pageSize<0)pageSize=10;
 		if(pageNo==null||pageNo<0)pageNo=1;
@@ -1324,6 +1335,9 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 		if(in.getApproval()!=null) map.put("approval", in.getApproval());
 		if(in.getStatus()!=null) map.put("status", in.getStatus());
 		if(in.getShiroType()!=null) map.put("shiroType", in.getShiroType());
+		if(in.getType()!=null){
+			map.put("type", in.getType().split(","));
+		}
 		map.put("aid",TokenManager.getAdminId());
 //		if (TokenManager.hasRole(AFTConstants.VICE_CED)){
 //			map.put("approvalType",2);
@@ -1357,6 +1371,28 @@ public class OrderProjectServiceImpl extends BaseMybatisDao<TOrderTaskMapper> im
 						out.getDeleteSign()==2?"锁定":"未知");
 				out.setDeleteSignStr(str.toString());
 			}
+			if (out.getType()!=null){
+				String[] split = out.getType().split(",");
+				StringBuilder str=new StringBuilder();
+				int index = 1;
+				for (int i = 1; i < 9; i++) {
+					for (String s : split) {
+						if (index ==Integer.parseInt(s)){
+							if (ApprovalTypeEnums.QT.getCode().equals(Integer.parseInt(s))){
+								str.append(ApprovalTypeEnums.getDesc(s))
+										.append("(").append(out.getTypeExplain()).append(")")
+										.append(",");
+							}else {
+								str.append(ApprovalTypeEnums.getDesc(s)).append(",");
+							}
+						}
+					}
+					index++;
+					if (index==8)index=0;
+				}
+				out.setType(str.substring(0,str.length()-1));
+			}
+
 		}
 		NewExcelUtil<OutMemberList> excelUtil=new NewExcelUtil<>(OutMemberList.class);
 		return excelUtil.exportExcel(list,"会员审核列表",uploadPath);

+ 38 - 24
src/main/java/com/goafanti/order/service/impl/ProjectStatisticsServiceImpl.java

@@ -1,25 +1,22 @@
 package com.goafanti.order.service.impl;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.text.SimpleDateFormat;
-import java.util.*;
-
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
-
-import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.goafanti.admin.service.DepartmentService;
+import com.goafanti.common.bo.Error;
 import com.goafanti.common.bo.Result;
+import com.goafanti.common.dao.TOrderTaskMapper;
+import com.goafanti.common.error.BusinessException;
+import com.goafanti.common.utils.ExportExcelUtil;
 import com.goafanti.common.utils.excel.NewExcelUtil;
-import com.goafanti.order.bo.*;
+import com.goafanti.core.mybatis.BaseMybatisDao;
+import com.goafanti.core.mybatis.page.Pagination;
+import com.goafanti.order.bo.InputProjectStatistics;
+import com.goafanti.order.bo.InputProvincialStatistics;
+import com.goafanti.order.bo.OutProjectStatistics;
+import com.goafanti.order.bo.OutProvincialStatistics;
 import com.goafanti.order.bo.outStatistics.*;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
+import com.goafanti.order.enums.ApprovalTypeEnums;
+import com.goafanti.order.service.ProjectStatisticsService;
 import groovy.util.logging.Log4j;
 import org.apache.commons.collections4.map.HashedMap;
 import org.apache.commons.lang3.StringUtils;
@@ -33,14 +30,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
-import com.goafanti.common.bo.Error;
-import com.goafanti.common.dao.TOrderTaskMapper;
-import com.goafanti.common.error.BusinessException;
-import com.goafanti.common.utils.ExportExcelUtil;
-import com.goafanti.core.mybatis.BaseMybatisDao;
-import com.goafanti.core.mybatis.page.Pagination;
-import com.goafanti.order.enums.NewProjectStatus;
-import com.goafanti.order.service.ProjectStatisticsService;
+import javax.servlet.http.HttpServletResponse;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.*;
 
 @Service
 @Log4j
@@ -68,6 +63,10 @@ public class ProjectStatisticsServiceImpl extends BaseMybatisDao<TOrderTaskMappe
 		if(ps.getContractNo()!=null)params.put("contractNo", ps.getContractNo());
 		if(ps.getUserName()!=null)params.put("userName", ps.getUserName());
 		if (ps.getThchId()!=null)params.put("thchId", ps.getThchId());
+		if (ps.getType()!=null){
+			String[] split = ps.getType().split(",");
+			params.put("type", split);
+		}
 		if(ps.getDeclarationBatch()!=null)params.put("declarationBatch", ps.getDeclarationBatch());
 		if(ps.getProjectSituation()!=null)params.put("projectSituation", ps.getProjectSituation());
 		if(ps.getProjectAmount()!=null) {
@@ -107,8 +106,23 @@ public class ProjectStatisticsServiceImpl extends BaseMybatisDao<TOrderTaskMappe
 	public Result exporTaskList( InputProjectStatistics ib,HttpServletResponse response)  {
 			if(ib.getPageSize()==null)ib.setPageSize(9999999);
 			if(ib.getStatus()==null)ib.setStatus(0);
-			@SuppressWarnings("unchecked")
 			List<OutProjectStatistics> list=  (List<OutProjectStatistics>) selectTaskList(ib).getList();
+		for (OutProjectStatistics e : list) {
+			if (com.goafanti.common.utils.StringUtils.isNotEmpty(e.getType())){
+				String[] split = e.getType().split(",");
+				StringBuilder sb=new StringBuilder();
+				for (String s : split) {
+					if (ApprovalTypeEnums.QT.getCode().equals(Integer.valueOf(s))){
+						sb.append(ApprovalTypeEnums.getDesc(s))
+								.append("(").append(e.getTypeExplain()).append(")")
+								.append(",");
+					}else {
+						sb.append(ApprovalTypeEnums.getDesc(s)).append(",");
+					}
+				}
+				e.setType(sb.substring(0,sb.length()-1));
+			}
+		}
 			Result res =new Result();
 			if (ib.getStatus()==null||ib.getStatus()==0){
 				List<OutProjectStatisticsCommon> tl=new ArrayList<>();

+ 13 - 3
src/main/java/com/goafanti/order/service/impl/PushOrderService.java

@@ -47,9 +47,13 @@ public class PushOrderService {
             return  t.getContractPictureUrl();
         }else if (TokenManager.hasRole(AFTConstants.FINANCE)&&(t.getProcessStatus()== ProcessStatus.YPCW_JSZJ.getCode())){
             return  t.getContractPictureUrl();
+        }else if (TokenManager.hasRole(AFTConstants.OPERATION_GUARANTEE)&&(
+                t.getProcessStatus()== ProcessStatus.YYBZSH.getCode()
+        )){
+            return  t.getContractPictureUrl();
         }else if (TokenManager.hasRole(AFTConstants.TECH_ADMIN)&&(
                 t.getProcessStatus()== ProcessStatus.YPCW_JSZJ.getCode()||t.getProcessStatus()== ProcessStatus.YPZXSGLY.getCode()
-                )){
+        )){
             return  t.getContractPictureUrl();
         }else if (TokenManager.hasRole(AFTConstants.OUTSOURCE_AUDITOR)){
             return  t.getContractPictureUrl();
@@ -85,6 +89,7 @@ public class PushOrderService {
             flag=true;
         }else{
             //其他都是审核得时候可以看
+
             switch (processStatus) {
                 case 2:
                     if(TokenManager.hasRole(AFTConstants.SALESMAN_ADMIN)){
@@ -117,6 +122,11 @@ public class PushOrderService {
                     }
                     break;
                 case 8:
+                    if(TokenManager.hasRole(AFTConstants.OPERATION_GUARANTEE)){
+                        flag=true;
+                    }
+                    break;
+                case 9:
                     if(status==1){
                         Department department = tOrderNewMapper.selectDepByOrderNo(orderNo);
                         if (TokenManager.getAdminId().equals(department.getApprovalAid())){
@@ -127,14 +137,14 @@ public class PushOrderService {
                         flag=true;
                     }
                     break;
-                case 9:
+                case 10:
 
                     if((TokenManager.hasRole(AFTConstants.APPROVAL_DECISION)||(TokenManager.hasRole(AFTConstants.APPROVAL_DECISION_ASSISTANT))&&status!=2)||
                             (TokenManager.hasRole(AFTConstants.FINANCE)&&status==2)){
                         flag=true;
                     }
                     break;
-                case 10:
+                case 11:
                     if((TokenManager.hasRole(AFTConstants.VICE_CED))||(TokenManager.hasRole(AFTConstants.FINANCE)&&status==2)){
                         flag=true;
                     }

+ 12 - 0
src/main/java/com/goafanti/organization/bo/InputDep.java

@@ -58,6 +58,18 @@ public class InputDep {
      * 技术总监审核人
      */
     private String techAdminId;
+    /**
+     * 运营保障审核人
+     */
+    private String operationGuaranteeId;
+
+    public String getOperationGuaranteeId() {
+        return operationGuaranteeId;
+    }
+
+    public void setOperationGuaranteeId(String operationGuaranteeId) {
+        this.operationGuaranteeId = operationGuaranteeId;
+    }
 
     public String getTechAdminId() {
         return techAdminId;

+ 20 - 0
src/main/java/com/goafanti/organization/bo/OrganizationListOut.java

@@ -113,12 +113,32 @@ public class OrganizationListOut {
     private Integer cashierExamine;
     private String techAdminId;
     private String techAdminName;
+
+    private String operationGuaranteeId;
+    private String operationGuaranteeName;
+
     private List<ExpenseConfigDetails> expenseRetrialFinanceExamineList;
     private List<ExpenseConfigDetails> ceoExamineList;
     private List<ExpenseConfigDetails> cfoExamineList;
     private List<ExpenseConfigDetails> viceCeoExamineList;
     private List<ExpenseConfigDetails> cashierExamineList;
 
+    public String getOperationGuaranteeId() {
+        return operationGuaranteeId;
+    }
+
+    public void setOperationGuaranteeId(String operationGuaranteeId) {
+        this.operationGuaranteeId = operationGuaranteeId;
+    }
+
+    public String getOperationGuaranteeName() {
+        return operationGuaranteeName;
+    }
+
+    public void setOperationGuaranteeName(String operationGuaranteeName) {
+        this.operationGuaranteeName = operationGuaranteeName;
+    }
+
     public String getTechAdminId() {
         return techAdminId;
     }

+ 4 - 0
src/main/java/com/goafanti/organization/controller/AdminOrganizationController.java

@@ -117,6 +117,10 @@ public class AdminOrganizationController extends BaseApiController{
 			res.getError().add(buildError("特批审核开启必须设置特批人"));
 			return res;
 		}
+		if (StringUtils.isBlank(in.getFinanceId())){
+			res.getError().add(buildError("部门财务审核必须设置"));
+			return res;
+		}
 		int i=organizationService.updateOrganization(in);
 		return res.data(i);
 	}

+ 305 - 35
src/main/java/com/goafanti/organization/service/impl/OrganizationServiceImpl.java

@@ -1,17 +1,19 @@
 package com.goafanti.organization.service.impl;
 
 import com.goafanti.admin.bo.AdminListBo;
-import com.goafanti.common.dao.DepartmentMapper;
-import com.goafanti.common.dao.ExpenseConfigDetailsMapper;
-import com.goafanti.common.dao.TOrderMidMapper;
-import com.goafanti.common.dao.TOrderNewMapper;
-import com.goafanti.common.model.Department;
-import com.goafanti.common.model.ExpenseConfigDetails;
+import com.goafanti.common.constant.AFTConstants;
+import com.goafanti.common.dao.*;
+import com.goafanti.common.enums.OrderLogProcess;
+import com.goafanti.common.model.*;
 import com.goafanti.common.utils.AsyncUtils;
 import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.mybatis.BaseMybatisDao;
 import com.goafanti.core.mybatis.page.Pagination;
 import com.goafanti.core.shiro.token.TokenManager;
+import com.goafanti.order.bo.TOrderNewBo;
+import com.goafanti.order.enums.ApprovalNewState;
+import com.goafanti.order.enums.OrderChangeProcess;
+import com.goafanti.order.enums.ProcessStatus;
 import com.goafanti.organization.bo.DepOut;
 import com.goafanti.organization.bo.InputDep;
 import com.goafanti.organization.bo.OrganizationListOut;
@@ -35,6 +37,15 @@ public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> im
 	private TOrderNewMapper torderNewMapper;
 	@Autowired
 	private TOrderMidMapper torderMidMapper;
+	@Autowired
+	private TOrderExamineMapper torderExamineMapper;
+	@Autowired
+	private TOrderLogMapper tOrderLogMapper;
+	@Autowired
+	private AdminMapper	adminMapper;
+	@Autowired
+	private NewOrderChangeMapper newOrderChangeMapper;
+
 
 	@Autowired
 	private AsyncUtils asyncUtils;
@@ -228,49 +239,211 @@ public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> im
 		dep.setApproval(in.getApproval());
 		dep.setApprovalAid(in.getApprovalAid());
 		dep.setTechAdminId(in.getTechAdminId());
+		dep.setOperationGuaranteeId(in.getOperationGuaranteeId());
+		pushUpdateDep(in, useDep, dep);
+		return departmentMapper.updateByPrimaryKeySelective(dep);
+	}
+
+	/**
+	 * 根据传入参数处理各种情况,并且处理传入数据
+	 * @param in 输入部门参数
+	 * @param useDep 原部门参数
+	 * @param dep  修改部门擦拭
+	 */
+	private void pushUpdateDep(InputDep in, Department useDep, Department dep) {
+		List<String> orderS = new ArrayList();
+		//如果本来部分没有,新增财务
+		if(StringUtils.isBlank(useDep.getFinanceId())&&StringUtils.isNotBlank(in.getFinanceId())){
+			addExamine(useDep, in.getFinanceId(),orderS);
+		}
+		if(StringUtils.isBlank(useDep.getRetrialFinanceId())&&StringUtils.isNotBlank(in.getRetrialFinanceId())){
+			addExamine(useDep, in.getExpenseFinanceId(),orderS);
+		}
+		if(StringUtils.isBlank(useDep.getTechAdminId())&&StringUtils.isNotBlank(in.getTechAdminId())){
+			addExamine(useDep, in.getTechAdminId(),orderS);
+		}
+		if(!orderS.isEmpty()){
+			torderNewMapper.updateOrderDepFinanceExamineName(orderS,ProcessStatus.YPCW_JSZJ.getCode());
+		}
+
+		if(StringUtils.isBlank(useDep.getOperationGuaranteeId())&&StringUtils.isNotBlank(in.getOperationGuaranteeId())){
+			List<String> strings = torderNewMapper.selectByDepAndProcess(useDep.getId(), ProcessStatus.YYBZSH.getCode());
+			if(!strings.isEmpty()){
+				torderNewMapper.updateOrderDepFinanceExamineName(strings, ProcessStatus.YYBZSH.getCode());
+			}
+		}
 		//财务与复审切换的时候要切换所有未审核的财务
 		boolean updateFinance=false;
 		boolean updateRetrialFinance=false;
-		if(StringUtils.isNotBlank(in.getFinanceId())&&!in.getFinanceId().equals(useDep.getFinanceId())){
-			dep.setFinanceId(in.getFinanceId());
-			//处理订单
-			departmentMapper.updateOrderDepFinanceNotExamine(in.getFinanceId(),useDep.getFinanceId());
-			List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getFinanceId());
-			if (!list.isEmpty()){
-				torderNewMapper.updateOrderDepFinanceExamineName(list);
+		//获取需要重新刷新的财务
+		List<String> aids =new ArrayList<>();
+		if(!in.getFinanceId().equals(useDep.getFinanceId())){
+				dep.setFinanceId(in.getFinanceId());
+				//审核人切换
+				departmentMapper.updateOrderDepFinanceNotExamine(in.getFinanceId(), useDep.getFinanceId(), useDep.getId());
+				//查询切换后的订单刷新审核人
+				List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getFinanceId(), useDep.getId());
+				if (!list.isEmpty()){
+					torderNewMapper.updateOrderDepFinanceExamineName(list,ProcessStatus.YPCW_JSZJ.getCode());
+				}
+				updateFinance=true;
+		}
+		//如果技术总监、运营保障审核、财务复审为空则修改为null
+		if (StringUtils.isBlank(in.getTechAdminId())||StringUtils.isBlank(in.getOperationGuaranteeId())
+				||StringUtils.isBlank(in.getRetrialFinanceId())){
+			if(StringUtils.isBlank(in.getTechAdminId())){
+				in.setTechAdminId(null);
+				dep.setTechAdminId(null);
+			}
+			if(StringUtils.isBlank(in.getOperationGuaranteeId())){
+				in.setOperationGuaranteeId(null);
+				dep.setOperationGuaranteeId(null);
+			}
+			if(StringUtils.isBlank(in.getRetrialFinanceId())){
+				in.setRetrialFinanceId(null);
+				dep.setRetrialFinanceId(null);
+			}
+			departmentMapper.updateNull(in);
+		}
+		//处理去掉技术总监
+		if (in.getTechAdminId()==null||!in.getTechAdminId().equals(useDep.getTechAdminId())){
+			if(StringUtils.isBlank(in.getTechAdminId())){
+				//先将旧的查出来
+				List<String> list = torderNewMapper.selectByFinanceNotExamine(useDep.getTechAdminId(),useDep.getId());
+				//再删除旧单需要审核的
+				torderExamineMapper.deleteExamineFinance(useDep.getId(), useDep.getTechAdminId());
+				if (!list.isEmpty()){
+					//先把药推送到下个流程的查出来
+					for (String s : list) {
+						pushCW_JSZJ_Examine(in, s, aids,  0);
+					}
+					torderNewMapper.updateOrderDepFinanceExamineName(list,ProcessStatus.YPCW_JSZJ.getCode());
+				}
+			}else{
+				//审核人切换
+				departmentMapper.updateOrderDepFinanceNotExamine(in.getTechAdminId(), useDep.getTechAdminId(), useDep.getId());
+				//查询切换后的订单刷新审核人
+				List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getTechAdminId(), useDep.getId());
+				if (!list.isEmpty()){
+					torderNewMapper.updateOrderDepFinanceExamineName(list,ProcessStatus.YPCW_JSZJ.getCode());
+				}
 			}
-
-			updateFinance=true;
 		}
-		if (StringUtils.isNotBlank(in.getRetrialFinanceId())&&
-				!in.getRetrialFinanceId().equals(useDep.getRetrialFinanceId())){
-			dep.setRetrialFinanceId(in.getRetrialFinanceId());
-			departmentMapper.updateOrderDepFinanceNotExamine(in.getRetrialFinanceId(),useDep.getRetrialFinanceId());
-			List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getRetrialFinanceId());
-			if (!list.isEmpty()){
-				torderNewMapper.updateOrderDepFinanceExamineName(list);
+		if (!Objects.equals(in.getRetrialFinanceId(),useDep.getRetrialFinanceId())){
+			if(StringUtils.isBlank(in.getRetrialFinanceId())) {
+				//先将旧的查出来
+				List<String> list = torderNewMapper.selectByFinanceNotExamine(useDep.getRetrialFinanceId(), useDep.getId());
+				//再删除旧单需要审核的
+				torderExamineMapper.deleteExamineFinance(useDep.getId(), useDep.getRetrialFinanceId());
+				if (!list.isEmpty()) {
+					//先把药推送到下个流程的查出来
+					for (String s : list) {
+						pushCW_JSZJ_Examine(in, s, aids,  1);
+					}
+					torderNewMapper.updateOrderDepFinanceExamineName(list,ProcessStatus.YPCW_JSZJ.getCode());
+				}
+			}else {
+				dep.setRetrialFinanceId(in.getRetrialFinanceId());
+				departmentMapper.updateOrderDepFinanceNotExamine(in.getRetrialFinanceId(), useDep.getRetrialFinanceId(), useDep.getId());
+				List<String> list = torderNewMapper.selectByFinanceNotExamine(in.getRetrialFinanceId(), useDep.getId());
+				if (!list.isEmpty()){
+					torderNewMapper.updateOrderDepFinanceExamineName(list,ProcessStatus.YPCW_JSZJ.getCode());
+				}
 			}
 			updateRetrialFinance=true;
 		}
+		if (in.getOperationGuaranteeId()==null&&StringUtils.isNotBlank(useDep.getOperationGuaranteeId())){
+			List<String> strings = torderNewMapper.selectByDepAndProcess(useDep.getId(), ProcessStatus.YYBZSH.getCode());
+			for (String s : strings) {
+				addOrderLog(s,OrderLogProcess.YYBZSHTG.getCode(),"运营保障审核人未设置,系统自动通过");
+				TOrderNew tOrderNew = torderNewMapper.selectByPrimaryKey(s);
+				TOrderNewBo order = torderNewMapper.getSaleIdByOno(s);
+				StringBuilder str = new StringBuilder();
+				TOrderNew newOrder = new TOrderNew();
+				newOrder.setOrderNo(s);
+				if (order.getApprovalStatus() == 0) {
+					addOrderLog(s,OrderLogProcess.TP.getCode(),"部门特批审核未设置,系统自动通过");
+					newOrder.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
+					newOrder.setApproval(ApprovalNewState.TPTG.getCode());
+					pushJSZJidAndName(aids, str);
+				} else {
+					newOrder.setProcessStatus(ProcessStatus.YPTPSH.getCode());
+					if (Objects.equals(tOrderNew.getApproval(), ApprovalNewState.TPDSH.getCode())){
+						aids.add(order.getApprovalAid());
+						str.append(order.getApprovalName()).append(",");
+					}else {
+						if (Objects.equals(tOrderNew.getApproval(), ApprovalNewState.DSZBH.getCode())) {
+							List<Admin> admins = adminMapper.selectAdminByRoleType(AFTConstants.APPROVAL_DECISION);
+							for (Admin admin : admins) {
+								aids.add(admin.getId());
+								str.append(admin.getName()).append(",");
+							}
+
+						}
+					}
+				}
+				newOrder.setExamineName(str.substring(0,str.length()-1));
+				torderNewMapper.updateByPrimaryKeySelective(newOrder);
+			}
+		} else if (Objects.equals(useDep.getOperationGuaranteeId(),in.getOperationGuaranteeId())) {
+			List<String> strings = torderNewMapper.selectByDepAndProcess(useDep.getId(), ProcessStatus.YYBZSH.getCode());
+			Admin admin = adminMapper.selectByPrimaryKey(in.getOperationGuaranteeId());
+			for (String s : strings) {
+				TOrderNew newOrder = new TOrderNew();
+				newOrder.setOrderNo(s);
+				newOrder.setExamineName(admin.getName());
+				torderNewMapper.updateByPrimaryKeySelective(newOrder);
+			}
+		}
+		//关掉特批审核
+		if (in.getApproval()==0&&useDep.getApproval()==1){
+			List<String> strings = torderNewMapper.selectByDepAndProcess(useDep.getId(), ProcessStatus.YPTPSH.getCode());
+			for (String s : strings) {
+				TOrderNew tOrderNew = torderNewMapper.selectByPrimaryKey(s);
+				if (Objects.equals(tOrderNew.getApproval(), ApprovalNewState.TPDSH.getCode())){
+					TOrderNew newOrder=new TOrderNew();
+					List<Admin> admins = adminMapper.selectAdminByRoleType(AFTConstants.TECH_ADMIN);
+					StringBuilder str = new StringBuilder();
+					for (Admin admin : admins) {
+						str.append(admin.getName()).append(",");
+					}
+					newOrder.setExamineName(str.substring(0,str.length()-1));
+					newOrder.setOrderNo(s);
+					newOrder.setApproval(ApprovalNewState.TPTG.getCode());
+					newOrder.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
+					torderNewMapper.updateByPrimaryKeySelective(newOrder);
+					addOrderLog(s,OrderLogProcess.TP.getCode(),"特批审核关闭,系统自动通过");
+				}
+			}
+		} else if (in.getApprovalAid().equals(useDep.getApprovalAid())) {
+			List<String> strings = torderNewMapper.selectByDepAndProcess(useDep.getId(), ProcessStatus.YPTPSH.getCode());
+			for (String s : strings) {
+				TOrderNew tOrderNew = torderNewMapper.selectByPrimaryKey(s);
+				if (Objects.equals(tOrderNew.getApproval(), ApprovalNewState.TPDSH.getCode())){
+					TOrderNewBo order = torderNewMapper.getSaleIdByOno(s);
+					TOrderNew newOrder=new TOrderNew();
+					newOrder.setOrderNo(s);
+					newOrder.setExamineName(order.getApprovalName());
+					torderNewMapper.updateByPrimaryKeySelective(newOrder);
+				}
+			}
+
+		}
+
 		if (in.getExpenseFinanceId()!=null&&!in.getExpenseFinanceId().equals(useDep.getExpenseFinanceId())){
 			dep.setExpenseFinanceId(in.getExpenseFinanceId());
-			departmentMapper.updateExpenseFinanceNotExamine(in.getExpenseFinanceId(),useDep.getExpenseFinanceId());
+			departmentMapper.updateExpenseFinanceNotExamine(in.getExpenseFinanceId(), useDep.getExpenseFinanceId());
 		}
-
-		//获取需要重新刷新的财务
-		List<String> aids =new ArrayList<>();
 		if (updateFinance){
-			if (aids.contains(in.getFinanceId())){
-				aids.add(in.getFinanceId());
-			}
+			aids.add(in.getFinanceId());
 			if(!aids.contains(useDep.getFinanceId())){
 				aids.add(useDep.getFinanceId());
 			}
-			torderMidMapper.updateFinanceId(in.getId(),in.getFinanceId());
-			asyncUtils.updateFinanceExamine(in.getFinanceId());
+			torderMidMapper.updateFinanceId(in.getId(), in.getFinanceId());
+			newOrderChangeMapper.updateExamineById(in.getFinanceId(), OrderChangeProcess.CWZY.getCode());
 		}
 		if(updateRetrialFinance){
-			if (aids.contains(in.getRetrialFinanceId())){
+			if (!aids.contains(in.getRetrialFinanceId())){
 				aids.add(in.getRetrialFinanceId());
 			}
 			if(!aids.contains(useDep.getRetrialFinanceId())){
@@ -294,15 +467,112 @@ public class OrganizationServiceImpl extends BaseMybatisDao<DepartmentMapper> im
 		if (in.getCashierExamine()==1){
 			dep.setCashierExamine(in.getCashierExamine());
 		}
-        return departmentMapper.updateByPrimaryKeySelective(dep);
+	}
+
+	/**
+	 * 推送财务/财务复审/技术总监审核下个流程
+	 * @param in 部门信息
+	 * @param s 订单编号
+	 * @param aids 统计需要刷新的财务
+	 * @param type 0 技术总监 1财务复审
+	 */
+	private void pushCW_JSZJ_Examine(InputDep in, String s, List<String> aids, Integer type) {
+		List<TOrderExamine> tOrderExamines = torderExamineMapper.selectByOrderNo(s, 0);
+		int i = 0;
+		for (TOrderExamine e : tOrderExamines) {
+			if (e.getStatus() == 1) i++;
+		}
+		if (i == tOrderExamines.size()) {
+			//推送订单流程
+			addOrderLog(s,OrderLogProcess.XMZJSH.getCode(),type==0?"部门修改技术总监为空,系统自动通过":"部门修改财务复审为空,系统自动通过");
+			StringBuilder str = new StringBuilder();
+			TOrderNew tOrderNew = torderNewMapper.selectByPrimaryKey(s);
+			TOrderNewBo order = torderNewMapper.getSaleIdByOno(s);
+			TOrderNew newOrder = new TOrderNew();
+			newOrder.setOrderNo(s);
+
+			//如果订单是特批
+			if (tOrderNew.getApproval() == ApprovalNewState.TPDSH.getCode() || tOrderNew.getApproval() == ApprovalNewState.TPBH.getCode()) {
+				if (StringUtils.isNotEmpty(in.getOperationGuaranteeId())) {
+					newOrder.setProcessStatus(ProcessStatus.YYBZSH.getCode());
+					str.append(order.getOperationGuaranteeName()).append(",");
+					aids.add(order.getOperationGuaranteeId());
+				} else if (order.getApprovalStatus() == 0) {
+					addOrderLog(s,OrderLogProcess.YYBZSHTG.getCode(),"运营保障审核人未设置,系统自动通过");
+					addOrderLog(s,OrderLogProcess.TP.getCode(),"部门特批审核未设置,系统自动通过");
+					newOrder.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
+					newOrder.setApproval(ApprovalNewState.TPTG.getCode());
+					pushJSZJidAndName(aids, str);
+				} else {
+					addOrderLog(s,OrderLogProcess.YYBZSHTG.getCode(),"运营保障审核人未设置,系统自动通过");
+					newOrder.setProcessStatus(ProcessStatus.YPTPSH.getCode());
+					if (Objects.equals(tOrderNew.getApproval(), ApprovalNewState.TPDSH.getCode())){
+						aids.add(order.getApprovalAid());
+						str.append(order.getApprovalName()).append(",");
+					}else {
+						if (Objects.equals(tOrderNew.getApproval(), ApprovalNewState.DSZBH.getCode())) {
+							List<Admin> admins = adminMapper.selectAdminByRoleType(AFTConstants.APPROVAL_DECISION);
+							for (Admin admin : admins) {
+								aids.add(admin.getId());
+								str.append(admin.getName()).append(",");
+							}
+						}
+					}
+				}
+			}else {
+				newOrder.setProcessStatus(ProcessStatus.YPZXSGLY.getCode());
+				newOrder.setApproval(ApprovalNewState.TPTG.getCode());
+				pushJSZJidAndName(aids, str);
+			}
+			newOrder.setExamineName(str.substring(0,str.length()-1));
+			torderNewMapper.updateByPrimaryKeySelective(newOrder);
+		}
+
+	}
+
+	private void pushJSZJidAndName(List<String> aids, StringBuilder str) {
+		List<Admin> admins = adminMapper.selectAdminByRoleType(AFTConstants.TECH_ADMIN);
+		for (Admin admin : admins) {
+			aids.add(admin.getId());
+			str.append(admin.getName()).append(",");
+		}
+	}
+
+	/**
+	 * 添加审核人 财务专员,财务复审,技术总监审核
+	 * @param useDep 部门
+	 * @param aid  人员编号
+	 * @param list 需要刷新审核人的订单
+	 */
+	private void addExamine(Department useDep, String aid,List<String> list) {
+		List<String> strings = torderNewMapper.selectByDepAndProcess(useDep.getId(), ProcessStatus.YPCW_JSZJ.getCode());
+		Admin admin = adminMapper.selectByPrimaryKey(aid);
+		if (!strings.isEmpty()){
+			for (String s : strings) {
+				torderExamineMapper.insertSelective(new TOrderExamine(s,0,admin.getId(),admin.getName()));
+				if(!list.contains(s)){
+					list.add(s);
+				}
+			}
+		}
+	}
+
+	private void addOrderLog(String orderNo, Integer process, String remarks) {
+		TOrderLog tl=new TOrderLog();
+		tl.setAid(AFTConstants.SUPERADMIN_ID);
+		tl.setProcess(process);
+		tl.setOrderNo(orderNo);
+		tl.setRemarks(remarks);
+		tOrderLogMapper.insertSelective(tl);
 	}
 
 	/**
 	 * 如果更换了负责人刷新中间表
 	 */
 	private void checkFinaceUpdate(List<String> aids) {
-		asyncUtils.financeCoutSwitch(aids);
-
+		if (!aids.isEmpty()){
+			asyncUtils.financeCoutSwitch(aids);
+		}
 	}
 
 	@Override

+ 14 - 46
src/main/java/com/goafanti/techproject/service/impl/TechProjectServiceImpl.java

@@ -1,47 +1,12 @@
 package com.goafanti.techproject.service.impl;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.commons.lang3.time.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Service;
-
 import com.goafanti.common.bo.Error;
 import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.constant.ErrorConstants;
-import com.goafanti.common.dao.AdminMapper;
-import com.goafanti.common.dao.ContractMapper;
-import com.goafanti.common.dao.ContractTaskLogMapper;
-import com.goafanti.common.dao.ContractTaskMapper;
-import com.goafanti.common.dao.TOrderMapper;
-import com.goafanti.common.dao.TechProjectLogMapper;
-import com.goafanti.common.dao.TechProjectMapper;
-import com.goafanti.common.dao.UserMapper;
-import com.goafanti.common.enums.DeleteStatus;
-import com.goafanti.common.enums.NoticeReadStatus;
-import com.goafanti.common.enums.NoticeStatus;
-import com.goafanti.common.enums.OrderFlowState;
-import com.goafanti.common.enums.TechProjectStatus;
+import com.goafanti.common.dao.*;
+import com.goafanti.common.enums.*;
 import com.goafanti.common.error.BusinessException;
-import com.goafanti.common.model.Admin;
-import com.goafanti.common.model.Contract;
-import com.goafanti.common.model.ContractTask;
-import com.goafanti.common.model.ContractTaskLog;
-import com.goafanti.common.model.Notice;
-import com.goafanti.common.model.TOrder;
-import com.goafanti.common.model.TechProject;
-import com.goafanti.common.model.TechProjectLog;
-import com.goafanti.common.model.User;
+import com.goafanti.common.model.*;
 import com.goafanti.common.utils.MobileMessageUtils;
 import com.goafanti.common.utils.StringUtils;
 import com.goafanti.core.mybatis.BaseMybatisDao;
@@ -52,17 +17,20 @@ import com.goafanti.order.enums.CommodityType;
 import com.goafanti.order.enums.ProjectStage;
 import com.goafanti.order.enums.PublicStatus;
 import com.goafanti.order.enums.TaskDistributionState;
-import com.goafanti.techproject.bo.ProjectDetailBo;
-import com.goafanti.techproject.bo.ProjectListBo;
-import com.goafanti.techproject.bo.TaskDetailBo;
-import com.goafanti.techproject.bo.TaskListBo;
-import com.goafanti.techproject.bo.TechProjectClientListBo;
-import com.goafanti.techproject.bo.TechProjectContractListBo;
-import com.goafanti.techproject.bo.TechProjectDetailBo;
-import com.goafanti.techproject.bo.TechProjectManageListBo;
+import com.goafanti.techproject.bo.*;
 import com.goafanti.techproject.enums.TaskState;
 import com.goafanti.techproject.service.TechProjectService;
 import com.goafanti.user.bo.OrgUnitNames;
+import org.apache.commons.lang3.time.DateUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 
 

+ 10 - 0
src/main/java/com/goafanti/weChat/bo/OutPublicDtails.java

@@ -16,6 +16,8 @@ public class OutPublicDtails  {
 	private Integer signBills;
 	@Excel(name = "签单时间")
 	private String signTime;
+//	@Excel(name = "省市区") 废弃这个字段
+	private String addressName;
 	@Excel(name = "公出地点")
 	private String districtName;
 	@Excel(name = "跟单人")
@@ -71,6 +73,14 @@ public class OutPublicDtails  {
 	@Excel(name = "订单总金额" ,scale = 6)
 	private BigDecimal totalAmout;
 
+	public String getAddressName() {
+		return addressName;
+	}
+
+	public void setAddressName(String addressName) {
+		this.addressName = addressName;
+	}
+
 	private List<PublicReleaseClock> list;
 
 

+ 12 - 0
src/main/java/com/goafanti/weChat/bo/OutPublicRelease.java

@@ -38,12 +38,24 @@ public class OutPublicRelease extends PublicRelease {
 	 * 协单人员
 	 */
 	private String assistAidName;
+
+	private String addressName;
 	private String uids;
 	private String adminExamine;
 	private String reviewerName;
 	private List<OutPublicReleaseDetails> prdList;
 	private List<PublicExamine> peList;
 
+	@Override
+	public String getAddressName() {
+		return addressName;
+	}
+
+	@Override
+	public void setAddressName(String addressName) {
+		this.addressName = addressName;
+	}
+
 	public String getReviewerName() {
 		return reviewerName;
 	}

+ 34 - 19
src/main/java/com/goafanti/weChat/service/impl/PublicReleaseServiceImpl.java

@@ -31,6 +31,8 @@ import org.springframework.web.socket.TextMessage;
 
 import java.math.BigDecimal;
 import java.text.ParseException;
+import java.time.LocalDate;
+import java.time.ZoneId;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
@@ -135,6 +137,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				prd.setDistrictName(in.getDistrictName());
 				prd.setLatitude(in.getLatitude());
 				prd.setLongitude(in.getLongitude());
+				prd.setAddressName(in.getAddressName());
 				if (index<userCount){
 					if (duration==0){
 						prd.setDuration(duration);
@@ -259,6 +262,12 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 					});
 
 				}
+			} else if (in.getType()==1) {
+				users.forEach(u->{
+					if (!u.getAid().equals(my.getId())){
+						addNoticeAndSoucket(my, u, formatDate);
+					}
+				});
 			}
 			if (status.get()==1){
 				pushNoticeAndSoucketAndEmail(my, in, date, a, str, map);
@@ -560,6 +569,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 				prd.setUid(s);
 				prd.setSignSum(0);
 				prd.setDistrictName(districtName);
+				prd.setAddressName(in.getAddressName());
 				prd.setLatitude(latitude);
 				prd.setLongitude(longitude);
 				prd.setClockIn(0);
@@ -1830,19 +1840,14 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			actualDuration=actualDuration.add(BigDecimal.valueOf(in.getDuration()));
 			frequency++;
 		}
+		LocalDate startDate = LocalDate.now().withMonth(1).withDayOfMonth(1);
+		String sumYear= String.valueOf(startDate.getYear());
+		LocalDate endDate = startDate.withYear(startDate.getYear()+1);
 		for (PublicRelease e : list) {
-			//新增直接计算
-			if (in.getId()==null){
-				if (e.getDuration()!=null){
-					actualDuration=actualDuration.add(BigDecimal.valueOf(e.getDuration()));
-					if (!peopleList.contains(e.getAid())){
-						peopleList.add(e.getAid());
-					}
-					frequency++;
-				}
-			}else {
-				//修改当前数据要从修改后获取
-				if (!e.getId().equals(in.getId())){
+			LocalDate date = e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+			if (date.isAfter(startDate)&&date.isBefore(endDate)){
+				//新增直接计算
+				if (in.getId()==null){
 					if (e.getDuration()!=null){
 						actualDuration=actualDuration.add(BigDecimal.valueOf(e.getDuration()));
 						if (!peopleList.contains(e.getAid())){
@@ -1851,17 +1856,26 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 						frequency++;
 					}
 				}else {
-					if (outPublicRelease != null && outPublicRelease.getDuration() != null) {
-						actualDuration = actualDuration.add(BigDecimal.valueOf(outPublicRelease.getDuration()));
-						if (!peopleList.contains(outPublicRelease.getAid())) {
-							peopleList.add(outPublicRelease.getAid());
+					//修改当前数据要从修改后获取
+					if (!e.getId().equals(in.getId())){
+						if (e.getDuration()!=null){
+							actualDuration=actualDuration.add(BigDecimal.valueOf(e.getDuration()));
+							if (!peopleList.contains(e.getAid())){
+								peopleList.add(e.getAid());
+							}
+							frequency++;
+						}
+					}else {
+						if (outPublicRelease != null && outPublicRelease.getDuration() != null) {
+							actualDuration = actualDuration.add(BigDecimal.valueOf(outPublicRelease.getDuration()));
+							if (!peopleList.contains(outPublicRelease.getAid())) {
+								peopleList.add(outPublicRelease.getAid());
+							}
+							frequency++;
 						}
-						frequency++;
 					}
 				}
 			}
-
-
 		}
 		Map map=new HashMap();
 		CheckOrderNoOut data= new CheckOrderNoOut();
@@ -1875,6 +1889,7 @@ public class PublicReleaseServiceImpl extends BaseMybatisDao<PublicReleaseMapper
 			update.setFrequency(frequency);
 			update.setActualDuration(actualDuration.doubleValue());
 			update.setPeopleCount(peopleList.size());
+			update.setSumYear(sumYear);
 			tOrderPublicReleaseCountMapper.updateByOrderNo(update);
 		}
 		data.setTimesCount(frequency);