Browse Source

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

anderx 10 months ago
parent
commit
6b5bce593c

+ 110 - 0
src/main/java/com/goafanti/admin/bo/AdminPublicDuration.java

@@ -0,0 +1,110 @@
+package com.goafanti.admin.bo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.goafanti.common.constant.AFTConstants;
+import com.goafanti.common.utils.excel.Excel;
+
+import java.util.Date;
+
+public class AdminPublicDuration {
+
+    private String id;
+    @Excel(name = "姓名")
+    private String name;
+    @Excel(name = "时长")
+    private Double duration;
+    @Excel(name = "日期", dateFormat = AFTConstants.YYYYMMDD)
+    private Date date;
+
+    private Integer workingHours;
+
+    private Double conversion;
+    private Integer countNumber;
+
+    private double days;
+
+    public Double getConversion() {
+        return conversion;
+    }
+
+    public void setConversion(Double conversion) {
+        this.conversion = conversion;
+    }
+
+    public Integer getWorkingHours() {
+        return workingHours;
+    }
+
+    public void setWorkingHours(Integer workingHours) {
+        this.workingHours = workingHours;
+    }
+
+    public Integer getCountNumber() {
+        return countNumber;
+    }
+
+    public void setCountNumber(Integer countNumber) {
+        this.countNumber = countNumber;
+    }
+
+    public double getDays() {
+        return days;
+    }
+
+    public void setDays(double days) {
+        this.days = days;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public AdminPublicDuration(String id, String name, Double duration) {
+        this.id = id;
+        this.name = name;
+        this.duration = duration;
+        this.countNumber = 1;
+    }
+
+    public AdminPublicDuration() {
+    }
+
+    public Double getDuration() {
+        return duration;
+    }
+
+    public void setDuration(Double duration) {
+        this.duration = duration;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    @Override
+    public String toString() {
+        return "AdminPublicDuration{" +
+                "id='" + id + '\'' +
+                ", name='" + name + '\'' +
+                ", duration=" + duration +
+                ", date=" + date +
+                '}';
+    }
+}

+ 99 - 0
src/main/java/com/goafanti/admin/bo/AdminPublicDurationCount.java

@@ -0,0 +1,99 @@
+package com.goafanti.admin.bo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.goafanti.common.utils.excel.Excel;
+
+import java.util.Date;
+
+public class AdminPublicDurationCount {
+
+    private String id;
+    @Excel(name = "姓名")
+    private String name;
+    @Excel(name = "时长")
+    private Double duration;
+    private Date date;
+    @Excel(name = "系统天数")
+    private Integer countNumber;
+    @Excel(name = "折算系数")
+    private Double conversion;
+    @Excel(name = "折算天数")
+    private double days;
+
+    public Double getConversion() {
+        return conversion;
+    }
+
+    public void setConversion(Double conversion) {
+        this.conversion = conversion;
+    }
+
+    public Integer getCountNumber() {
+        return countNumber;
+    }
+
+    public void setCountNumber(Integer countNumber) {
+        this.countNumber = countNumber;
+    }
+
+    public double getDays() {
+        return days;
+    }
+
+    public void setDays(double days) {
+        this.days = days;
+    }
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public AdminPublicDurationCount(String id, String name, Double duration) {
+        this.id = id;
+        this.name = name;
+        this.duration = duration;
+        this.countNumber = 1;
+    }
+
+    public AdminPublicDurationCount() {
+    }
+
+    public Double getDuration() {
+        return duration;
+    }
+
+    public void setDuration(Double duration) {
+        this.duration = duration;
+    }
+
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+
+    @Override
+    public String toString() {
+        return "AdminPublicDuration{" +
+                "id='" + id + '\'' +
+                ", name='" + name + '\'' +
+                ", duration=" + duration +
+                ", date=" + date +
+                '}';
+    }
+}

+ 55 - 0
src/main/java/com/goafanti/admin/controller/AdminStatisticsController.java

@@ -1,14 +1,22 @@
 package com.goafanti.admin.controller;
 
+import com.goafanti.admin.bo.AdminPublicDuration;
+import com.goafanti.admin.bo.AdminPublicDurationCount;
 import com.goafanti.admin.service.AdminStatisticsService;
 import com.goafanti.common.bo.Result;
 import com.goafanti.common.controller.CertifyApiController;
+import com.goafanti.common.utils.excel.NewExcelUtil;
 import com.goafanti.core.shiro.token.TokenManager;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 @Controller
 @RequestMapping(value = "/api/admin/statistics")
 public class AdminStatisticsController extends CertifyApiController {
@@ -16,6 +24,9 @@ public class AdminStatisticsController extends CertifyApiController {
     @Autowired
     private AdminStatisticsService adminStatisticsService;
 
+    @Value(value = "${upload.path}")
+    private final String	uploadPath			= null;
+
     /**
      * 营销首页信息
      * @param startTime  开始时间
@@ -119,4 +130,48 @@ public class AdminStatisticsController extends CertifyApiController {
         return res;
     }
 
+    /**
+     * 统计月份打卡数据
+     */
+    @RequestMapping(value = "/month/data", method = RequestMethod.GET)
+    public Result monthData(String date) {
+        Result res =new Result();
+        Map<String, Object> map = adminStatisticsService.monthData(date);
+        res.setData(map);
+        return res;
+    }
+
+
+    /**
+     * 统计月份打卡数据
+     */
+    @RequestMapping(value = "/month/data/export", method = RequestMethod.GET)
+    public Result monthDataExport(String date,Integer type) {
+
+        Map<String, Object> map = adminStatisticsService.monthData(date);
+        String sheetName;
+        if (type==null||type==1){
+            NewExcelUtil<AdminPublicDuration> newExcelUtil=new NewExcelUtil<>(AdminPublicDuration.class);
+            sheetName="统计月份打卡数据(详情)";
+            List<AdminPublicDuration> o = (List<AdminPublicDuration>) map.get("date");
+            return newExcelUtil.exportExcel(o,sheetName,uploadPath);
+        }else {
+            sheetName="统计月份打卡数据(总计)";
+            List<AdminPublicDuration>  o = (List<AdminPublicDuration>) map.get("count");
+            List<AdminPublicDurationCount>  list = new ArrayList<>();
+            o.forEach(e->{
+                AdminPublicDurationCount adminPublicDurationCount = new AdminPublicDurationCount();
+                adminPublicDurationCount.setId(e.getId());
+                adminPublicDurationCount.setName(e.getName());
+                adminPublicDurationCount.setDuration(e.getDuration());
+                adminPublicDurationCount.setCountNumber(e.getCountNumber());
+                adminPublicDurationCount.setConversion(e.getConversion());
+                adminPublicDurationCount.setDays(e.getDays());
+                list.add(adminPublicDurationCount);
+            });
+            NewExcelUtil<AdminPublicDurationCount> newExcelUtil=new NewExcelUtil<>(AdminPublicDurationCount.class);
+            return newExcelUtil.exportExcel(list, sheetName, uploadPath);
+        }
+    }
+
 }

+ 4 - 0
src/main/java/com/goafanti/admin/service/AdminStatisticsService.java

@@ -1,5 +1,7 @@
 package com.goafanti.admin.service;
 
+import java.util.Map;
+
 public interface AdminStatisticsService {
     Object info( String startTime,String endTime);
 
@@ -16,4 +18,6 @@ public interface AdminStatisticsService {
     Object salesTeam(String aid,String startTime,String endTime);
 
     Object salesTeamClean();
+
+    Map<String,Object> monthData(String month);
 }

+ 162 - 4
src/main/java/com/goafanti/admin/service/impl/AdminStatisticsServiceImpl.java

@@ -4,9 +4,8 @@ import com.goafanti.admin.bo.*;
 import com.goafanti.admin.service.AdminStatisticsService;
 import com.goafanti.common.constant.AFTConstants;
 import com.goafanti.common.dao.*;
-import com.goafanti.common.model.Admin;
-import com.goafanti.common.model.AdminUserCount;
-import com.goafanti.common.model.SalesTeam;
+import com.goafanti.common.error.BusinessException;
+import com.goafanti.common.model.*;
 import com.goafanti.common.utils.DateUtils;
 import com.goafanti.common.utils.LoggerUtils;
 import com.goafanti.core.shiro.token.TokenManager;
@@ -16,6 +15,10 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
 import java.util.*;
 
 @Service
@@ -38,7 +41,7 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
     @Resource
     private UserFollowMapper userFollowMapper;
     @Resource
-    private NewOrderDunMapper newOrderDunMapper;
+    private DepartmentMapper departmentMapper;
 
 
     @Override
@@ -428,6 +431,8 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
         return 1;
     }
 
+
+
     private void addSonTeam(List<SalesTeamBo>list, SalesTeamBo salesTeamBo, String startTime, String endTime) {
         List<SalesTeam> salesTeams = salesTeamMapper.queryBySuperId(salesTeamBo.getId());
 
@@ -522,4 +527,157 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
             this.endDay = endDay;
         }
     }
+
+
+    /**
+     *  月份数据
+     * @return
+     */
+    @Override
+    public Map<String,Object>  monthData(String  dateStr) {
+        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
+        LocalDate localDate =LocalDate.parse(dateStr,formatter);
+        LocalDate endDate = localDate.plusMonths(1);
+        List<PublicRelease> publicReleases = publicReleaseMapper.selectByMonth(localDate, endDate,null);
+        List<PublicRelease> publicReleases2 = publicReleaseMapper.selectByMonth(localDate, endDate,1);
+        List<AdminPublicDuration> list=new ArrayList<>();
+        List<String> errors=new ArrayList<>();
+        for (PublicRelease e : publicReleases) {
+            AdminPublicDuration a = new AdminPublicDuration();
+            pushAdminNameAndProvince(e.getAid(),a);
+            //计算时间差,再加一天就是一共多少天
+            long daysBetween = DateUtils.getDaysBetween(e.getReleaseStart(), e.getReleaseEnd());
+            daysBetween+=1;
+            if (daysBetween==1){
+                a.setId(e.getAid());
+                a.setDate(e.getReleaseStart());
+                a.setDuration(e.getDuration());
+                list.add(a);
+            }else if(daysBetween>0){
+                double v = e.getDuration() / daysBetween;
+                for (int i = 0; i < daysBetween; i++) {
+                    LocalDate localDate1 = e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(i);
+                    if (localDate1.isBefore(endDate)){
+                        a.setId(e.getAid());
+                        a.setDate(Date.from(localDate1.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+                        a.setDuration(v);
+                        list.add(a);
+                    }else{
+                        errors.add(String.format("用户[%s]公出时间[%s]超出[%s],不计入本月公出",a.getName(),localDate1.format(formatter),endDate.format(formatter)));
+                    }
+
+                }
+            }
+        }
+        for (PublicRelease e : publicReleases2) {
+            AdminPublicDuration a = new AdminPublicDuration();
+            pushAdminNameAndProvince(e.getAid(),a);
+            long daysBetween = DateUtils.getDaysBetween(e.getReleaseStart(), e.getReleaseEnd());
+            if(daysBetween>0){
+                double v = e.getDuration() / daysBetween;
+                for (int i = 0; i < daysBetween; i++) {
+                    LocalDate localDate1 = e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(i);
+                    if (localDate1.isAfter(localDate)){
+                        a.setId(e.getAid());
+                        a.setDate(Date.from(localDate1.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+                        a.setDuration(v);
+                        list.add(a);
+                    }else{
+                        errors.add(String.format("用户[%s]公出时间[%s]小于[%s],不计入本月公出",a.getName(),localDate1.format(formatter),endDate.format(formatter)));
+                    }
+
+                }
+            }
+
+        }
+        //将数据统计到人
+        Map<String, BigDecimal> durationMap = new HashMap<>();
+        for (AdminPublicDuration e : list) {
+            String id = e.getId(); // 假设 AdminStatisticsBo 有一个 getId() 方法
+            BigDecimal duration = BigDecimal.valueOf(e.getDuration()); // 假设 AdminStatisticsBo 有一个 getCallDurationSum() 方法
+            if (durationMap.containsKey(id)) {
+                BigDecimal currentDuration = durationMap.get(id);
+                durationMap.put(id, currentDuration.add(duration));
+            } else {
+                durationMap.put(id, duration);
+            }
+        }
+        List<AdminPublicDuration> list2=sumDurationsById(list);
+        Map<String,Object> map=new HashMap<>();
+        map.put("date",list);
+        map.put("count",list2);
+        map.put("errors",errors);
+        return map;
+    }
+
+
+
+    private void pushAdminNameAndProvince(String aid, AdminPublicDuration a) {
+        Admin admin = adminMapper.queryById(aid);
+        Department department = departmentMapper.selectByPrimaryKey(admin.getDepartmentId());
+        String name = admin.getName();
+        // 去掉括号及其内部的内容
+        if (name.contains("(")){
+            int index = name.indexOf('(');
+            name = name.substring(0, index);
+        }else if (name.contains("(")){
+            int index = name.indexOf('(');
+            name = name.substring(0, index);
+        }
+        a.setName(name);
+        a.setWorkingHours(department.getWorkingHoursType());
+    }
+
+
+    public List<AdminPublicDuration>  sumDurationsById(List<AdminPublicDuration> adminPublicDurations) {
+        Map<String, AdminPublicDuration> durationMap = new HashMap<>();
+        for (AdminPublicDuration adminPublicDuration : adminPublicDurations) {
+            String id = adminPublicDuration.getId();
+            String name = adminPublicDuration.getName();
+            double duration = adminPublicDuration.getDuration();
+            if (durationMap.containsKey(id)) {
+                AdminPublicDuration summary = durationMap.get(id);
+                summary.setWorkingHours(adminPublicDuration.getWorkingHours());
+                BigDecimal countDuration = BigDecimal.valueOf(summary.getDuration()).add(BigDecimal.valueOf(duration));
+                summary.setDuration(countDuration.doubleValue());
+                summary.setName(name);
+                summary.setCountNumber(summary.getCountNumber()+1);
+                if (summary.getWorkingHours()==null){
+                    throw new BusinessException(String.format("用户[%s]未设置工作类型",name));
+                }
+               if (summary.getWorkingHours()==2){
+                    summary.setConversion(7.0);
+                } else{
+                    summary.setConversion(7.5);
+                }
+                if (summary.getConversion()!=null){
+                    BigDecimal divide = BigDecimal.valueOf(summary.getDuration()).divide(BigDecimal.valueOf(summary.getConversion()), 2, RoundingMode.HALF_UP);
+                    summary.setDays(divide.doubleValue());
+                }
+            } else {
+                AdminPublicDuration e = new AdminPublicDuration(id, name, duration);
+                e.setWorkingHours(adminPublicDuration.getWorkingHours());
+                if (e.getWorkingHours()==null){
+                    throw new BusinessException(String.format("用户[%s]未设置工作类型",name));
+                }
+                if (e.getWorkingHours()==2){
+                    e.setConversion(7.0);
+                } else{
+                    e.setConversion(7.5);
+                }
+                if (e.getConversion()!=null){
+                    BigDecimal divide = BigDecimal.valueOf(e.getDuration()).divide(BigDecimal.valueOf(e.getConversion()), 2, RoundingMode.HALF_UP);
+                    e.setDays(divide.doubleValue());
+                }
+                durationMap.put(id, e);
+            }
+        }
+        return new ArrayList<>(durationMap.values());
+    }
+
+
+
+
+
+
 }

+ 9 - 0
src/main/java/com/goafanti/common/dao/PublicReleaseMapper.java

@@ -9,6 +9,7 @@ import com.goafanti.weChat.bo.*;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.data.domain.Pageable;
 
+import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
 
@@ -148,5 +149,13 @@ public interface PublicReleaseMapper {
     List<PublicRelease> checkTech(@Param("aid")String aid, @Param("start") Date start, @Param("end")Date end);
 
     List<MyUserDetailsBo> selectCountByUid(String id);
+
+    /**
+     * 获取时间内打卡数据,主要用于获取月份
+     * @param start 开始时间
+     * @param end  结束时间
+     * @param type null =获取发起时间在时间段内,1=获取发起时间不在时间段内,但结束时间在的
+     */
+    List<PublicRelease> selectByMonth(@Param("start") LocalDate start, @Param("end") LocalDate end, @Param("type") Integer type);
 }
 

+ 11 - 0
src/main/java/com/goafanti/common/mapper/PublicReleaseMapper.xml

@@ -1230,6 +1230,17 @@
             or  (release_start &lt; #{start} and release_end &gt; #{start})
             or  (release_start &lt; #{end} and release_end &gt; #{end}))
     </select>
+    <select id="selectByMonth" resultMap="PublicReleaseMap">
+        select
+        <include refid="PublicReleaseAllSql"/>
+        from public_release where status in (2) and clock_in=1
+        <if test="type==null">
+            and (release_start &gt; #{start} and release_start &lt; #{end})
+        </if>
+        <if test="type==1">
+            and (release_start &lt; #{start} and release_end &gt; #{start})
+        </if>
+    </select>
 
 
 </mapper>

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

@@ -2381,7 +2381,7 @@ inner join(
 		from public_release a left join public_release_details b on a.id=b.prid left join `user` c on b.uid=c.id
 		where b.clock_in =1
 		<if test="startTime != null and endTime != null">
-			and  c.transfer_time  between #{startTime,jdbcType=VARCHAR} and #{endTime,jdbcType=VARCHAR}
+			and  c.release_start  between #{startTime,jdbcType=VARCHAR} and #{endTime,jdbcType=VARCHAR}
 		</if>
 		<if test="admins!= null">
 			and a.aid in

+ 24 - 29
src/main/java/com/goafanti/common/utils/DateUtils.java

@@ -7,6 +7,7 @@ import org.apache.commons.lang3.time.DateFormatUtils;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.*;
+import java.time.temporal.ChronoUnit;
 import java.time.temporal.TemporalAdjusters;
 import java.util.Calendar;
 import java.util.Date;
@@ -418,6 +419,11 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
 		return format.format(date);
 	}
 
+	public static String formatDateYYYYMMdd(Date date, String pattern) {
+		SimpleDateFormat format = new SimpleDateFormat(parsePatterns[1]);
+		return format.format(date);
+	}
+
 	public static String formatDateYYYYMMddHHmm(Date date) {
 		SimpleDateFormat format = new SimpleDateFormat(parsePatterns[2]);
 		return format.format(date);
@@ -554,39 +560,28 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
         return today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
 	}
 
+	public static long getDaysBetween(Date startDate, Date endDate) {
+		// 将Date转换为LocalDate(需指定时区)
+		LocalDate start = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+		LocalDate end = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
 
-	public static void main(String[] args) {
-		// 当前日期
-		LocalDate today = LocalDate.now();
-		System.out.println("今天: " + today);
-
-		// 明天
-		LocalDate tomorrow = today.plusDays(1);
-		System.out.println("明天: " + tomorrow);
-
-		// 本周第一天(假设周一为一周开始)
-		LocalDate firstDayOfThisWeek = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
-		System.out.println("本周第一天: " + firstDayOfThisWeek);
-
-		// 下周第一天
-		LocalDate firstDayOfNextWeek = firstDayOfThisWeek.plusWeeks(1);
-		System.out.println("下周第一天: " + firstDayOfNextWeek);
-
-		// 本月第一天
-		LocalDate firstDayOfThisMonth = today.withDayOfMonth(1);
-		System.out.println("本月第一天: " + firstDayOfThisMonth);
+		// 计算天数差(end - start)
+		return ChronoUnit.DAYS.between(start, end);
+	}
 
-		// 下月第一天
-		LocalDate firstDayOfNextMonth = today.plusMonths(1).withDayOfMonth(1);
-		System.out.println("下月第一天: " + firstDayOfNextMonth);
 
-		// 今年第一天
-		LocalDate firstDayOfThisYear = today.withDayOfYear(1);
-		System.out.println("今年第一天: " + firstDayOfThisYear);
+	public static void main(String[] args) {
+		Date date = StringToDate("2023-08-08 09:00:00", AFTConstants.YYYYMMDDHHMMSS);
+		Date date1 = StringToDate("2023-08-12 06:00:00", AFTConstants.YYYYMMDDHHMMSS);
+		long daysBetween = getDaysBetween(date, date1);
+		daysBetween+=1;
+		System.out.println(daysBetween);
+		for (int i = 0; i <daysBetween; i++) {
+			LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+			LocalDate localDate1 = localDate.plusDays(i);
+			System.out.println(localDate1);
+		}
 
-		// 明年第一天
-		LocalDate firstDayOfNextYear = today.plusYears(1).withDayOfYear(1);
-		System.out.println("明年第一天: " + firstDayOfNextYear);
 	}
 
 }

+ 1 - 1
src/main/java/com/goafanti/customer/service/impl/CustomerServiceImpl.java

@@ -1541,7 +1541,7 @@ public class CustomerServiceImpl extends BaseMybatisDao<UserMapper> implements C
 	@Override
 	public boolean checkOrgCode(String orgCode) {
 		List<OrganizationIdentity> list = organizationIdentityMapper.selectByOrgCode(orgCode);
-		if (!list.isEmpty()&&list.size()>1)return true;
+		if (!list.isEmpty())return true;
 		return false;
 	}
 

+ 50 - 40
src/main/java/com/goafanti/order/service/impl/OrderChangeServiceImpl.java

@@ -120,21 +120,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		List<TChangeDun> listcd=new ArrayList<>();
 		if (listDun!=null&&!listDun.isEmpty()) {
 			for (OutNewOrderDunBo d : listDun) {
-				TChangeDun cd=new TChangeDun();
-				cd.setOrderNo(d.getOrderNo());
-				cd.setAid(d.getAid());
-				cd.setAppropriationRatio(d.getAppropriationRatio());
-				cd.setCid(ncb.getId());
-				cd.setDid(d.getId());
-				cd.setTid(d.getTid());
-				cd.setProjectType(d.getProjectType());
-				cd.setDunType(d.getDunType());
-				cd.setMoney(d.getMoney());
-				cd.setWaitDay(d.getWaitDay());
-				cd.setStartTime(d.getStartTime());
-				cd.setEffectiveCount(d.getEffectiveCount());
-				cd.setCustomizeTime(d.getCustomizeTime());
-				cd.setCustomizeName(d.getCustomizeName());
+				TChangeDun cd = getChangeDun(d, ncb);
 				listcd.add(cd);
 			}
 			tChangeDunMapper.insertSelectiveList(listcd);
@@ -143,31 +129,7 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 		List<TOrderTaskBo> listTask=tOrderTaskMapper.selectOrderTaskAll(t.getOrderNo(),null);
 		if (listTask!=null&&!listTask.isEmpty()) {
 			for (TOrderTaskBo tt : listTask) {
-				TChangeTask ck=new TChangeTask();
-				ck.setOrderNo(tt.getOrderNo());
-				ck.setCid(ncb.getId());
-				ck.setCommodityId(tt.getCommodityId());
-				ck.setOrderNo(tt.getOrderNo());
-				ck.setCommodityName(tt.getCommodityName());
-				ck.setCommodityPrice(tt.getCommodityPrice());
-				ck.setCommodityQuantity(tt.getCommodityQuantity());
-				ck.setTaskComment(tt.getTaskComment());
-				ck.setSplitStatus(tt.getSplitStatus());
-				ck.setSplitSuper(tt.getSplitSuper());
-				ck.setReceiverName(tt.getReceiverName());
-				ck.setMain(tt.getMain());
-				ck.setTid(tt.getId());
-				ck.setType(0);
-				if(tt.getServiceLife()!=null)ck.setServiceLife(tt.getServiceLife());
-				if(tt.getServiceYear()!=null)		ck.setServiceYear(tt.getServiceYear());
-				if(tt.getYearSum()!=null)	ck.setYearSum(tt.getYearSum());
-				if(tt.getContractTerm()!=null)	ck.setContractTerm(tt.getContractTerm());
-				if(tt.getLastYear()!=null)	ck.setLastYear(tt.getLastYear());
-				if(tt.getLastYearCapital()!=null)	ck.setLastYearCapital(tt.getLastYearCapital());
-				if(tt.getLastYearIncome()!=null)	ck.setLastYearIncome(tt.getLastYearIncome());
-				if (tt.getHtMember()!=null) ck.setHtMember(tt.getHtMember());
-				if (tt.getAdditionalDeduction()!=null) ck.setAdditionalDeduction(tt.getAdditionalDeduction());
-				if (tt.getRdAwardsubsidy()!=null) ck.setRdAwardsubsidy(tt.getRdAwardsubsidy());
+				TChangeTask ck = getChangeTask(tt, ncb);
 				listck.add(ck);
 			}
 			tChangeTaskMapper.insertBatch(listck);
@@ -177,6 +139,54 @@ public class OrderChangeServiceImpl extends BaseMybatisDao<NewOrderChangeMapper>
 	return 1;
 	}
 
+	private TChangeTask getChangeTask(TOrderTaskBo tt, NewOrderChangeBo ncb) {
+		TChangeTask ck=new TChangeTask();
+		ck.setOrderNo(tt.getOrderNo());
+		ck.setCid(ncb.getId());
+		ck.setCommodityId(tt.getCommodityId());
+		ck.setOrderNo(tt.getOrderNo());
+		ck.setCommodityName(tt.getCommodityName());
+		ck.setCommodityPrice(tt.getCommodityPrice());
+		ck.setCommodityQuantity(tt.getCommodityQuantity());
+		ck.setTaskComment(tt.getTaskComment());
+		ck.setSplitStatus(tt.getSplitStatus());
+		ck.setSplitSuper(tt.getSplitSuper());
+		ck.setReceiverName(tt.getReceiverName());
+		ck.setMain(tt.getMain());
+		ck.setTid(tt.getId());
+		ck.setType(0);
+		if(tt.getServiceLife()!=null)ck.setServiceLife(tt.getServiceLife());
+		if(tt.getServiceYear()!=null)		ck.setServiceYear(tt.getServiceYear());
+		if(tt.getYearSum()!=null)	ck.setYearSum(tt.getYearSum());
+		if(tt.getContractTerm()!=null)	ck.setContractTerm(tt.getContractTerm());
+		if(tt.getLastYear()!=null)	ck.setLastYear(tt.getLastYear());
+		if(tt.getLastYearCapital()!=null)	ck.setLastYearCapital(tt.getLastYearCapital());
+		if(tt.getLastYearIncome()!=null)	ck.setLastYearIncome(tt.getLastYearIncome());
+		if (tt.getHtMember()!=null) ck.setHtMember(tt.getHtMember());
+		if (tt.getAdditionalDeduction()!=null) ck.setAdditionalDeduction(tt.getAdditionalDeduction());
+		if (tt.getRdAwardsubsidy()!=null) ck.setRdAwardsubsidy(tt.getRdAwardsubsidy());
+		return ck;
+	}
+
+	private TChangeDun getChangeDun(OutNewOrderDunBo d, NewOrderChangeBo ncb) {
+		TChangeDun cd=new TChangeDun();
+		cd.setOrderNo(d.getOrderNo());
+		cd.setAid(d.getAid());
+		cd.setAppropriationRatio(d.getAppropriationRatio());
+		cd.setCid(ncb.getId());
+		cd.setDid(d.getId());
+		cd.setTid(d.getTid());
+		cd.setProjectType(d.getProjectType());
+		cd.setDunType(d.getDunType());
+		cd.setMoney(d.getMoney());
+		cd.setWaitDay(d.getWaitDay());
+		cd.setStartTime(d.getStartTime());
+		cd.setEffectiveCount(d.getEffectiveCount());
+		cd.setCustomizeTime(d.getCustomizeTime());
+		cd.setCustomizeName(d.getCustomizeName());
+		return cd;
+	}
+
 	/*
 	 * 新增审核流程中的
 	 */

+ 6 - 6
src/main/resources/props/config_local.properties

@@ -1,18 +1,18 @@
 dev.name=local
 jdbc.driverClassName=com.mysql.jdbc.Driver
-kede.version=1.3.40
+kede.version=1.3.42
 static.host=//static.jishutao.com/${kede.version}
 #static.host=//172.16.1.199:3000/${kede.version}
 #static.host=//172.16.1.187/${kede.version}
 #avatar.host=//172.16.1.199:3000
 
-#jdbc.url=jdbc\:mysql://localhost:3306/aft20250313?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+jdbc.url=jdbc\:mysql://localhost:3306/aft20250313?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
 #jdbc.url=jdbc\:mysql://localhost:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
-#jdbc.username=root
-#jdbc.password=123456
-jdbc.url=jdbc:mysql://101.37.32.31:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
 jdbc.username=root
-jdbc.password=aftdev
+jdbc.password=123456
+#jdbc.url=jdbc:mysql://101.37.32.31:3306/aft?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false
+#jdbc.username=root
+#jdbc.password=aftdev
 jdbc.validationQuery=SELECT 'x'
 jdbc.initialSize=3
 jdbc.maxActive=20