Commit 668ceffa by 伍思炜

导出移动订单清单2.0

parent f5807ce8
......@@ -233,4 +233,5 @@ public class School implements Serializable {
@TableField("app_key")
private String appKey;
}
......@@ -94,6 +94,8 @@ public interface OrderMapper extends BaseMapper<Order> {
List<BroadBandOrder> selectBroadBandOrderList(Page<BroadBandOrder> page, BroadBandOrder broadBandOrder);
//List<BroadBandOrder> selectBroadBandOrderList(BroadBandOrder broadBandOrder);
//List<Map<String, Object>> selectBroadBandOrderList2(BroadBandOrder bao,String startTime,String endTime);
/**
......
......@@ -3,6 +3,7 @@ package com.winsun.mapper;
import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.winsun.bean.School;
import com.winsun.bean.Schools;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
......@@ -65,4 +66,6 @@ public interface SchoolMapper extends BaseMapper<School> {
int updateSchoolMap(Map<String,Object> map);
int insertNetworkInfo(Map<String,Object> map);
List<Schools> selectHhrSchool();
}
......@@ -7,6 +7,11 @@
select * from hhr_school where sub_name = #{subName} and school_name = #{schoolName}
</select>
<select id="selectHhrSchool" resultType="com.winsun.bean.Schools">
select hus.user_id userId,hs.* FROM hhr_user_school hus LEFT JOIN hhr_school hs
on hs.id = hus.school_id
</select>
<insert id="insertSchoolMap">
INSERT INTO hhr_school
(sub_name,school_name,status,bandproduct_id,net_id,lzgh,lz_user,network_code,network_name,app_id,app_key)
......
......@@ -26,9 +26,11 @@ import com.winsun.service.ISalesListService;
import com.winsun.smsUtils.SendSmsAndMail;
import com.winsun.utils.Constant;
import com.winsun.utils.*;
import com.winsun.utils.ExportExcel;
import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
......@@ -59,6 +61,7 @@ import java.io.*;
import java.net.URLEncoder;
import java.nio.charset.Charset;
import java.security.NoSuchAlgorithmException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.util.*;
......@@ -173,6 +176,7 @@ public class OrderController extends BaseController {
/**
* 修改配送方式
*
* @param id
* @param sendType
* @return
......@@ -186,7 +190,7 @@ public class OrderController extends BaseController {
order.setId(id);
Order databaseOrder = orderMapper.selectById(id);
if(databaseOrder == null) {
if (databaseOrder == null) {
return ResponseData.error("更新配送方式失败,未找到当前订单!");
}
if (StringUtils.isBlank(databaseOrder.getPackageId())) {
......@@ -207,10 +211,10 @@ public class OrderController extends BaseController {
// if ("送货上门".equals(sendType)) {
// order.setOrderStatus("待活体");
// }
}else if(packageInfo.getIsXbCard() == 1){
} else if (packageInfo.getIsXbCard() == 1) {
//预制卡 改为待选号
order.setOrderStatus("待选号");
}else{
} else {
return ResponseData.error("更新配送方式失败,套餐信息有误!");
}
......@@ -225,6 +229,7 @@ public class OrderController extends BaseController {
/**
* 修改iccid
*
* @param id
* @param businessIccid
* @param businessNumber
......@@ -292,9 +297,9 @@ public class OrderController extends BaseController {
String site = order.getSite().toString();
String[] split = null;
if(site.indexOf(" ") != -1) {
if (site.indexOf(" ") != -1) {
split = site.split(" ");
}else{
} else {
split = new String[3];
}
......@@ -341,9 +346,9 @@ public class OrderController extends BaseController {
} else {
return ResponseData.error("更新iccid失败!");
}
}else if ("送货上门".equals(sendTypeOrder.getSendType())){
} else if ("送货上门".equals(sendTypeOrder.getSendType())) {
saveOrder.setOrderStatus("已发货");
if(sendTypeOrder.getUserType().equals("1")) {
if (sendTypeOrder.getUserType().equals("1")) {
saveOrder.setOrderStatus("待受理");
}
Integer integer = orderMapper.updateById(saveOrder);
......@@ -358,7 +363,7 @@ public class OrderController extends BaseController {
}
// 添加操作记录
appMapper.inserOrderHis(sendTypeOrder.getId(), "送货上门中", new Date(), user.getName());
}else{
} else {
ResponseData.error("请先填写配送方式");
}
return ResponseData.success("更新iccid成功!");
......@@ -366,6 +371,7 @@ public class OrderController extends BaseController {
/**
* 同步销售订单
*
* @param orderId
*/
public void syncSalesOrder(String orderId, String orderType) {
......@@ -414,9 +420,9 @@ public class OrderController extends BaseController {
* 修改为异常单
*/
@Permission(menuname = "修改为异常单", value = "setAbnormal", method = RequestMethod.POST)
public ResponseData<String> abnormal(@RequestParam("orderId") String orderId,@RequestParam("errorMsg") String errorMsg) {
public ResponseData<String> abnormal(@RequestParam("orderId") String orderId, @RequestParam("errorMsg") String errorMsg) {
ShiroUser user = getShiroUser();
if (!user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "超级管理员","系统管理员","县分管理员(订单)","受理人员"))) {
if (!user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "超级管理员", "系统管理员", "县分管理员(订单)", "受理人员"))) {
return ResponseData.error("无数据权限");
}
Wrapper wrapper = new EntityWrapper<>();
......@@ -426,7 +432,7 @@ public class OrderController extends BaseController {
dataMapping.put("success_time", new Date());
Integer integer = orderMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMapping), wrapper);
if (integer == 1) {
appMapper.inserOrderHis(orderId, "设置异常单,原因:"+errorMsg, new Date(), user.getName());
appMapper.inserOrderHis(orderId, "设置异常单,原因:" + errorMsg, new Date(), user.getName());
return ResponseData.success("设为异常单成功!");
}
return ResponseData.error("设为异常单失败!");
......@@ -451,7 +457,7 @@ public class OrderController extends BaseController {
* @return
*/
@Permission(menuname = "查询订单信息", value = "list", method = RequestMethod.POST)
public Map<String,Object> listOrder(
public Map<String, Object> listOrder(
@RequestParam(name = "createTimeStart", required = false) String createTimeStart,
@RequestParam(name = "createTimeEnd", required = false) String createTimeEnd,
@RequestParam(name = "successTimeStart", required = false) String successTimeStart,
......@@ -468,16 +474,16 @@ public class OrderController extends BaseController {
@RequestParam(name = "orderStatus", required = false) String orderStatus,
@RequestParam(name = "hehuorenArea", required = false) String hehuorenArea,
@RequestParam(name = "customerName", required = false) String customerName,
@RequestParam(name = "orderId", required = false)String orderId,
@RequestParam(name = "orderId", required = false) String orderId,
@RequestParam(name = "xbOrderId", required = false) String xbOrderId,
@RequestParam(name = "businessPackage", required = false) String businessPackage,
@RequestParam(name = "pageNo", required = false) int pageNo,
@RequestParam(name = "pageSize", required = false) int pageSize) {
Map<String,Object> map = new HashMap<>();
Map<String, Object> map = new HashMap<>();
ShiroUser user = getShiroUser();
if (!user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "超级管理员", "系统管理员", "县分管理员(订单)", "合伙人", "快递公司"))) {
map.put("error","无数据权限");
map.put("error", "无数据权限");
return map;
}
......@@ -491,7 +497,7 @@ public class OrderController extends BaseController {
}
wrapper.isNull("kd_order_id");
wrapper.notIn("user_type",3,5,9,10);
wrapper.notIn("user_type", 3, 5, 9, 10);
wrapper.ge(StringUtils.isNotBlank(createTimeStart), "create_time", createTimeStart);
wrapper.le(StringUtils.isNotBlank(createTimeEnd), "create_time", createTimeEnd);
wrapper.ge(StringUtils.isNotBlank(successTimeStart), "success_time", successTimeStart);
......@@ -500,7 +506,7 @@ public class OrderController extends BaseController {
wrapper.le(StringUtils.isNotBlank(kuaidiTimeEnd), "kuaidi_time", kuaidiTimeEnd);
wrapper.eq(StringUtils.isNotBlank(userType), "user_type", userType);
wrapper.eq(StringUtils.isNotBlank(orderNumber), "order_number", orderNumber);
wrapper.eq(StringUtils.isNotBlank(orderId),"order_id", orderId);
wrapper.eq(StringUtils.isNotBlank(orderId), "order_id", orderId);
wrapper.eq(StringUtils.isNotBlank(xbOrderId), "xb_order_id", xbOrderId);
wrapper.eq(StringUtils.isNotBlank(kapin), "kapin", kapin);
wrapper.eq(StringUtils.isNotBlank(customerName), "customer_name", customerName);
......@@ -514,31 +520,32 @@ public class OrderController extends BaseController {
if (user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "快递公司"))) {
wrapper.in("order_status", "待配送,待活体,已完成");
wrapper.eq("is_delivery","2");
wrapper.eq("is_delivery", "2");
}
wrapper.eq(StringUtils.isNotBlank(orderStatus), "order_status", orderStatus).orderBy("create_time",false);
wrapper.eq(StringUtils.isNotBlank(orderStatus), "order_status", orderStatus).orderBy("create_time", false);
Page<Order> page = new Page<>(pageNo, pageSize);
List<Order> aPackage = orderMapper.selectPage(page, wrapper);
page.setRecords(aPackage);
if (user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "楼长","成员","受理人员"))) {
map.put("isAbnormal",false);
}else {
map.put("isAbnormal",true);
if (user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "楼长", "成员", "受理人员"))) {
map.put("isAbnormal", false);
} else {
map.put("isAbnormal", true);
}
if (user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "修改身份证","超级管理员"))) {
map.put("isEdit",true);
}else {
map.put("isEdit",false);
if (user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "修改身份证", "超级管理员"))) {
map.put("isEdit", true);
} else {
map.put("isEdit", false);
}
map.put("page",ResponseData.success(page,"查询成功!"));
map.put("page", ResponseData.success(page, "查询成功!"));
return map;
}
/**
* 查询宽带订单
*
* @param broadBandOrder
* @return
*/
......@@ -570,19 +577,19 @@ public class OrderController extends BaseController {
* @return
*/
@Permission(menuname = "编辑订单", value = "editOrder", method = RequestMethod.POST)
public ResponseData<String> editOrder(@RequestParam("id") String id,@RequestParam(value = "studentNumber",required = false) String student_number,
@RequestParam(value = "classNumber",required = false) String class_number,@RequestParam(value = "parentName",required = false) String parent_name,
@RequestParam(value = "contactNumber",required = false) String contact_number, @RequestParam(value = "idCard",required = false) String id_card,
@RequestParam(value = "studentCard",required = false) String student_card,@RequestParam(value = "address",required = false) String address,
@RequestParam(value = "site",required = false) String site, @RequestParam(value = "remarks",required = false) String remarks,@RequestParam(value = "orderStatus",required = false) String order_status) {
public ResponseData<String> editOrder(@RequestParam("id") String id, @RequestParam(value = "studentNumber", required = false) String student_number,
@RequestParam(value = "classNumber", required = false) String class_number, @RequestParam(value = "parentName", required = false) String parent_name,
@RequestParam(value = "contactNumber", required = false) String contact_number, @RequestParam(value = "idCard", required = false) String id_card,
@RequestParam(value = "studentCard", required = false) String student_card, @RequestParam(value = "address", required = false) String address,
@RequestParam(value = "site", required = false) String site, @RequestParam(value = "remarks", required = false) String remarks, @RequestParam(value = "orderStatus", required = false) String order_status) {
ShiroUser user = getShiroUser();
if (!user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "超级管理员","系统管理员", "县分管理员(订单)", "修改身份证"))) {
if (!user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "超级管理员", "系统管理员", "县分管理员(订单)", "修改身份证"))) {
ResponseData.error("无权限修改订单");
}
List<Map<String, Object>> hhrOrderId = orderMapper.findHhrOrderId(id);
if(hhrOrderId.size()!=1){
if (hhrOrderId.size() != 1) {
return ResponseData.error("无数据查询");
}
......@@ -608,7 +615,7 @@ public class OrderController extends BaseController {
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fos != null){
if (fos != null) {
try {
fos.close();
} catch (IOException e) {
......@@ -625,46 +632,46 @@ public class OrderController extends BaseController {
Wrapper<Order> wrapper = new EntityWrapper<>();
wrapper.eq("id", id);
Map<String, Object> dataMapping = new HashMap<>();
dataMapping.put("update_time",new Date());
if(StringUtils.isNoneBlank(student_number) && !student_number.equals(hhrOrderId.get(0).get("student_number"))){
dataMapping.put("student_number",student_number);
sf.append(",用户学号由"+order.get("student_number")+"修改为"+student_number);
dataMapping.put("update_time", new Date());
if (StringUtils.isNoneBlank(student_number) && !student_number.equals(hhrOrderId.get(0).get("student_number"))) {
dataMapping.put("student_number", student_number);
sf.append(",用户学号由" + order.get("student_number") + "修改为" + student_number);
}
if(StringUtils.isNoneBlank(class_number) && !class_number.equals(hhrOrderId.get(0).get("class_number"))){
dataMapping.put("class_number",class_number);
sf.append(",用户班级由"+order.get("class_number")+"修改为"+class_number);
if (StringUtils.isNoneBlank(class_number) && !class_number.equals(hhrOrderId.get(0).get("class_number"))) {
dataMapping.put("class_number", class_number);
sf.append(",用户班级由" + order.get("class_number") + "修改为" + class_number);
}
if(StringUtils.isNoneBlank(parent_name) && !parent_name.equals(hhrOrderId.get(0).get("parent_name"))){
dataMapping.put("parent_name",parent_name);
sf.append(",用户家长姓名由"+order.get("parent_name")+"修改为"+parent_name);
if (StringUtils.isNoneBlank(parent_name) && !parent_name.equals(hhrOrderId.get(0).get("parent_name"))) {
dataMapping.put("parent_name", parent_name);
sf.append(",用户家长姓名由" + order.get("parent_name") + "修改为" + parent_name);
}
if(StringUtils.isNoneBlank(contact_number) && !contact_number.equals(hhrOrderId.get(0).get("contact_number"))){
dataMapping.put("contact_number",contact_number);
sf.append(",联系号码由"+order.get("contact_number")+"修改为"+contact_number);
if (StringUtils.isNoneBlank(contact_number) && !contact_number.equals(hhrOrderId.get(0).get("contact_number"))) {
dataMapping.put("contact_number", contact_number);
sf.append(",联系号码由" + order.get("contact_number") + "修改为" + contact_number);
}
if(StringUtils.isNoneBlank(id_card) && !id_card.equals(hhrOrderId.get(0).get("id_card"))){
dataMapping.put("id_card",id_card);
sf.append(",身份证号由"+order.get("id_card")+"修改为"+id_card);
if (StringUtils.isNoneBlank(id_card) && !id_card.equals(hhrOrderId.get(0).get("id_card"))) {
dataMapping.put("id_card", id_card);
sf.append(",身份证号由" + order.get("id_card") + "修改为" + id_card);
}
if(StringUtils.isNoneBlank(address) && !address.equals(hhrOrderId.get(0).get("address"))){
dataMapping.put("address",address);
sf.append(",地址由"+order.get("address")+"修改为"+address);
if (StringUtils.isNoneBlank(address) && !address.equals(hhrOrderId.get(0).get("address"))) {
dataMapping.put("address", address);
sf.append(",地址由" + order.get("address") + "修改为" + address);
}
if(StringUtils.isNoneBlank(site) && !site.equals(hhrOrderId.get(0).get("site"))){
dataMapping.put("site",site);
sf.append(",区域由"+order.get("site")+"修改为"+site);
if (StringUtils.isNoneBlank(site) && !site.equals(hhrOrderId.get(0).get("site"))) {
dataMapping.put("site", site);
sf.append(",区域由" + order.get("site") + "修改为" + site);
}
if(StringUtils.isNoneBlank(remarks) && !remarks.equals(hhrOrderId.get(0).get("remarks"))){
dataMapping.put("remarks",remarks);
sf.append(",备注由"+order.get("remarks")+"修改为"+remarks);
if (StringUtils.isNoneBlank(remarks) && !remarks.equals(hhrOrderId.get(0).get("remarks"))) {
dataMapping.put("remarks", remarks);
sf.append(",备注由" + order.get("remarks") + "修改为" + remarks);
}
if(StringUtils.isNoneBlank(order_status) && !order_status.equals(hhrOrderId.get(0).get("order_status"))){
dataMapping.put("order_status",order_status);
sf.append(",订单状态由"+order.get("order_status")+"修改为"+order_status);
if (StringUtils.isNoneBlank(order_status) && !order_status.equals(hhrOrderId.get(0).get("order_status"))) {
dataMapping.put("order_status", order_status);
sf.append(",订单状态由" + order.get("order_status") + "修改为" + order_status);
}
try {
if ("重新下单".equals(order_status)) {
dataMapping.put("order_status","未下单");
dataMapping.put("order_status", "未下单");
// 重新生成码
Wrapper<OrderView> orderViewWrapper = new EntityWrapper<>();
orderViewWrapper.eq("orderSeq", hhrOrderId.get(0).get("kd_order_id"));
......@@ -683,8 +690,8 @@ public class OrderController extends BaseController {
orderViewMapper.updateById(orderView);
}
Integer integer = orderMapper.updateForSet(MyBatisPlusUpdateUtils.toUpdateSet(dataMapping), wrapper);
if(integer == 1){
orderMapper.inserOrderHis(id,"用户资料修改:"+sf.toString(),new Date(),user.getName());
if (integer == 1) {
orderMapper.inserOrderHis(id, "用户资料修改:" + sf.toString(), new Date(), user.getName());
return ResponseData.success("编辑完毕!");
}
......@@ -726,11 +733,13 @@ public class OrderController extends BaseController {
}
Map<String, Object> map = new HashMap<>();
ShiroUser user = getShiroUser();
Integer id = user.getId();
List<String> roleNames = user.getRoleNames();
// 添加查询权限
List<Integer> userIds = hhrUserService.getUserIds(user.getId(), user.getRoleNames());
map.put("userId", user.getId());
map.put("userName", user.getName());
map.put("userIds",userIds);
map.put("userIds", userIds);
if (StringUtils.isNotBlank(createTimeStart)) {
map.put("createTimeStart", createTimeStart);
}
......@@ -781,7 +790,7 @@ public class OrderController extends BaseController {
if (user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "快递公司"))) {
// 快递员仅能导出 新用户办理、待配送、分公司配送订单
map.put("userType",0);
map.put("userType", 0);
map.put("orderStatus", "待配送");
map.put("isDelivery", 2);
}
......@@ -796,61 +805,135 @@ public class OrderController extends BaseController {
return ResponseData.success("订单导出正在队列排队执行中,稍后请在下载列表下载!");
}
/**
* 移动订单清单写到 Excel文件
* @param map
*/
public void ExportOrderView(Map<String, Object> map) {
ShiroUser user = getShiroUser();
// 添加查询权限
List<Integer> userIds = hhrUserService.getUserIds(user.getId(), user.getRoleNames());
EntityWrapper<Order> wrapper = new EntityWrapper();
wrapper.setSqlSelect("customer_name, business_number, order_status, create_time, " +
"hehuoren_id,hehuoren_area, hehuoren_school, hehuoren_name, hehuoren_phone, " +
"supervisor_name, user_type, kapin, business_package, contact_number, order_number, xb_order_id, order_id, site, address, " +
"is_delivery, company, kuaidi_order, business_iccid, kuaidi_time, success_time, userSchool, student_card_check_status, " +
"parent_name, student_number, class_number");
wrapper.notIn("user_type", "3,5,9,10");
if (userIds.size() != 0) {
wrapper.in("hehuoren_id", userIds);
}
wrapper.isNull("kd_order_id");
map.put("createTimeStart","123");
WrapperUtil.wrapperGe(wrapper, map,"createTimeStart","create_time");
WrapperUtil.wrapperLe(wrapper, map,"createTimeEnd","create_time");
WrapperUtil.wrapperGe(wrapper, map,"successTimeStart","success_time");
WrapperUtil.wrapperLe(wrapper, map,"successTimeEnd","success_time");
WrapperUtil.wrapperGe(wrapper, map,"kuaidiTimeStart","kuaidi_time");
WrapperUtil.wrapperLe(wrapper, map,"kuaidiTimeEnd","kuaidi_time");
WrapperUtil.wrapperEq(wrapper, map,"userType","user_type");
WrapperUtil.wrapperEq(wrapper, map,"orderNumber","order_number");
WrapperUtil.wrapperEq(wrapper, map,"hehuorenArea","hehuoren_area");
WrapperUtil.wrapperEq(wrapper, map,"customerName","customer_name");
WrapperUtil.wrapperEq(wrapper, map,"businessNumber","business_number");
WrapperUtil.wrapperEq(wrapper, map,"contactNumber","contact_number");
WrapperUtil.wrapperEq(wrapper, map,"hehuorenSchool","hehuoren_school");
WrapperUtil.wrapperLike(wrapper, map,"hehuorenName","hehuoren_name");
WrapperUtil.wrapperLike(wrapper, map,"businessPackage","business_package");
WrapperUtil.wrapperEq(wrapper, map,"orderStatus","order_status");
WrapperUtil.wrapperEq(wrapper, map,"isDelivery","is_delivery");
wrapper.orderBy("create_time", false);
List<Map<String, Object>> Orders = orderMapper.selectMaps(wrapper);
//ServletOutputStream os = null;
School school = new School();
List<Schools> school1 = schoolMapper.selectHhrSchool();
HashMap<String, Schools> schools = new HashMap<>();
for (Schools school2 : school1) {
schools.put(school2.getUserId(), school2);
}
for (Map<String, Object> maps : Orders) {
//String schoolId = schoolMapper.selectSchoolIdByUserId(maps.get("hehuoren_id").toString());
//school = schoolMapper.selectById(schoolId);
schools.get(maps.get("hehuoren_id").toString());
maps.put("lz_user", school.getLzUser());
maps.put("lzgh", school.getLzgh());
String userTypeSrt = UserType.findById(maps.get("user_type").toString()).getName();
maps.put("user_type", userTypeSrt);
if (maps.get("is_delivery") != null && StringUtils.isNotBlank(maps.get("is_delivery").toString())) {
String isDeliveryStr = DeliveryType.findById(maps.get("is_delivery").toString()).getName();
maps.put("is_delivery", isDeliveryStr);
}
if (maps.get("student_card_check_status") != null && StringUtils.isNotBlank(maps.get("student_card_check_status").toString())) {
String studentCardCheckStatusStr = ExamineType.findById(maps.get("student_card_check_status").toString()).getName();
maps.put("student_card_check_status", studentCardCheckStatusStr);
}
}
try {
TreeNode treeNode = TreeNodeData.getMoveOrder("移动订单清单");
XSSFWorkbook workbook = ExcelTreeNodeHelper.getWorkbook(treeNode, Orders);
ExportExcel.toDownLoad(workbook, getHttpServletRequest(), getHttpServletResponse(), "移动订单清单");
} catch (Exception e) {
log.error("文件出错!" + e.getMessage(), e);
}
}
public void ExportOrderView2(Map<String, Object> map) {
String createTimeStart = "";
if(map.containsKey("createTimeStart")){
if (map.containsKey("createTimeStart")) {
createTimeStart = map.get("createTimeStart").toString();
}
String createTimeEnd = "";
if(map.containsKey("createTimeEnd")){
if (map.containsKey("createTimeEnd")) {
createTimeEnd = map.get("createTimeEnd").toString();
}
String successTimeStart = "";
if(map.containsKey("successTimeStart")){
if (map.containsKey("successTimeStart")) {
successTimeStart = map.get("successTimeStart").toString();
}
String successTimeEnd = "";
if(map.containsKey("successTimeEnd")){
if (map.containsKey("successTimeEnd")) {
successTimeEnd = map.get("successTimeEnd").toString();
}
String kuaidiTimeStart = "";
if(map.containsKey("kuaidiTimeStart")){
if (map.containsKey("kuaidiTimeStart")) {
kuaidiTimeStart = map.get("kuaidiTimeStart").toString();
}
String kuaidiTimeEnd = "";
if(map.containsKey("kuaidiTimeEnd")) {
if (map.containsKey("kuaidiTimeEnd")) {
kuaidiTimeEnd = map.get("kuaidiTimeEnd").toString();
}
String userType = "";
if(map.containsKey("userType")){
if (map.containsKey("userType")) {
userType = map.get("userType").toString();
}
String orderNumber = "";
if(map.containsKey("orderNumber")){
if (map.containsKey("orderNumber")) {
orderNumber = map.get("orderNumber").toString();
}
String customerName = "";
if(map.containsKey("customerName")){
if (map.containsKey("customerName")) {
customerName = map.get("customerName").toString();
}
String businessNumber = "";
if(map.containsKey("businessNumber")){
if (map.containsKey("businessNumber")) {
businessNumber = map.get("businessNumber").toString();
}
String contactNumber = "";
if(map.containsKey("contactNumber")){
if (map.containsKey("contactNumber")) {
contactNumber = map.get("contactNumber").toString();
}
String hehuorenSchool = "";
if(map.containsKey("hehuorenSchool")){
if (map.containsKey("hehuorenSchool")) {
hehuorenSchool = map.get("hehuorenSchool").toString();
}
String hehuorenName = "";
if(map.containsKey("hehuorenName")){
if (map.containsKey("hehuorenName")) {
hehuorenName = map.get("hehuorenName").toString();
}
String orderStatus = "";
if(map.containsKey("orderStatus")){
if (map.containsKey("orderStatus")) {
orderStatus = map.get("orderStatus").toString();
}
String hehuorenArea = "";
......@@ -881,7 +964,7 @@ public class OrderController extends BaseController {
"supervisor_name, user_type, kapin, business_package, contact_number, order_number, xb_order_id, order_id, site, address, " +
"is_delivery, company, kuaidi_order, business_iccid, kuaidi_time, success_time, userSchool, student_card_check_status, " +
"parent_name, student_number, class_number");
wrapper.notIn( "user_type", "3,5,9,10");
wrapper.notIn("user_type", "3,5,9,10");
if (userIds.size() != 0) {
wrapper.in("hehuoren_id", userIds);
}
......@@ -905,7 +988,7 @@ public class OrderController extends BaseController {
wrapper.like(StringUtils.isNotBlank(businessPackage), "business_package", businessPackage, SqlLike.DEFAULT);
wrapper.eq(StringUtils.isNotBlank(orderStatus), "order_status", orderStatus);
wrapper.eq(StringUtils.isNotBlank(isDelivery), "is_delivery", isDelivery);
wrapper.orderBy("create_time",false);
wrapper.orderBy("create_time", false);
List<Map<String, Object>> Orders = orderMapper.selectMaps(wrapper);
List<String> tops = new ArrayList<>();
tops.add("客户姓名");
......@@ -1013,20 +1096,28 @@ public class OrderController extends BaseController {
//数据
School school = new School();
int rowIndex = row.getRowNum();
List<Schools> school1 = schoolMapper.selectHhrSchool();
HashMap<String, Schools> schools = new HashMap<>();
for (Schools school2 : school1) {
schools.put(school2.getUserId(), school2);
}
for (Map<String, Object> maps : Orders) {
String schoolId = schoolMapper.selectSchoolIdByUserId(maps.get("hehuoren_id").toString());
school = schoolMapper.selectById(schoolId);
maps.put("lz_user",school.getLzUser());
maps.put("lzgh",school.getLzgh());
/*String schoolId = schoolMapper.selectSchoolIdByUserId(maps.get("hehuoren_id").toString());
school = schoolMapper.selectById(schoolId);*/
schools.get(maps.get("hehuoren_id").toString());
maps.put("lz_user", school.getLzUser());
maps.put("lzgh", school.getLzgh());
String userTypeSrt = UserType.findById(maps.get("user_type").toString()).getName();
maps.put("user_type",userTypeSrt);
if(maps.get("is_delivery") != null && StringUtils.isNotBlank(maps.get("is_delivery").toString())){
maps.put("user_type", userTypeSrt);
if (maps.get("is_delivery") != null && StringUtils.isNotBlank(maps.get("is_delivery").toString())) {
String isDeliveryStr = DeliveryType.findById(maps.get("is_delivery").toString()).getName();
maps.put("is_delivery",isDeliveryStr);
maps.put("is_delivery", isDeliveryStr);
}
if(maps.get("student_card_check_status") != null && StringUtils.isNotBlank(maps.get("student_card_check_status").toString())) {
if (maps.get("student_card_check_status") != null && StringUtils.isNotBlank(maps.get("student_card_check_status").toString())) {
String studentCardCheckStatusStr = ExamineType.findById(maps.get("student_card_check_status").toString()).getName();
maps.put("student_card_check_status",studentCardCheckStatusStr);
maps.put("student_card_check_status", studentCardCheckStatusStr);
}
final XSSFRow rowdata = sheet.createRow(++rowIndex);
......@@ -1048,18 +1139,21 @@ public class OrderController extends BaseController {
log.error("文件出错!" + e.getMessage(), e);
} finally {
if (workbook != null) {
try{
try {
workbook.close();
}catch(Exception e) {}
} catch (Exception e) {
}
}
if (os != null) {
try{
try {
os.close();
}catch(Exception e) {}
} catch (Exception e) {
}
}
}
}
@Permission(menuname = "一人一码统计数据", value = "getHhrOrderInfo", method = RequestMethod.POST)
public ResponseData<List<YrymReport>> getHhrOrderInfo(String startTime, String endTime) {
List<YrymReport> subNameList = getReportNum(startTime, endTime);
......@@ -1099,19 +1193,19 @@ public class OrderController extends BaseController {
if (excelWriter != null) {
try {
excelWriter.finish();
}catch(Exception e) {
} catch (Exception e) {
}
}
if (outputStream != null) {
try{
try {
outputStream.flush();
}catch(Exception e) {
} catch (Exception e) {
}
}
if (in != null) {
try{
try {
in.close();
}catch(Exception e) {
} catch (Exception e) {
}
}
}
......@@ -1212,7 +1306,7 @@ public class OrderController extends BaseController {
if (!StringUtils.endsWithAny(file.getOriginalFilename(), "xlsx", "xls")) {
return ResponseData.error("手工上传数据仅支持Excel文件,其他格式不支持!");
}
if ( (double)file.getSize()/1048576 > 100) {
if ((double) file.getSize() / 1048576 > 100) {
return ResponseData.error("文件过大,无法上传");
}
ShiroUser user = getShiroUser();
......@@ -1316,9 +1410,9 @@ public class OrderController extends BaseController {
}
Integer integer = null;
if (StringUtils.isNotBlank(acceptComment)) {
integer = orderMapper.updateOrderSUByOrderNumberIsNotNull(orderNumber, orderStatus, acceptName, acceptResult, acceptComment, acceptDate,successTime);
integer = orderMapper.updateOrderSUByOrderNumberIsNotNull(orderNumber, orderStatus, acceptName, acceptResult, acceptComment, acceptDate, successTime);
} else {
integer = orderMapper.updateOrderSUByOrderNumberIsNull(orderNumber, orderStatus, acceptName, acceptResult, acceptDate,successTime);
integer = orderMapper.updateOrderSUByOrderNumberIsNull(orderNumber, orderStatus, acceptName, acceptResult, acceptDate, successTime);
}
if (integer == 1) {
......@@ -1345,7 +1439,7 @@ public class OrderController extends BaseController {
if (!StringUtils.endsWithAny(file.getOriginalFilename(), "xlsx", "xls")) {
return ResponseData.error("手工上传数据仅支持Excel文件,其他格式不支持!");
}
if ( (double)file.getSize()/1048576 > 100) {
if ((double) file.getSize() / 1048576 > 100) {
return ResponseData.error("文件过大,无法上传");
}
ShiroUser user = getShiroUser();
......@@ -1465,13 +1559,13 @@ public class OrderController extends BaseController {
}
if (user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "快递公司"))) {
wrapper.eq("order_status", "待配送");
wrapper.eq("is_delivery","2"); //只能更新分公司配送订单
wrapper.eq("is_delivery", "2"); //只能更新分公司配送订单
}
List<Order> orders = orderMapper.selectList(wrapper);
if (orders != null && orders.size() == 1) {
order = orders.get(0);
}else{
} else {
error.append("第" + (i + 1) + "行的更新失败,");
continue;
}
......@@ -1490,16 +1584,16 @@ public class OrderController extends BaseController {
Integer integer = null;
if (StringUtils.isBlank(company) || StringUtils.isBlank(kuaidiOrder)) {
if(successTime == null){
if (successTime == null) {
integer = orderMapper.updateOrderKDNull(orderNumber, sendType, orderStatus);
}else {
integer = orderMapper.updateOrderKDIsNullByTime(orderNumber, sendType, orderStatus,successTime);
} else {
integer = orderMapper.updateOrderKDIsNullByTime(orderNumber, sendType, orderStatus, successTime);
}
} else {
if(successTime == null){
integer = orderMapper.updateOrderKDNotNull(orderNumber, company, kuaidiOrder, sendType, orderStatus,kuaidiTime,businessIccid);
}else {
integer = orderMapper.updateOrderKDIsNotNullByTime(orderNumber, company, kuaidiOrder, sendType, orderStatus,successTime,kuaidiTime,businessIccid);
if (successTime == null) {
integer = orderMapper.updateOrderKDNotNull(orderNumber, company, kuaidiOrder, sendType, orderStatus, kuaidiTime, businessIccid);
} else {
integer = orderMapper.updateOrderKDIsNotNullByTime(orderNumber, company, kuaidiOrder, sendType, orderStatus, successTime, kuaidiTime, businessIccid);
}
// 发送短信
SendSmsAndMail.sendSms2(order.getContactNumber(), company, kuaidiOrder, "11");
......@@ -1507,9 +1601,9 @@ public class OrderController extends BaseController {
if (integer == 1) {
number++;
String id = orderMapper.selectIdByOrderNumber(orderNumber);
if("快递".equals(sendType)) {
if ("快递".equals(sendType)) {
appMapper.inserOrderHis(id, "发货中,快递公司:" + company + ",快递单号:" + kuaidiOrder, new Date(), user.getName());
}else{
} else {
appMapper.inserOrderHis(id, "发货中,快递方式:" + sendType, new Date(), user.getName());
}
} else {
......@@ -1614,14 +1708,14 @@ public class OrderController extends BaseController {
String businessNumber = map.get("b").toString();
String iccid = map.get("c").toString();
List<Order> orderByNumber = orderMapper.selectOrderIdByOrderNumber(orderNumber);
if(orderByNumber == null){
if (orderByNumber == null) {
error.append("没找到对应的合伙人");
return ResponseData.error(error.toString(), "导入失败");
}
String phone = orderByNumber.get(0).getBusinessNumber();
if (businessNumber.equals(orderByNumber.get(0).getBusinessNumber())){
if (businessNumber.equals(orderByNumber.get(0).getBusinessNumber())) {
Order dataOrder = new Order();
dataOrder.setId(orderByNumber.get(0).getId());
dataOrder.setBusinessNumber(String.valueOf(businessNumber));
......@@ -1645,8 +1739,8 @@ public class OrderController extends BaseController {
int ysm = Integer.parseInt(partnerById.get("ysm").toString());
Map<String, Object> ysmById = orderMapper.findYsmById(ysm);
map1.put("ysmUser",ysmById.get("user_name"));
map1.put("sign",ysmById.get("sign"));
map1.put("ysmUser", ysmById.get("user_name"));
map1.put("sign", ysmById.get("sign"));
map1.put("idCardUrl1", orderData.getIdCardz());
map1.put("idCardUrl2", orderData.getIdCardf());
......@@ -1669,13 +1763,13 @@ public class OrderController extends BaseController {
String[] split = site.split(" ");
map1.put("sheng",split[0]);
map1.put("shi",split[1]);
map1.put("xian",split[2]);
map1.put("sheng", split[0]);
map1.put("shi", split[1]);
map1.put("xian", split[2]);
map1.put("address",orderData.getAddress());
map1.put("address", orderData.getAddress());
String result="";
String result = "";
result = sendOrder(map1);
JSONObject resultDataJson = JSONObject.fromObject(result);
......@@ -1687,12 +1781,12 @@ public class OrderController extends BaseController {
order.setSendType("快递");
order.setOrderStatus("审核中");
order.setOrderId(orderNum);
}else{
} else {
order.setOrderStatus("异常单");
String msg = resultDataJson.getString("msg");
order.setMsg(msg);
try {
orderMapper.inserOrderHis(id,"审核失败",new Date(),"智能平台审核");
orderMapper.inserOrderHis(id, "审核失败", new Date(), "智能平台审核");
} catch (Exception e) {
e.printStackTrace();
}
......@@ -1707,7 +1801,7 @@ public class OrderController extends BaseController {
}
});
}
number+=num;
number += num;
} catch (Exception e) {
e.printStackTrace();
}
......@@ -1726,7 +1820,7 @@ public class OrderController extends BaseController {
} else {
}
}else {
} else {
error.append("第" + (i + 1) + "行中数据更新失败(订单编号与办理号码不一致),");
}
}
......@@ -1802,11 +1896,11 @@ public class OrderController extends BaseController {
Map<String, Object> temp = listMap.get(i);
accountSet.add((String) temp.get("a"));
stringBuffer = new StringBuffer(temp.get("b").toString());
if(!("已完成".equals(stringBuffer.toString()) || "异常单".equals(stringBuffer.toString()))){
if (!("已完成".equals(stringBuffer.toString()) || "异常单".equals(stringBuffer.toString()))) {
return ResponseData.error("文件中订单状态格式有误!");
}
}
if (accountSet.size()+1 != size) {
if (accountSet.size() + 1 != size) {
return ResponseData.error("文件中有重复的办理号码,请确认办理号码不能重复!");
}
} catch (Exception e) {
......@@ -1822,33 +1916,33 @@ public class OrderController extends BaseController {
String businessNumber = map.get("a").toString();
String orderStatus = map.get("b").toString();
Wrapper<Order> wrapper = new EntityWrapper();
wrapper.eq(StringUtils.isNotBlank(businessNumber),"business_number",businessNumber);
wrapper.eq("kapin","5G加装包");
wrapper.eq("user_type","1");
wrapper.eq("order_status","待受理");
wrapper.eq(StringUtils.isNotBlank(businessNumber), "business_number", businessNumber);
wrapper.eq("kapin", "5G加装包");
wrapper.eq("user_type", "1");
wrapper.eq("order_status", "待受理");
List<Order> orderByNumber = orderMapper.selectList(wrapper);
if(orderByNumber.size()==0){
if (orderByNumber.size() == 0) {
continue;
}
Date date = new Date();
Order dataOrder = new Order();
dataOrder.setId(orderByNumber.get(0).getId());
dataOrder.setOrderStatus(orderStatus);
dataOrder.setAcceptComment("批量受理:"+orderStatus);
dataOrder.setAcceptComment("批量受理:" + orderStatus);
dataOrder.setAcceptName(user.getName());
dataOrder.setAcceptDate(date);
if("已完成".equals(orderStatus.toString())){
if ("已完成".equals(orderStatus.toString())) {
dataOrder.setAcceptResult("受理成功");
}else {
} else {
dataOrder.setAcceptResult("受理失败");
}
SalesList sales = new SalesList();
SysUser sysUser = sysUserMapper.selectById(orderByNumber.get(0).getHehuorenId());
try {
integer = orderMapper.update(dataOrder,wrapper);
integer = orderMapper.update(dataOrder, wrapper);
// 新增受理记录
appMapper.inserOrderHis(dataOrder.getId(), "5G加装包批量受理状态:"+orderStatus, date, user.getName());
appMapper.inserOrderHis(dataOrder.getId(), "5G加装包批量受理状态:" + orderStatus, date, user.getName());
} catch (Exception e) {
e.printStackTrace();
}
......@@ -1860,7 +1954,7 @@ public class OrderController extends BaseController {
sales.setAccount(sysUser.getAccount());
sales.setCreateTime(date);
sales.setStatus("5");
sales.setRemark("批量受理:"+orderStatus);
sales.setRemark("批量受理:" + orderStatus);
sales.setSalesSubst(orderByNumber.get(0).getHehuorenArea());
sales.setSalesSchool(orderByNumber.get(0).getHehuorenSchool());
sales.setOrderType("2");
......@@ -2080,6 +2174,7 @@ public class OrderController extends BaseController {
sheet.addValidationData(validation);
return sheet;
}
// 预实名接口发起
public String sendOrder(Map<String, Object> map) {
......@@ -2412,8 +2507,9 @@ public class OrderController extends BaseController {
return resultStr;
}
@Permission(menuname = "更新存量升级订单状态", value = "setUpgradeStatus", method = RequestMethod.POST)
public ResponseData setUpgradeStatus(@RequestParam("orderId")String orderId,@RequestParam("auditType")String auditType,@RequestParam("contentMsg")String contentMsg){
public ResponseData setUpgradeStatus(@RequestParam("orderId") String orderId, @RequestParam("auditType") String auditType, @RequestParam("contentMsg") String contentMsg) {
ShiroUser user = getShiroUser();
// 当前是否有数据权限
boolean hasDataPermission = user.getRoleNames().stream().anyMatch(data -> StringUtils.equalsAny(data, "营业员", "超级管理员"));
......@@ -2423,11 +2519,11 @@ public class OrderController extends BaseController {
Order order = new Order();
Wrapper<Order> wrapper = new EntityWrapper<>();
wrapper.eq("id", orderId);
wrapper.eq("user_type","1");
wrapper.eq("user_type", "1");
order.setAcceptComment(contentMsg);
order.setAcceptName(user.getName());
order.setAcceptDate(new Date());
if("1".equals(auditType)){
if ("1".equals(auditType)) {
order.setAcceptResult("受理成功");
order.setOrderStatus("已完成");
List<Order> orderByNumber = orderMapper.selectList(wrapper);
......@@ -2450,29 +2546,29 @@ public class OrderController extends BaseController {
sales.setDelFlag("0");
sales.setLockState("否");
salesListMapper.insert(sales);
}else {
} else {
order.setOrderStatus("异常单");
order.setAcceptResult("受理失败");
}
appMapper.inserOrderHis(orderId, "受理意见:"+contentMsg, new Date(), user.getName());
appMapper.inserOrderHis(orderId, "受理意见:" + contentMsg, new Date(), user.getName());
orderMapper.update(order, wrapper);
return ResponseData.success();
}
@Permission(menuname = "填写快递单号", value = "setKuanDiData", method = RequestMethod.POST)
public ResponseData setKuanDiData(@RequestParam("orderId")String orderId,
@RequestParam("company")String company,
@RequestParam("kuaidiOrder")String kuaidiOrder){
public ResponseData setKuanDiData(@RequestParam("orderId") String orderId,
@RequestParam("company") String company,
@RequestParam("kuaidiOrder") String kuaidiOrder) {
ShiroUser user = getShiroUser();
if (user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "超级管理员","系统管理员", "县分管理员(订单)","受理人员","楼长","快递公司"))) {
if (user.getRoleNames().stream().anyMatch(roleName -> StringUtils.equalsAny(roleName, "超级管理员", "系统管理员", "县分管理员(订单)", "受理人员", "楼长", "快递公司"))) {
}else{
} else {
return ResponseData.error("无数据权限");
}
Order databaseOrder = orderMapper.selectById(orderId);
Order order = new Order();
if(databaseOrder == null) {
if (databaseOrder == null) {
return ResponseData.error("更新配送方式失败,未找到当前订单!");
}
if (StringUtils.isBlank(databaseOrder.getPackageId())) {
......@@ -2489,14 +2585,14 @@ public class OrderController extends BaseController {
// 小白卡修改为待活体
order.setOrderStatus("待活体");
}else if(packageInfo.getIsXbCard() == 1){
} else if (packageInfo.getIsXbCard() == 1) {
order.setOrderStatus("已完成");
//存销售清单
insertCompleteOrder(databaseOrder);
if ("1".equals(databaseOrder.getUserType())) {
order.setOrderStatus("待受理");
}
}else{
} else {
return ResponseData.error("更新配送方式失败,套餐信息有误!");
}
......@@ -2505,16 +2601,17 @@ public class OrderController extends BaseController {
order.setCompany(company);
order.setKuaidiOrder(kuaidiOrder);
order.setUpdateTime(new Date());
appMapper.inserOrderHis(orderId, "快递公司:"+company+"快递单号:"+kuaidiOrder, new Date(), user.getName());
appMapper.inserOrderHis(orderId, "快递公司:" + company + "快递单号:" + kuaidiOrder, new Date(), user.getName());
orderMapper.update(order, wrapper);
// 发送短信
SendSmsAndMail.sendSms2(databaseOrder.getContactNumber(), company, kuaidiOrder, "11");
return ResponseData.success();
}
// 新用户完成存销售清单
public void insertCompleteOrder(Order order){
try{
public void insertCompleteOrder(Order order) {
try {
SysUser sysUser = sysUserMapper.selectById(order.getHehuorenId());
ShiroUser user = getShiroUser();
Date date = new Date();
......@@ -2542,13 +2639,13 @@ public class OrderController extends BaseController {
salesOrder.setAccount(sysUser.getAccount());
log.info("新用户完成存销售清单:"+salesOrder);
log.info("新用户完成存销售清单:" + salesOrder);
ResponseData<String> stringResponseData = salesListService.addSalesList(salesOrder);
if(stringResponseData.getState() != null && "error".equals(stringResponseData.getState())){
appMapper.inserOrderHis(order.getOrderId(), "新用户完成存销售清单:"+stringResponseData.getMsg(), new Date(), user.getName());
if (stringResponseData.getState() != null && "error".equals(stringResponseData.getState())) {
appMapper.inserOrderHis(order.getOrderId(), "新用户完成存销售清单:" + stringResponseData.getMsg(), new Date(), user.getName());
}
log.info("新用户完成存销售清单:"+order.getOrderId()+":"+stringResponseData);
}catch (Exception e){
log.info("新用户完成存销售清单:" + order.getOrderId() + ":" + stringResponseData);
} catch (Exception e) {
e.printStackTrace();
}
}
......
package com.winsun.utils;
public class DesensitizationRulesUtils {
// 1、联系人及用户姓名:以*代替第二个字。
// 2、联系电话:以*号代替各脱敏字段数据的最后4字符。
// 3、日期(包括出生日期等):以*代替月日期,如2018年1月31日,脱敏显示为2018年**月**日。
// 4、证件号码:月日以*号代替。如身份证1101081970****6593。
// 5、地址(包括证件地址、通讯地址、投递地址、装机地址等):以*号代替各脱敏字段数据的最后4字符。如广州天河区茶山路五山花园12栋A****。
// 6、付费账号:用*号代替各脱敏字段数据的最后4字符。
// 7、鉴权信息(客户密码):用*号代替所有字段数据。
// 8、个人生物识别信息:用*号代替所有字段数据。
private static String replaceChar = "*********************************************************************************";
/**
* 脱敏数据,输入脱敏规则
* type :
* name 联系人及用户姓名
* phone 联系电话
* date 日期(包括出生日期等)
* idCard 证件号码
* address 地址(包括证件地址、通讯地址、投递地址、装机地址等)
* account 付费账号
* token 鉴权信息(客户密码),个人生物识别信息
* @param content
* @param type : name联系人及用户姓名
* @return
*/
public static String desensiteData(String content, String type){
if(content == null || content.trim() == ""){
return "";
}
content = content.trim();
switch (type) {
case "name":
// 联系人及用户姓名:以*代替第二个字。
return desensitizationName(content);
case "phone":
// 联系电话:以*号代替各脱敏字段数据的最后4字符。
return desensitizationPhone(content);
case "date":
// 日期(包括出生日期等):以*代替月日期,如2018年1月31日,脱敏显示为2018年**月**日。
return desensitizationDate(content);
case "idCard":
// 证件号码:月日以*号代替。如身份证1101081970****6593。
return desensitizationIdCard(content);
case "address":
// 地址(包括证件地址、通讯地址、投递地址、装机地址等):以*号代替各脱敏字段数据的最后4字符。如广州天河区茶山路五山花园12栋A****。
return desensitizationAddress(content);
case "account":
// 付费账号:用*号代替各脱敏字段数据的最后4字符。
return desensitizationAccount(content);
case "token":
// 鉴权信息(客户密码):用*号代替所有字段数据。
// 个人生物识别信息:用*号代替所有字段数据。
return desensitizationToken(content);
default:
// 没有找到脱敏类型,不脱敏
return content;
}
}
/**
* 1、联系人及用户姓名:以*代替第二个字。
* @param content
* @return
*/
private static String desensitizationName(String content){
int length = content.length();
//过短直接返回
if (length <=1) {
return content;
}
if(length == 2 ){
return content.replace(content.charAt(1), "*".charAt(0));
}
return content.replace(content.substring(1, length - 1), replaceChar.substring(0, length - 2));
}
/**
* 2、联系电话:以*号代替各脱敏字段数据的最后4字符。
* @param phone
* @return
*/
private static String desensitizationPhone(String phone){
//重置(-)符号
phone = phone.replaceAll("-", "");
int length = phone.length();
//参数长度异常,返回空
if(length < 4){
return "";
}
//手机号码
return phone.substring(0,length - 4) + replaceChar.substring(0, 4);
}
/**
* 3、日期(包括出生日期等):以*代替月日期,如2018年1月31日,脱敏显示为2018年**月**日。
* @param date
* @return
*/
public static String desensitizationDate(String date){
int length = date.length();
//时间格式种类较多,需分开处理
// 日期格式为2018年1月31日
if(date.indexOf("年") > -1 && date.indexOf("月") > -1 && date.indexOf("日") > -1){
date = date.substring(0, date.indexOf("年")+1) + "**月**日 " + date.substring(date.indexOf("日")+1);
}else if(date.split("/").length == 3){
// 日期格式为2020/08/01 或者 2020/08/01 12:12:23
String time = date.split(" ").length > 1 ? " " + date.split(" ")[1] : "";
date = date.split("/")[0] + "/**/**" + time;
}else if(date.split("-").length == 3){
// 日期格式为2020-08-01或者2020-08-01 12:12:23
String time = date.split(" ").length > 1 ? " " + date.split(" ")[1] : "";
date = date.split("-")[0] + "-**-**" + time;
}else{
if(date.length() == 8){
// 日期格式为20200402
date = date.substring(0,4)+ "****";
}
}
return "";
}
/**
* 4、证件号码:月日以*号代替。如身份证1101081970****6593。
* @param idCard
* @return
*/
private static String desensitizationIdCard(String idCard) {
int length = idCard.length();
// 15位的身份证号码:
// 1、1~6位为地区代码。
// 2、7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期。
// 3、第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。
if (length == 15) {
return idCard.substring(0, length - 7) + replaceChar.substring(0, 4) + idCard.substring(length - 3, length);
}
// 18位的身份证号码
// 7~14位为出生年月日
if (length == 18) {
return idCard.substring(0, length - 8) + replaceChar.substring(0, 4) + idCard.substring(length - 4, length);
}
// 其余随便打*
if (length > 4)
return idCard.replace(idCard.substring(4), replaceChar.substring(0, length - 4));
// 参数异常
return "";
}
/**
* 5、地址(包括证件地址、通讯地址、投递地址、装机地址等):以*号代替各脱敏字段数据的最后4字符。如广州天河区茶山路五山花园12栋A****。
* @param address
* @return
*/
private static String desensitizationAddress(String address){
int length = address.length();
if(length < 4){
return address.charAt(0)+"**";
}
//处理最后有()备注的情况,过后更新
//地址
return address.substring(0,length - 4) + replaceChar.substring(0, 4);
}
/**
* 6、付费账号:用*号代替各脱敏字段数据的最后4字符。
* @param account
* @return
*/
private static String desensitizationAccount(String account){
int length = account.length();
if(length < 4){
return account.charAt(0)+"**";
}
//手机号码
return account.substring(0,length - 4) + replaceChar.substring(0, 4);
}
/**
* 7、鉴权信息(客户密码):用*号代替所有字段数据。
* 8、个人生物识别信息:用*号代替所有字段数据。
* @param token
* @return
*/
private static String desensitizationToken(String token){
int length = token.length();
return replaceChar.substring(0, length-1);
}
}
package com.winsun.utils;
import org.apache.commons.io.FileUtils;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* 根据TreeNode生成Exccel表
*
* @author ZERO
*
*/
public class ExcelTreeNodeHelper {
/**
* 获取excel对象
* @param treeNode 表头对象
* @param dataList 数据集
* @return
*/
public static XSSFWorkbook getWorkbook(TreeNode treeNode, List<Map<String, Object>> dataList) {
XSSFWorkbook workBook = getWorkbook(treeNode);// 创建工作本
Sheet sheet = workBook.getSheetAt(0);// 创建工作表
int max = treeNode.getMaxLevel();// 获取最大的层次 n-1
if(dataList==null||dataList.size()==0) {
return workBook;
}
XSSFCellStyle style = workBook.createCellStyle(); // 样式对象
style.setAlignment(HorizontalAlignment.CENTER);// 水平居中
style.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
XSSFFont font = workBook.createFont();
font.setFontName("Arial");
style.setFont(font);
System.out.println("========================================");
List<String> keyList = treeNode.getKeyList();
Map<String, String> desensitizationTypeMap = treeNode.getDesensitizationTypeMap(); //数据脱敏集
Map<String, String> cellFormatMap = treeNode.getCellFormatMap(); //单元格式化
System.out.println(cellFormatMap);
Iterator<Map<String, Object>> it = dataList.iterator();
for (int i = max + 1; it.hasNext(); i++) {
Map dataMap = (Map) it.next();
Iterator<String> it2 = keyList.iterator();
Row row = sheet.createRow(i);
for (int j = 0; it2.hasNext(); j++) {
String key = it2.next();
Object obj = dataMap.get(key);
if (obj == null) {
continue;
}
Cell cell = row.createCell(j);
// style.setAlignment(XSSFCellStyle.ALIGN_LEFT);// 水平左对齐
cell.setCellStyle(style);
if ("null".equals(String.valueOf(obj))) {
cell.setCellValue("");
continue;
}
String dataValue = String.valueOf(obj);
String type = desensitizationTypeMap.get(key);
if(type != null){
dataValue = DesensitizationRulesUtils.desensiteData(dataValue, type);
}
String cellFormat = (String) cellFormatMap.get(key);
if(cellFormat != null){
XSSFCellStyle style1 = workBook.createCellStyle(); // 样式对象
style1.setAlignment(HorizontalAlignment.CENTER);// 水平居中
style1.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
// style1.setAlignment(HorizontalAlignment.ALIGN_LEFT);// 水平左对齐
style1.setFont(font);
XSSFDataFormat df = workBook.createDataFormat();
style1.setDataFormat(df.getFormat(cellFormat));
cell.setCellStyle(style1);
obj = convertDecimal(dataValue);
if(obj instanceof Integer){
cell.setCellValue((Integer) obj);
}else if(obj instanceof Double){
cell.setCellValue((Double) obj);
}else if(obj instanceof BigDecimal){
BigDecimal b = (BigDecimal) obj;
cell.setCellValue(b.doubleValue());
}else {
cell.setCellStyle(style);
cell.setCellValue(dataValue);
}
}else{
cell.setCellStyle(style);
cell.setCellValue(dataValue);
}
}
}
return workBook;
}
/**
* 字符串数字类型转换
* @param dataValue
* @return
*/
public static Object convertDecimal( String dataValue){
//判断整数
String regex="^-?(\\d+)$|^0$";
Pattern pattern= Pattern.compile(regex);
Matcher matcher=pattern.matcher(dataValue);
if(matcher.find()){
return Integer.parseInt(dataValue);
}
//判断小数
regex="^-?([1-9]\\d*\\.?\\d+)$|^-?(0\\.\\d*)$|^0\\.0+$";
pattern= Pattern.compile(regex);
matcher=pattern.matcher(dataValue);
if(matcher.find()){
return Double.parseDouble(dataValue);
}
return dataValue;
}
public static void createSheetData(XSSFWorkbook workBook, TreeNode treeNode, String sheetName, int sheetIndex){
Sheet sheet = workBook.createSheet();// 创建工作表
workBook.setSheetName(sheetIndex, sheetName);
int max = treeNode.getMaxLevel();// 获取最大的层次 n-1
int[] arr = new int[max + 1];// n层
for (int i = 0; i < arr.length; i++) {// 创建行
sheet.createRow(i);// 创建n行表头
arr[i] = 0;
}
setTableHeader(treeNode.getChildList(), sheet, arr);
List dataList = new ArrayList<Object>();
XSSFCellStyle style = workBook.createCellStyle(); // 样式对象
style.setAlignment(HorizontalAlignment.CENTER);// 水平居中
style.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
XSSFFont font = workBook.createFont();
font.setFontName("Arial");
style.setFont(font);
List keyList = treeNode.getKeyList();
Iterator it = dataList.iterator();
for (int i = max + 1; it.hasNext(); i++) {
Map dataMap = (Map) it.next();
Iterator it2 = keyList.iterator();
Row row = sheet.createRow(i);
for (int j = 0; it2.hasNext(); j++) {
Object obj = dataMap.get(it.next());
if (obj == null) {
continue;
}
Cell cell = row.createCell(j);
cell.setCellStyle(style);
if (!"null".equals(String.valueOf(obj))) {
cell.setCellValue(String.valueOf(obj));
} else {
cell.setCellValue("");
}
}
}
}
public static XSSFWorkbook getWorkbook(TreeNode treeNode) {
XSSFWorkbook workBook = new XSSFWorkbook();// 创建工作本
// TreeNode treeNode = TestTree.getTreeNode();
Sheet sheet = workBook.createSheet();// 创建工作表
int max = treeNode.getMaxLevel();// 获取最大的层次 n-1
int[] arr = new int[max + 1];// n层
for (int i = 0; i < arr.length; i++) {// 创建行
sheet.createRow(i);// 创建n行表头
arr[i] = 0;
}
setTableHeader(treeNode.getChildList(), sheet, arr);
return workBook;
}
/**
* 利用递归遍历子数据,向excel填入excel表头
*
* @param childList
* @param sheet
* @param arr
*/
private static void setTableHeader(List<TreeNode> childList, Sheet sheet, int[] arr) {
for (TreeNode node : childList) {
CellRangeAddress cra;
if (node.isLeaf()) {
cra = new CellRangeAddress(node.level, arr.length - 1, arr[node.level],
arr[node.level] + node.leafSize - 1);
if (node.level != arr.length - 1) {
for (int i = node.level + 1; i < arr.length; i++) {
arr[i] += 1;
}
}
} else {// 不是叶子节点
cra = new CellRangeAddress(node.level, node.level, arr[node.level],
arr[node.level] + node.leafSize - 1);
}
if (node.level != arr.length - 1 || arr[node.level] != arr[node.level] + node.leafSize - 1)
sheet.addMergedRegion(cra);// 合并单元格
Row row = sheet.getRow(node.level);
Cell cell = row.createCell(arr[node.level]);
XSSFCellStyle cellStyle = (XSSFCellStyle) sheet.getWorkbook().createCellStyle();// 设置自动换行以及居中样式
short color = (short)node.getColor();
// System.out.println("color:"+color);
if(color != 0){
cellStyle.setFillForegroundColor(color);
cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
}
cellStyle.setWrapText(true);
cellStyle.setAlignment(HorizontalAlignment.CENTER);// 水平居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
cell.setCellStyle(cellStyle);
cell.setCellValue(node.getNodeName());
arr[node.level] += node.leafSize;// 更新X轴指针位置
if (!node.isLeaf()) {
setTableHeader(node.getChildList(), sheet, arr);
}
}
}
/**
* 遍历子数据
* @param childList
* @param sheet
* @param arr
*/
public static void showChildNode(List<TreeNode> childList, XSSFSheet sheet, int [] arr){
for (TreeNode node : childList) {
CellRangeAddress cra;
if(node.isLeaf()){
cra = new CellRangeAddress(node.level, arr.length-1, arr[node.level], arr[node.level]+node.leafSize-1);
if(node.level!=arr.length-1){
for(int i=node.level+1;i<arr.length;i++){
arr[i]+=1;
}
}
}else{//不是叶子节点
cra = new CellRangeAddress(node.level, node.level, arr[node.level], arr[node.level]+node.leafSize-1);
}
sheet.addMergedRegion(cra);
XSSFRow row = sheet.getRow(node.level);
XSSFCell cell = row.createCell(arr[node.level]);
cell.setCellValue(node.getNodeName());
XSSFCellStyle cellStyle = (XSSFCellStyle) sheet.getWorkbook().createCellStyle();
cellStyle.setWrapText(true);
cellStyle.setAlignment(HorizontalAlignment.CENTER);// 水平居中
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);// 垂直居中
cellStyle.setWrapText(true);//自动换行
cell.setCellStyle(cellStyle);
arr[node.level] += node.leafSize;
if(node.getChildList() != null ){
showChildNode(node.getChildList(),sheet,arr);
}
}
}
public static void mergeRow(List<String> keys, List<String> mergeKeys, List<Map<String, Object>> list, XSSFWorkbook workbook, int level){
Sheet sheet = workbook.getSheetAt(0);
if(mergeKeys==null||mergeKeys.isEmpty())
return ;
for(int j=0;j<keys.size();j++){
String key = keys.get(j);
if(!mergeKeys.contains(key)){
continue;
}
mergeKeys.remove(key);
int start = 0;
int end = 0;
int temp = 0;
Map<String, Object> tempMap = list.get(temp);
for(int i=0;i<list.size();i++){
Map m = list.get(i);
if(tempMap.get(key).equals(m.get(key))){
end = i;
if(i==list.size()-1 && end-start>0){
CellRangeAddress ca = new CellRangeAddress(start+level+1, end+level+1, j, j);
sheet.addMergedRegion(ca);
}
}else{
if(end-start>0){
CellRangeAddress ca = new CellRangeAddress(start+level+1, end+level+1, j, j);
sheet.addMergedRegion(ca);
}
tempMap = list.get(i);
start = i;
end = i;
}
}
}
}
public static void export(XSSFWorkbook workbook){
String name = "f:/poi1_test"+Math.round(Math.random()*100)+".xlsx";
File file = new File(name);
try {
file.createNewFile();
// 将Excel内容存盘
FileOutputStream stream = FileUtils.openOutputStream(file);
workbook.write(stream);
stream.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println("完成");
System.out.println(name);
}
}
public static void export(XSSFWorkbook workbook, String name){
String fileName = "f:/" + name + ".xlsx";
File file = new File(fileName);
try {
file.createNewFile();
// 将Excel内容存盘
FileOutputStream stream = FileUtils.openOutputStream(file);
workbook.write(stream);
stream.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
System.out.println("完成");
System.out.println(fileName);
}
}
}
package com.winsun.utils;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class ExportExcel {
private static final Logger logger = LoggerFactory.getLogger(ExportExcel.class);
/**
* 返回输出流
* @param workBook
* @param request
* @param response
* @param FileName
* @throws Exception
*/
public static ResponseEntity<byte[]> toDownLoad(XSSFWorkbook workBook, HttpServletRequest request, HttpServletResponse response, String FileName) throws Exception{
ByteArrayOutputStream os = new ByteArrayOutputStream();
try {
workBook.write(os);
} catch (IOException e) {
logger.error(e.getMessage(), e);
// e.printStackTrace();
}
String realFileName = FileName + ".xlsx";
// 浏览器兼容
String agent = request.getHeader("User-Agent");
if (null != agent) {
agent = agent.toLowerCase();
if (agent.indexOf("firefox") != -1) {
realFileName = new String(URLDecoder.decode(realFileName, "UTF-8").getBytes(), "iso-8859-1");
} else {
realFileName = java.net.URLEncoder.encode(realFileName, "UTF-8");
}
}
byte[] content = os.toByteArray();
// 设置返回文件大小
response.addHeader("content-length",os.size() + "");
InputStream is = new ByteArrayInputStream(content);
// 设置response参数,可以打开下载页面
// response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + realFileName);
ServletOutputStream out = response.getOutputStream();
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(is);
bos = new BufferedOutputStream(out);
byte[] buff = new byte[2048];
int bytesRead;
// Simple read/write loop.
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.write(buff, 0, bytesRead);
}
HttpHeaders headers = new HttpHeaders();
// 设置返回文件参数
headers.add("Content-Type","application/vnd.ms-excel;charset=utf-8");
headers.add("Connection", "close");
headers.add("Content-Disposition",
"attachment;filename="+realFileName);
return new ResponseEntity<byte[]>(buff, headers, HttpStatus.OK);
} catch (final IOException e) {
throw e;
} finally {
if (bis != null){
try {
bis.close();
} catch (IOException e2) {
logger.error(e2.getMessage(),e2);
// e2.printStackTrace();
}
}
if (bos != null){
try {
bos.close();
} catch (IOException e2) {
logger.error(e2.getMessage(), e2);
// e2.printStackTrace();
}
}
}
}
}
package com.winsun.utils;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* 数结构用于保存Excel表头, 主要用于需要合并单元格的表头
*
* @author ZERO
*
*/
public class TreeNode implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int parentId;
private int selfId;
protected int level;
protected int leafSize;//
protected String key;
protected String nodeName;
protected TreeNode parentNode;
protected int color;
protected List<TreeNode> childList;
protected String desensitizationType; //数据脱敏类型
protected Map<String, String> desensitizationTypeMap; //数据脱敏集合
protected String cellFormat; //数据脱敏类型
protected Map<String, String> cellFormatMap; //数据脱敏集合
public TreeNode() {
initChildList();
}
public TreeNode(String name) {
this.setNodeName(name);
initChildList();
}
public TreeNode(String name, TreeNode parentNode) {
this(name);
if (parentNode != null) {
this.setParentNode(parentNode);
this.setParentId(parentNode.selfId);
}
}
public TreeNode(int id, TreeNode parentNode) {
this(null, parentNode);
this.setSelfId(id);
}
public TreeNode(int id, String name, TreeNode parentNode) {
this.setSelfId(id);
this.setNodeName(name);
if (parentNode != null) {
this.setParentNode(parentNode);
this.setParentId(parentNode.selfId);
parentNode.addChildNode(this);
}
initChildList();
}
public TreeNode(int id, String name, String key, TreeNode parentNode) {
this(id, name, parentNode);
this.setKey(key);
}
public TreeNode(int id, String name, String key, TreeNode parentNode, String desensitizationType) {
this(id, name, key, parentNode);
this.setDesensitizationType(desensitizationType);
}
public TreeNode(int id, String name, TreeNode parentNode, int color) {
this(id, name, parentNode);
this.setColor(color);
}
public TreeNode(int id, String name, String key, TreeNode parentNode, int color) {
this(id, name, key, parentNode);
this.setColor(color);
}
public TreeNode(int id, String name, String key, TreeNode parentNode, int color, String desensitizationType) {
this(id, name, key, parentNode, color);
this.setDesensitizationType(desensitizationType);
}
public TreeNode(TreeNode parentNode) {
if (parentNode != null) {
this.setParentNode(parentNode);
this.setParentId(parentNode.selfId);
parentNode.addChildNode(this);
}
initChildList();
}
public boolean isLeaf() {
if (childList == null) {
return true;
}
if (childList.isEmpty()) {
return true;
}
return false;
}
/* 插入一个child节点到当前节点中 */
public void addChildNode(TreeNode treeNode) {
initChildList();
childList.add(treeNode);
treeNode.setParentNode(this);
}
public void initChildList() {
if (childList == null) {
childList = new ArrayList<TreeNode>();
}
}
public boolean isValidTree() {
return true;
}
/* 返回当前节点的父辈节点集合 */
public List<TreeNode> getElders() {
List<TreeNode> elderList = new ArrayList<TreeNode>();
TreeNode parentNode = this.getParentNode();
if (parentNode == null) {
return elderList;
}
elderList.add(parentNode);
elderList.addAll(parentNode.getElders());
return elderList;
}
/* 返回当前节点的晚辈集合 */
public List<TreeNode> getJuniors() {
List<TreeNode> juniorList = new ArrayList<TreeNode>();
List<TreeNode> childList = this.getChildList();
if (childList == null) {
return juniorList;
}
int childNumber = childList.size();
for (int i = 0; i < childNumber; i++) {
TreeNode junior = childList.get(i);
juniorList.add(junior);
juniorList.addAll(junior.getJuniors());
}
return juniorList;
}
/**
* 获取指定层节点,层数索引从0开始
*
* @author SongBaoYu
* @return
*/
public static List<TreeNode> getNodesByLevel(TreeNode root, int lvl) {
List<TreeNode> resList = new ArrayList<TreeNode>();
if (lvl < 0)// 越界检查
return resList;
resList.add(root);
for (int i = 0; i < lvl; ++i) {
resList = getNextLevelNodes(resList);
}
return resList;
}
/**
* 返回当前层的下一层节点
*
* @author SongBaoYu
* @param currLevelNodes
* @return
*/
public static List<TreeNode> getNextLevelNodes(List<TreeNode> currLevelNodes) {
List<TreeNode> resList = new ArrayList<TreeNode>();
for (TreeNode currNode : currLevelNodes) {
List<TreeNode> childList = currNode.getChildList();
for (TreeNode node : childList) {
if (StringUtils.isBlank(node.getKey()))
resList.add(node);
}
}
return resList;
}
/* 返回当前节点的孩子集合 */
public List<TreeNode> getChildList() {
return childList;
}
/* 删除节点和它下面的晚辈 */
public void deleteNode() {
TreeNode parentNode = this.getParentNode();
int id = this.getSelfId();
if (parentNode != null) {
parentNode.deleteChildNode(id);
}
}
/* 删除当前节点的某个子节点 */
public void deleteChildNode(int childId) {
List<TreeNode> childList = this.getChildList();
int childNumber = childList.size();
for (int i = 0; i < childNumber; i++) {
TreeNode child = childList.get(i);
if (child.getSelfId() == childId) {
childList.remove(i);
return;
}
}
}
/* 动态的插入一个新的节点到当前树中 */
public boolean insertJuniorNode(TreeNode treeNode) {
int juniorParentId = treeNode.getParentId();
if (this.parentId == juniorParentId) {
addChildNode(treeNode);
return true;
}
List<TreeNode> childList = this.getChildList();
int childNumber = childList.size();
boolean insertFlag;
for (int i = 0; i < childNumber; i++) {
TreeNode childNode = childList.get(i);
insertFlag = childNode.insertJuniorNode(treeNode);
if (insertFlag == true)
return true;
}
return false;
}
/* 找到一颗树中某个节点 */
public TreeNode findTreeNodeById(int id) {
if (this.selfId == id)
return this;
if (childList.isEmpty() || childList == null) {
return null;
}
int childNumber = childList.size();
for (int i = 0; i < childNumber; i++) {
TreeNode child = childList.get(i);
TreeNode resultNode = child.findTreeNodeById(id);
if (resultNode != null) {
return resultNode;
}
}
return null;
}
/* 找到一颗树中某个节点 */
public TreeNode findTreeNodeByKey(String key) {
if (key.equals(this.getKey()))
return this;
if (isLeaf()) {
return null;
}
int childNumber = childList.size();
for (int i = 0; i < childNumber; i++) {
TreeNode child = childList.get(i);
TreeNode resultNode = child.findTreeNodeByKey(key);
if (resultNode != null) {
return resultNode;
}
}
return null;
}
/* 遍历一棵树,层次遍历 */
public void traverse() {
if (selfId < 0)
return;
// print(this.selfId);
System.out.print(this.level + " ");
if (this.isLeaf())
return;
int childNumber = childList.size();
for (int i = 0; i < childNumber; i++) {
TreeNode child = childList.get(i);
child.traverse();
}
}
public void traverseNode() {
if (selfId < 0)
return;
// print(this.selfId);
System.out.print(this.nodeName + ",");
if (this.isLeaf())
return;
int childNumber = childList.size();
for (int i = 0; i < childNumber; i++) {
TreeNode child = childList.get(i);
child.traverseNode();
}
}
/**
* 从左到右获取叶子的key
*/
public List<String> getKeyList() {
List<String> keyList = new ArrayList<String>();
List<TreeNode> nodeList = this.getJuniors();
for (int i = 0, s = nodeList.size(); i < s; i++) {
String key = nodeList.get(i).getKey();
if(StringUtils.isBlank(key)){
continue;
}
if (!nodeList.get(i).isLeaf()) {
continue;
}
keyList.add(key);
String desensitizationType = nodeList.get(i).getDesensitizationType();
if(StringUtils.isNotBlank(desensitizationType)){//是否需要脱敏
if(desensitizationTypeMap == null) {
desensitizationTypeMap = new LinkedHashMap<String, String>();
}
desensitizationTypeMap.put(key, desensitizationType);
}
String cellFormat = nodeList.get(i).getCellFormat();
if(StringUtils.isNotBlank(cellFormat)){//是否需要脱敏
if(cellFormatMap == null) {
cellFormatMap = new LinkedHashMap<String, String>();
}
cellFormatMap.put(key, cellFormat);
}
}
return keyList;
}
/** 计算叶子数,即该节点所占的长度 */
public int calLeavesAmount(TreeNode treeNode) {
if (treeNode.isLeaf()) {
treeNode.setLeafSize(1);
return 1;
}
int sum = 0;
for (TreeNode node : treeNode.childList) {
sum += calLeavesAmount(node);
}
treeNode.setLeafSize(sum);
return sum;
}
/** 填写所有节点的等级(层数) */
public void calNodeLevel(TreeNode treeNode) {
if (treeNode.parentNode == null) {
treeNode.setLevel(-1);
} else {
treeNode.setLevel(treeNode.parentNode.getLevel() + 1);
}
if (!treeNode.isLeaf()) {
for (TreeNode node : treeNode.getChildList()) {
calNodeLevel(node);
}
}
}
/* 获取最大层数 */
public int getMaxLevel() {
List<TreeNode> list = this.getJuniors();
int max = 0;
for (TreeNode node : list) {
int l = node.getLevel();
max = max < l ? l : max;
}
return max;
}
public void print(String content) {
System.out.println(content);
}
public void print(int content) {
System.out.println(String.valueOf(content));
}
public void setChildList(List<TreeNode> childList) {
this.childList = childList;
}
public int getParentId() {
return parentId;
}
public void setParentId(int parentId) {
this.parentId = parentId;
}
public int getSelfId() {
return selfId;
}
public void setSelfId(int selfId) {
this.selfId = selfId;
}
public TreeNode getParentNode() {
return parentNode;
}
public void setParentNode(TreeNode parentNode) {
this.parentNode = parentNode;
this.setParentId(parentNode.getSelfId());
}
public String getNodeName() {
return nodeName;
}
public void setNodeName(String nodeName) {
this.nodeName = nodeName;
}
public int getLeafSize() {
return leafSize;
}
public void setLeafSize(int leafSize) {
this.leafSize = leafSize;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key != null ? key : "";
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getColor() {
return color;
}
public void setColor(int color) {
this.color = color;
}
public String getDesensitizationType() {
return desensitizationType;
}
public void setDesensitizationType(String desensitizationType) {
this.desensitizationType = desensitizationType;
}
public Map<String, String> getDesensitizationTypeMap() {
if(desensitizationTypeMap == null) {
desensitizationTypeMap = new LinkedHashMap<String, String>();
}
return desensitizationTypeMap;
}
public String getCellFormat() {
return cellFormat;
}
public TreeNode setCellFormat(String cellFormat) {
this.cellFormat = cellFormat;
return this;
}
public Map<String, String> getCellFormatMap() {
if(cellFormatMap == null) {
cellFormatMap = new LinkedHashMap<String, String>();
}
return cellFormatMap;
}
@Override
public String toString() {
String str = "TreeNode [parentId=" + parentId + ", selfId=" + selfId + ", nodeName=" + nodeName + ", leafSize="
+ leafSize + ", color=" + color + ", key=" + key + ", level=" + level + ", \nchildList=";
if (childList != null || !childList.isEmpty()) {
for (Object obj : childList) {
str += "\n" + obj.toString();
}
}else {
str += "null";
}
str += "]";
return str;
}
}
package com.winsun.utils;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.IndexedColors;
public class TreeNodeData {
private static TreeNode root;
public static TreeNode getRoot() {
return root;
}
private static void setRoot(TreeNode rootNode) {
root = rootNode;
}
/**
* 移动订单表头
* @param actName
* @return
*/
public static TreeNode getMoveOrder(String actName){
TreeNode treeNode0 =new TreeNode(-1,"", null);
TreeNode treeNode =new TreeNode(0, actName, treeNode0);
TreeNode treeNode1 =new TreeNode(1, "客户姓名","customer_name", treeNode);
TreeNode treeNode2 =new TreeNode(2, "办理号码","business_number", treeNode);
TreeNode treeNode3 =new TreeNode(3, "订单状态","order_status", treeNode);
TreeNode treeNode4 =new TreeNode(4, "订单创建时间","create_time", treeNode);
TreeNode treeNode5 =new TreeNode(5, "县分","hehuoren_area", treeNode);
TreeNode treeNode6 =new TreeNode(6, "合伙人学校","hehuoren_school", treeNode);
TreeNode treeNode7 =new TreeNode(7, "合伙人姓名","hehuoren_name", treeNode);
TreeNode treeNode8 =new TreeNode(8, "合伙人手机","hehuoren_phone", treeNode);
TreeNode treeNode9 =new TreeNode(9, "督导","supervisor_name", treeNode);
TreeNode treeNode10 =new TreeNode(10, "订单类型","user_type", treeNode);
TreeNode treeNode11 =new TreeNode(11, "办理套餐","kapin", treeNode);
TreeNode treeNode12 =new TreeNode(12, "升级套餐","business_package", treeNode);
TreeNode treeNode13 =new TreeNode(13, "联系号码","contact_number", treeNode);
TreeNode treeNode14 =new TreeNode(14, "订单编号","order_number", treeNode);
TreeNode treeNode15 =new TreeNode(15, "小白卡单号","xb_order_id", treeNode);
TreeNode treeNode16 =new TreeNode(16, "预制卡单号","order_id", treeNode);
TreeNode treeNode17 =new TreeNode(17, "收货地区","site", treeNode);
TreeNode treeNode18 =new TreeNode(18, "详细地址","address", treeNode);
TreeNode treeNode19 =new TreeNode(19, "配送方式","is_delivery", treeNode);
TreeNode treeNode20 =new TreeNode(20, "快递公司","company", treeNode);
TreeNode treeNode21 =new TreeNode(21, "快递单号","kuaidi_order", treeNode);
TreeNode treeNode22 =new TreeNode(22, "白卡ICCID","business_iccid", treeNode);
TreeNode treeNode23 =new TreeNode(23, "快递寄出时间","kuaidi_time", treeNode);
TreeNode treeNode24 =new TreeNode(24, "订单完成时间","success_time", treeNode);
TreeNode treeNode25 =new TreeNode(25, "用户学校","userSchool", treeNode);
TreeNode treeNode26 =new TreeNode(26, "学生证审核","student_card_check_status", treeNode);
TreeNode treeNode27 =new TreeNode(27, "父母名字","parent_name", treeNode);
TreeNode treeNode28 =new TreeNode(28, "学号","student_number", treeNode);
TreeNode treeNode29 =new TreeNode(29, "班级","class_number", treeNode);
treeNode0.calLeavesAmount(treeNode0);
treeNode0.calNodeLevel(treeNode0);
return treeNode0;
}
}
package com.winsun.utils;
import com.baomidou.mybatisplus.enums.SqlLike;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.winsun.bean.Order;
import org.apache.commons.lang3.StringUtils;
import java.util.Map;
public class WrapperUtil {
public static void wrapperGe(EntityWrapper<Order> wrapper, Map<String, Object> map, String str, String str2){
if (map.containsKey(str) && StringUtils.isNotBlank(map.get(str).toString())){
wrapper.ge(str2, map.get(str).toString());
}
}
public static void wrapperLe(EntityWrapper<Order> wrapper, Map<String, Object> map, String str, String str2){
if (map.containsKey(str) && StringUtils.isNotBlank(map.get(str).toString())){
wrapper.ge(str2, map.get(str).toString());
}
}
public static void wrapperEq(EntityWrapper<Order> wrapper, Map<String, Object> map, String str,String str2){
if (map.containsKey(str) && StringUtils.isNotBlank(map.get(str).toString())){
wrapper.eq(str2, map.get(str).toString());
}
}
public static void wrapperLike(EntityWrapper<Order> wrapper, Map<String, Object> map, String str,String str2){
if (map.containsKey(str) && StringUtils.isNotBlank(map.get(str).toString())){
wrapper.like(str2, map.get(str).toString(), SqlLike.DEFAULT);
}
}
}
......@@ -59,6 +59,12 @@ public class OrderTask {
@Autowired
private RhPhoneMapper rhPhoneMapper;
private static Set<String> schoolSet = new HashSet<>();
{
schoolSet.add("星海音乐学院");
schoolSet.add("广州美术学院");
}
/**
* 定时器更新已送货订单
*/
......@@ -166,11 +172,10 @@ public class OrderTask {
//查询该订单的学校名称
String schoolName = orderViewMapper.selectByKdOrderId(order.getKdOrderId());
if ("星海音乐学院".equals(schoolName) || "广州美术学院".equals(schoolName)){
if (schoolSet.contains(schoolName)){
order.setNetNumber(order.getNetNumber().split("@")[0]);
}
// 下发短信
SendSmsAndMail.sendSms2(order.getContactNumber(),
order.getNetNumber(),
......@@ -210,6 +215,9 @@ public class OrderTask {
Map.get("orderState").toString().equals("8") || Map.get("orderState").toString().equals("22") ||
Map.get("orderState").toString().equals("21") ){
dataMapping.put("order_status", "待处理");
if ("1".equals(order.getIsDelivery())){
dataMapping.put("order_status","待活体");
}
dataMapping.put("update_time", new Date());
appMapper.inserOrderHis(order.getId(), "上传证件受理成功,等待督导处理:"+Map.get("orderState").toString(), new Date(), "定时器查询");
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment