package com.xzx.order;
|
|
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.convert.Convert;
|
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.io.FileUtil;
|
import cn.hutool.core.thread.ThreadUtil;
|
import cn.hutool.core.util.NumberUtil;
|
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.json.JSONUtil;
|
import cn.hutool.poi.excel.ExcelReader;
|
import cn.hutool.poi.excel.ExcelUtil;
|
import com.xzx.gc.GcOrderApplication;
|
import com.xzx.gc.common.Result;
|
import com.xzx.gc.common.constant.Constants;
|
import com.xzx.gc.common.utils.BusinessUtil;
|
import com.xzx.gc.common.utils.IdUtils;
|
import com.xzx.gc.common.utils.gdmap.GdMapUtil;
|
import com.xzx.gc.entity.*;
|
import com.xzx.gc.model.dto.GdAreaDto;
|
import com.xzx.gc.order.mapper.*;
|
import org.apache.tomcat.jni.Address;
|
import org.junit.Test;
|
import org.junit.runner.RunWith;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.test.context.ActiveProfiles;
|
import org.springframework.test.context.junit4.SpringRunner;
|
import tk.mybatis.mapper.code.ORDER;
|
import tk.mybatis.mapper.entity.Example;
|
|
import java.io.File;
|
import java.math.BigDecimal;
|
import java.math.RoundingMode;
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.concurrent.CountDownLatch;
|
import java.util.stream.Collectors;
|
|
/**
|
* 专页修复
|
*/
|
@RunWith(SpringRunner.class)
|
@SpringBootTest(classes = {GcOrderApplication.class})
|
@ActiveProfiles(profiles = {"temp"})
|
public class FixTest {
|
|
@Autowired
|
private AddressLevelInfoMapper addressLevelInfoMapper;
|
|
@Autowired
|
private AddressLevelInfoBatchMapper addressLevelInfoBatchMapper;
|
|
@Autowired
|
private OrderDetailMapper orderDetailMapper;
|
|
@Autowired
|
private OrderStorageInfoMapper orderStorageInfoMapper;
|
|
@Autowired
|
private OrderStorageDetailMapper orderStorageDetailMapper;
|
|
@Autowired
|
private IdUtils idUtils;
|
|
@Autowired
|
private OtherUserMapper otherUserMapper;
|
@Autowired
|
private OrderMapper orderMapper;
|
|
@Autowired
|
private OrderItemInfoMapper orderItemInfoMapper;
|
|
// @Test
|
// public void 修复地址层级表的编码(){
|
// String path="d:/AMap_adcode_citycode.xlsx";
|
// ExcelReader reader = ExcelUtil.getReader(FileUtil.file(path));
|
// List<List<Object>> readAll = reader.read();
|
// List<AddressLevelInfo> addressLevelInfos = addressLevelInfoMapper.selectAll();
|
//
|
// List<AddressLevelInfo> list=new ArrayList<>();
|
//
|
// for (AddressLevelInfo addressLevelInfo : addressLevelInfos) {
|
// String level3Name = addressLevelInfo.getLevel3Name();
|
// String level2Name = addressLevelInfo.getLevel2Name();
|
// for (List<Object> objects : readAll) {
|
// if(objects.size()==3) {
|
// String name = (String) objects.get(0);
|
// String adoce = (String) objects.get(1);
|
// String citycode = (String) objects.get(2);
|
// //根据citycode找到名称
|
// String cityName = getcityName(readAll, citycode);
|
//
|
// if (name.equals(level3Name) && cityName.equals(level2Name)) {
|
//
|
// System.out.println("匹配到"+cityName+","+citycode+","+name+","+adoce);
|
// addressLevelInfo.setCitycode(citycode);
|
// addressLevelInfo.setAdcode(adoce);
|
// addressLevelInfoMapper.updateByPrimaryKeySelective(addressLevelInfo);
|
// break;
|
// }
|
// }
|
// }
|
// }
|
//
|
// }
|
|
@Test
|
public void 修复地址层级表的编码2() throws InterruptedException {
|
List<AddressLevelInfo> list=new ArrayList<>();
|
Example example=new Example(AddressLevelInfo.class);
|
// example.createCriteria().andIsNull("adcode");
|
List<AddressLevelInfo> addressLevelInfos = addressLevelInfoMapper.selectByExample(example);
|
CountDownLatch countDownLatch = ThreadUtil.newCountDownLatch(addressLevelInfos.size());
|
for (AddressLevelInfo addressLevelInfo : addressLevelInfos) {
|
|
Runnable callable=()->{
|
AddressLevelInfo addressLevelInfo1 = fixAdd(addressLevelInfo);
|
if(addressLevelInfo1!=null){
|
list.add(addressLevelInfo1);
|
}
|
countDownLatch.countDown();
|
};
|
|
ThreadUtil.execAsync(callable,true);
|
}
|
|
countDownLatch.await();
|
|
if(CollUtil.isNotEmpty(list)) {
|
addressLevelInfoBatchMapper.updateBatchByPrimaryKeySelective(list);
|
}
|
}
|
|
public AddressLevelInfo fixAdd(AddressLevelInfo addressLevelInfo){
|
String level3Name = addressLevelInfo.getLevel3Name();
|
String level2Name = addressLevelInfo.getLevel2Name();
|
|
Result result = GdMapUtil.findByAreaName(level3Name);
|
|
if(result.getCode()==0) {
|
List<GdAreaDto> list = (List<GdAreaDto>) result.getData();
|
if (list.size() == 1) {
|
addressLevelInfo.setCitycode(list.get(0).getCitycode());
|
addressLevelInfo.setAdcode(list.get(0).getAdcode());
|
} else if(list.size()>1) {
|
Result<List<GdAreaDto>> byAreaName = GdMapUtil.findByAreaName(level2Name);
|
if(byAreaName.getCode()==0) {
|
List<GdAreaDto> data = byAreaName.getData();
|
if(data.size()>0) {
|
String citycode = data.get(0).getCitycode();
|
addressLevelInfo.setCitycode(citycode);
|
List<GdAreaDto> collect = list.stream().filter(x -> x.getCitycode().equals(citycode)).collect(Collectors.toList());
|
if (CollUtil.isNotEmpty(collect)) {
|
addressLevelInfo.setAdcode(collect.get(0).getAdcode());
|
} else {
|
System.err.println("匹配市对应区失败" + level2Name + "," + citycode + "==" + JSONUtil.toJsonStr(list));
|
}
|
}else {
|
System.err.println("匹配市失败" + level2Name);
|
}
|
|
}
|
}else {
|
System.err.println("匹配区失败"+level3Name);
|
}
|
|
System.out.println("匹配到"+level2Name+","+addressLevelInfo.getCitycode()+","+level3Name+","+addressLevelInfo.getAdcode());
|
|
if(StrUtil.isNotBlank(addressLevelInfo.getCitycode())&&StrUtil.isNotBlank(addressLevelInfo.getAdcode())){
|
return addressLevelInfo;
|
}
|
|
}
|
|
return null;
|
|
}
|
|
|
private String getcityName(List<List<Object>> readAll,String code){
|
for (List<Object> objects : readAll) {
|
if(objects.size()==3) {
|
String name = (String) objects.get(0);
|
String adoce = (String) objects.get(1);
|
String citycode = (String) objects.get(2);
|
if (citycode.equals(code)) {
|
return name;
|
}
|
}
|
}
|
return "";
|
}
|
|
@Test
|
public void 指定回收员哪些订单入库(){
|
|
System.out.println("start");
|
String receiver="472";
|
Example example=new Example(OrderInfo.class);
|
Example.Criteria criteria = example.createCriteria();
|
criteria.andEqualTo("receiver",receiver);
|
criteria.andEqualTo("orderStatus","4");
|
criteria.andLessThanOrEqualTo("createTime","2019-12-03 23:59:59");
|
List<OrderInfo> orderInfos = orderMapper.selectByExample(example);
|
// List<OrderInfo> orderInfos=new ArrayList<>();
|
//
|
// String s="DD1196275805278306304,DD1196301593952256000,DD1196632895394021376,DD1196639747204841472,DD1196643257531105280,DD1196644437254602752,DD1197073829600559104,DD1197335739881357312,DD1197346586385055744,DD1197352297819144192,DD1197668095540461568,DD1198047754463608832,DD1198170901275869184,DD1198476178009227264,DD1198492224514555904,DD1198808419436462080,DD1198808823960305664,DD1198839269809061888,DD1198857459725369344,DD1199149116035301376,DD1199162750044078080,DD1199189482717446144,DD1199214392185585664,DD1199220954371325952,DD1199231880965259264,DD1199596796792406016,DD1199859477315190784,DD1199869354041278464,DD1199875477645426688,DD1199888299230101504,DD1199954145944141824,DD1199960183762190336,DD1200240149108228096,DD1200244848930717696,DD1200259857106731008,DD1200334622609776640,DD1200573291039948800,DD1200598016130678784,DD1200650205410754560,DD1200974416486465536,DD1200981872696492032,DD1200982805434204160,DD1201052333946044416,DD1201070321717870592,DD1201291665969643520,DD1201342043901788160,DD1201381950401675264,DD1201393463938121728,DD1201655979343740928,DD1201735933238575104,DD1201738093221249024,DD1201743726033108992,DD1201777301650538496,DD1201778550244507648";
|
// String[] split = s.split(",");
|
// for (String s1 : split) {
|
// OrderInfo orderInfo=new OrderInfo();
|
// orderInfo.setOrderId(s1);
|
// orderInfos.add(orderInfo);
|
// }
|
|
BigDecimal money=Constants.MONEY_INIT;
|
BigDecimal weight=Constants.WEIGHT_INIT;
|
|
// if(orderInfos.size()!=54){
|
// System.out.println(orderInfos.size());
|
// return;
|
// }
|
// if(orderInfos.size()!=54)return;
|
|
//订单id
|
List<String> ids=new ArrayList<>();
|
for (OrderInfo orderInfo : orderInfos) {
|
String orderId = orderInfo.getOrderId();
|
OrderDetailInfo orderDetailInfo=new OrderDetailInfo();
|
orderDetailInfo.setOrderId(orderId);
|
OrderDetailInfo orderDetailInfo1 = orderDetailMapper.selectOne(orderDetailInfo);
|
money=NumberUtil.add(money,Convert.toBigDecimal(orderDetailInfo1.getMoney()));
|
weight=NumberUtil.add(weight,Convert.toBigDecimal(orderDetailInfo1.getWeight()));
|
ids.add(orderId);
|
orderDetailInfo1.setStorageUserId("USER1190571142298341376");
|
orderDetailInfo1.setStorageUserName("陈松");
|
orderDetailInfo1.setStorageUserPhone("17788919577");
|
orderDetailInfo1.setStorageMoney(orderDetailInfo1.getMoney());
|
orderDetailMapper.updateByPrimaryKeySelective(orderDetailInfo1);
|
}
|
|
//金额总值
|
String moneyStr = NumberUtil.roundStr(money.toString(), 2, RoundingMode.DOWN);
|
//重量总值
|
String weightStr = NumberUtil.roundStr(weight.toString(), 3, RoundingMode.DOWN);
|
|
|
|
//订单总值
|
String orderIds = StrUtil.join(",",ids);
|
|
|
//添加入库记录
|
OtherUserInfo otherUserInfo = otherUserMapper.selectByPrimaryKey(receiver);
|
OrderStorageInfo orderStorageInfo=new OrderStorageInfo();
|
orderStorageInfo.setStorageUserId("USER1190571142298341376");
|
orderStorageInfo.setStorageStatus(Convert.toShort(0));
|
orderStorageInfo.setStorageUserName("陈松");
|
orderStorageInfo.setStorageUserPhone("17788919577");
|
orderStorageInfo.setSysStorageId(1L);
|
|
orderStorageInfo.setReceiver(receiver);
|
orderStorageInfo.setReceiverAvatar(otherUserInfo.getAvatar());
|
orderStorageInfo.setReceiverPhone(otherUserInfo.getMobilePhone());
|
orderStorageInfo.setReceiverName(otherUserInfo.getNickName());
|
|
orderStorageInfo.setStorageTime(DateUtil.now());
|
orderStorageInfo.setOrderId(orderIds);
|
String storageId=idUtils.generate("RK",2);
|
orderStorageInfo.setStorageId(storageId);
|
|
orderStorageInfo.setRecycleMoney(Convert.toBigDecimal(moneyStr));
|
orderStorageInfo.setStorageMoney(Convert.toBigDecimal(moneyStr));
|
orderStorageInfo.setStorageWeight(weightStr);
|
orderStorageInfo.setRecycleWeight(weightStr);
|
orderStorageInfoMapper.insertSelective(orderStorageInfo);
|
|
|
//添加入库详情
|
|
for (String id : ids) {
|
OrderItemInfo orderItemInfo=new OrderItemInfo();
|
orderItemInfo.setOrderId(id);
|
List<OrderItemInfo> select = orderItemInfoMapper.select(orderItemInfo);
|
for (OrderItemInfo itemInfo : select) {
|
OrderStorageDetailInfo orderStorageDetailInfo=new OrderStorageDetailInfo();
|
orderStorageDetailInfo.setStorageId(storageId);
|
orderStorageDetailInfo.setFlag("1");
|
orderStorageDetailInfo.setItemType(itemInfo.getItemType());
|
orderStorageDetailInfo.setWeight(Convert.toBigDecimal(itemInfo.getWeight()));
|
orderStorageDetailInfo.setMoney(itemInfo.getMoney());
|
OrderStorageDetailInfo orderStorageDetailInfo2=new OrderStorageDetailInfo();
|
BeanUtil.copyProperties(orderStorageDetailInfo,orderStorageDetailInfo2);
|
orderStorageDetailInfo2.setFlag("2");
|
orderStorageDetailMapper.insertSelective(orderStorageDetailInfo);
|
orderStorageDetailMapper.insertSelective(orderStorageDetailInfo2);
|
}
|
|
OrderInfo orderInfo=new OrderInfo();
|
orderInfo.setOrderId(id);
|
orderInfo.setOrderStatus("5");
|
orderMapper.updateByPrimaryKeySelective(orderInfo);
|
}
|
|
System.out.println("success");
|
|
|
|
}
|
}
|