杜洪波
2025-09-18 22d8b68b19e35bdd2086fd047296abe440639f32
src/main/java/com/product/administration/service/CustomerInfoService.java
@@ -3,12 +3,13 @@
import java.util.Date;
import com.product.util.BaseUtil;
import com.product.util.UnifySQLFunction;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.product.administration.config.CmnConst;
import com.product.administration.service.ide.ICustomerInfoService;
import com.product.common.lang.StringUtils;
import com.product.core.dao.BaseDao;
import com.product.core.entity.DataTableEntity;
import com.product.core.entity.FieldSetEntity;
@@ -40,31 +41,31 @@
    */
   public DataTableEntity listCustomerInfo(Integer cpage,Integer pageSize,FieldSetEntity fse) {
      //数据权限
//      String dataFilter=permissionService.getDataFilter(CmnConst.CREATED_BY) ;
      String dataFilter=permissionService.getDataFilter(CmnConst.CREATED_BY);
      //高级查询
      String searchFilter=queryFilterService.getQueryFilter(fse);
      StringBuilder sbSql = new StringBuilder();
      sbSql.append("SELECT \n");
      sbSql.append("   A.uuid,A.customer_name, A.customer_manager, A.customer_manager_leader,A.business_agent, \n");
      sbSql.append("   CONCAT(B.linkman, '-', B.mobile) AS customer_contact \n");
      sbSql.append("FROM product_project_customer A \n");
      sbSql.append("LEFT JOIN product_project_customer_sub B ON B.customer_uuid = A.uuid \n");
      if (!BaseUtil.strIsNull(searchFilter)) {
         sbSql.append("WHERE ").append(searchFilter);
      }
//      if(!StringUtils.isEmpty(dataFilter)) {
//         if (!StringUtils.isEmpty(searchFilter)) {
//            dataFilter+=" AND "+ searchFilter;
//         }
//      }else {
//         if (!StringUtils.isEmpty(searchFilter)) {
//            dataFilter=searchFilter;
//         }
//      StringBuilder sbSql = new StringBuilder();
//      sbSql.append("SELECT \n");
//      sbSql.append("   A.uuid,A.customer_name, A.customer_manager, A.customer_manager_leader,A.business_agent, \n");
//      sbSql.append("   CONCAT(B.linkman, '-', B.mobile) AS customer_contact \n");
//      sbSql.append("FROM product_project_customer A \n");
//      sbSql.append("LEFT JOIN product_project_customer_sub B ON B.customer_uuid = A.uuid \n");
//      if (!BaseUtil.strIsNull(searchFilter)) {
//         sbSql.append("WHERE ").append(searchFilter);
//      }
      if(!BaseUtil.strIsNull(dataFilter)) {
         if (!BaseUtil.strIsNull(searchFilter)) {
            dataFilter+=" AND "+ searchFilter;
         }
      }else {
         if (!BaseUtil.strIsNull(searchFilter)) {
            dataFilter=searchFilter;
         }
      }
        
//      DataTableEntity dt=baseDao.listTable(CmnConst.product_project_CUSTOMER, searchFilter, null, null, null, pageSize, cpage);
      DataTableEntity dt = baseDao.listTable(sbSql.toString(), new Object[] {}, pageSize, cpage);
      DataTableEntity dt=baseDao.listTable(CmnConst.PRODUCT_PROJECT_CUSTOMER, searchFilter, null, null, null, pageSize, cpage);
//      DataTableEntity dt = baseDao.listTable(sbSql.toString(), new Object[] {}, pageSize, cpage);
      baseDao.loadPromptData(dt);
      return dt;
   }
@@ -75,7 +76,7 @@
    * @return
    */
   public FieldSetEntity findCustomerInfo(String uuid) {
      FieldSetEntity fieldSetEntity = baseDao.getFieldSetEntity(CmnConst.product_project_CUSTOMER, uuid, true);
      FieldSetEntity fieldSetEntity = baseDao.getFieldSetEntity(CmnConst.PRODUCT_PROJECT_CUSTOMER, uuid, true);
      FieldSetEntity fse = this.findCustomerValue(uuid);
      fieldSetEntity.setValue("money", fse.getString("money"));
      fieldSetEntity.setValue("returnedMoney", fse.getString("returnedMoney"));
@@ -96,7 +97,7 @@
    */
   public FieldSetEntity contractProjectMakeMoney(String uuid) {
      FieldSetEntity fieldSet = new FieldSetEntity();
      fieldSet.setTableName(CmnConst.product_project_CUSTOMER);
      fieldSet.setTableName(CmnConst.PRODUCT_PROJECT_CUSTOMER);
      //合同表 product_project_contract_info owner
      DataTableEntity contractData = baseDao.listTable("product_project_contract_info"," owner = ? and flow_flag = 2 ",new Object[]{uuid});
      baseDao.loadPromptData(contractData);
@@ -143,23 +144,26 @@
    */
   public FieldSetEntity findCustomerValue(String uuid) {
      FieldSetEntity fieldSetEntity = new FieldSetEntity();
      fieldSetEntity.setTableName(CmnConst.product_project_CUSTOMER);
      fieldSetEntity.setTableName(CmnConst.PRODUCT_PROJECT_CUSTOMER);
      //查询合同金额
         StringBuffer moneySql = new StringBuffer();
            moneySql.append(" SELECT IFNULL(SUM(d.money),0) money FROM ( ")
               .append(" SELECT contract_amount money FROM product_project_contract_info WHERE owner = ? and uuid not in (SELECT contract_name FROM product_project_contract_change WHERE owner = ?) ")
               .append(" UNION ALL ")
               .append(" SELECT c.change_the_amount money FROM ( ")
               .append(" SELECT a.contract_name,MAX(b.finish_time) finish_time FROM product_project_contract_change a JOIN ")
               .append("product_sys_flow_task b ON a.uuid = b.record_uuid WHERE b.finish_type = 2 GROUP BY a.contract_name) ")
               .append(" b ")
               .append(" LEFT JOIN ")
               .append(" (SELECT a.*,b.finish_time FROM product_project_contract_change a LEFT JOIN ")
               .append("product_sys_flow_task b ON a.uuid = b.record_uuid) c ")
               .append(" ON b.contract_name = c.contract_name ")
               .append(" AND b.finish_time = c.finish_time ")
               .append(" WHERE c.owner = ? ")
               .append(" ) d");
            moneySql.append("\n SELECT ").append(UnifySQLFunction.ifnull("SUM(d.money)", "0")).append(" money")
               .append("\nFROM ( ")
               .append("\n  SELECT contract_amount money ")
               .append("\n  FROM product_project_contract_info ")
               .append("\n  WHERE owner = ? and uuid not in (SELECT contract_name FROM product_project_contract_change WHERE owner = ?) ")
               .append("\n  UNION ALL ")
               .append("\n  SELECT c.change_the_amount money FROM ( ")
               .append("\n    SELECT a.contract_name,MAX(b.finish_time) finish_time FROM product_project_contract_change a  ")
               .append("\n    JOIN product_sys_flow_task b ON a.uuid = b.record_uuid WHERE b.finish_type = 2 ")
               .append("\n    GROUP BY a.contract_name")
               .append("\n  )b ")
               .append("\n  LEFT JOIN (")
               .append("\n    SELECT a.*,b.finish_time FROM product_project_contract_change a ")
               .append("\n    LEFT JOIN product_sys_flow_task b ON a.uuid = b.record_uuid")
               .append("\n  ) c ON b.contract_name = c.contract_name AND b.finish_time = c.finish_time ")
               .append("\n  WHERE c.owner = ? ")
               .append("\n) d");
         DataTableEntity moneyDataTableEntity = baseDao.listTable(moneySql.toString(), new String[]{uuid,uuid,uuid});
         if(!BaseUtil.dataTableIsEmpty(moneyDataTableEntity)){
@@ -226,6 +230,6 @@
   @Transactional
   public boolean deleteCustomerInfo(String uuid) throws BaseException{
      String[] uuids = uuid.split(",");
        return baseDao.delete(CmnConst.product_project_CUSTOMER, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuids.length, true), uuids);
        return baseDao.delete(CmnConst.PRODUCT_PROJECT_CUSTOMER, BaseUtil.buildQuestionMarkFilter(CmnConst.UUID, uuids.length, true), uuids);
   }
}