|
|
@@ -49,11 +49,8 @@ import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
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;
|
|
|
@@ -709,68 +706,31 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
* 处理订单公出&报销之间数据统计
|
|
|
* @param orderNo
|
|
|
*/
|
|
|
- public void pushOrderPublicReleaseCount(String orderNo) {
|
|
|
+ public TOrderPublicReleaseCount pushOrderPublicReleaseCount(String orderNo) {
|
|
|
//获取所有公出、订单与会员信息
|
|
|
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) {
|
|
|
- LocalDate date = e.getReleaseStart().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
|
|
|
- if (date.isAfter(startDate)&&date.isBefore(endDate)){
|
|
|
+ for (PublicRelease e : list) {
|
|
|
durationCount=durationCount.add(BigDecimal.valueOf(e.getDuration()));
|
|
|
if (!peopleList.contains(e.getAid())){
|
|
|
peopleList.add(e.getAid());
|
|
|
}
|
|
|
count++;
|
|
|
- }
|
|
|
- }
|
|
|
- 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);
|
|
|
- out.setMaxDuration(0d);
|
|
|
- out.setActualDuration(durationCount.doubleValue());
|
|
|
- out.setPeopleCount(peopleList.size());
|
|
|
- out.setFrequency(count);
|
|
|
- out.setSumYear(sumYear);
|
|
|
- pushMaxDuration(t,out,yearSum);
|
|
|
- tOrderPublicReleaseCountMapper.insertSelective(out);
|
|
|
- }else {
|
|
|
- out.setOrderNo(orderNo);
|
|
|
- out.setMaxDuration(0d);
|
|
|
- out.setActualDuration(durationCount.doubleValue());
|
|
|
- out.setPeopleCount(peopleList.size());
|
|
|
- out.setFrequency(count);
|
|
|
- pushMaxDuration(t,out,yearSum);
|
|
|
- tOrderPublicReleaseCountMapper.updateByPrimaryKeySelective(out);
|
|
|
- }
|
|
|
+ TOrderPublicReleaseCount out = null;
|
|
|
+ out=new TOrderPublicReleaseCount();
|
|
|
+ out.setOrderNo(orderNo);
|
|
|
+ out.setMaxDuration(0d);
|
|
|
+ out.setActualDuration(durationCount.doubleValue());
|
|
|
+ out.setPeopleCount(peopleList.size());
|
|
|
+ out.setFrequency(count);
|
|
|
+ pushMaxDuration(t,out);
|
|
|
+ return out;
|
|
|
|
|
|
|
|
|
}
|
|
|
@@ -827,15 +787,10 @@ public class OrderNewServiceImpl extends BaseMybatisDao<TOrderNewMapper> impleme
|
|
|
* 处理订单公出&报销最大公出
|
|
|
* @param t
|
|
|
* @param out
|
|
|
- * @param yearSum
|
|
|
*/
|
|
|
- private void pushMaxDuration(TOrderNewBo t,TOrderPublicReleaseCount out ,int yearSum) {
|
|
|
+ private void pushMaxDuration(TOrderNewBo t,TOrderPublicReleaseCount out ) {
|
|
|
BigDecimal res=BigDecimal.ZERO;
|
|
|
BigDecimal totalAmount=t.getTotalAmount();
|
|
|
- if (yearSum>1){
|
|
|
- totalAmount=totalAmount.divide(BigDecimal.valueOf(yearSum),2, RoundingMode.HALF_UP);
|
|
|
- }
|
|
|
-
|
|
|
int status=1;
|
|
|
if (totalAmount.compareTo(BigDecimal.valueOf(1)) < 0) {
|
|
|
res=BigDecimal.ZERO;
|