diff --git a/src/test/java/com/dreamchaser/depository_manage/BarChartTest.java b/src/test/java/com/dreamchaser/depository_manage/BarChartTest.java deleted file mode 100644 index e90d0ac1..00000000 --- a/src/test/java/com/dreamchaser/depository_manage/BarChartTest.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.dreamchaser.depository_manage; - -import com.alibaba.fastjson.JSONObject; -import com.dreamchaser.depository_manage.config.PublicConfig; -import com.dreamchaser.depository_manage.entity.UserByPort; -import com.dreamchaser.depository_manage.service.*; -import com.dreamchaser.depository_manage.utils.DateUtil; -import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; -import lombok.Data; -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.junit4.SpringRunner; - -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.concurrent.*; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@RunWith(SpringRunner.class) -public class BarChartTest { - - - @Autowired - MaterialTypeService materialTypeService; - - @Autowired - DepositoryRecordService depositoryRecordService; - - @Autowired - MaterialService materialService; - - @Autowired - DepositoryService depositoryService; - - @Autowired - RoleService roleService; - - /** - * 获取本月之前的月份 - * - * @return - */ - public static Map getPreviousMonth() { - Calendar instance = Calendar.getInstance(); - SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM"); - Map source = new HashMap<>(); - List sourceList = new ArrayList<>(); - int month = instance.get(Calendar.MONTH) + 1; - // 获取下个月 - instance.add(Calendar.MONTH, 1); - Long nextMonth = DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime())); - ArrayList months = new ArrayList<>(); - months.add(nextMonth); - instance.add(Calendar.MONTH, -1); - - while (month > 0) { - instance.set(Calendar.MONTH, month); - instance.set(Calendar.DAY_OF_MONTH, -1); - source.put("month", month + "月"); - months.add(DateUtil.DateTimeByMonthToTimeStamp(formatter.format(instance.getTime()))); - month--; - sourceList.add(((HashMap) source).clone()); - } - instance.set(Calendar.MONTH, month); - instance.add(Calendar.MONTH, 1); - Map map = new HashMap<>(); - map.put("months", months); - map.put("sourceList", sourceList); - return map; - } - - @Test - public void main() { - Map map = new HashMap<>(); - map.put("username", "302304"); - map.put("password", "123456789"); - map.put("captcha", "528765"); - map.put("captchaId", "UksBSXVFy0xVZbXUC4dQ"); -// JSONObject jsonObject = PublicConfig.baseLogin(map); -// UserByPort userByPort = JSONObject.toJavaObject((JSONObject) jsonObject.get("usercont"), UserByPort.class); - Map barChartData = getBarChartDataByDateType(28L,"1", "day"); - System.out.println(barChartData); - } - - - - - /** - * 获取入库或出库数据 - * - * @param depositoryId 要查看的仓库id - * @param type 类型(1入库2出库) - * @param dateType 日期类型(month按月,day按天(月初至今)) - * @return - */ - public Map getBarChartDataByDateType(Long depositoryId, String type, String dateType) { - // 获取至今的日期名称 - List dayNames = new ArrayList<>(); - List dayTimeSpaces = new ArrayList<>(); - if ("month".equals(dateType)) { - //获取获取系统的当前日历对象 - - Map monthBeginToNow = DateUtil.getPreviousMonth(); - - // 获取至今的日期名称 - dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("monthNames"), String.class); - Collections.reverse(dayNames); - // 获取至今的日期时间戳 - dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("months"), Long.class); - Collections.reverse(dayTimeSpaces); - - } else if ("day".equals(dateType)) { - //获取获取系统的当前日历对象 - Map monthBeginToNow = DateUtil.getMonthBeginToNow(); - // 获取至今的日期名称 - dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("dayName"), String.class); - // 获取至今的日期时间戳 - dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("dayTimeSpace"), Long.class); - dayTimeSpaces.add(Calendar.getInstance().getTimeInMillis()); - } - // 每天各仓库入库数目 - Map show_data = new HashMap<>(); - Map data = getBarChartDataForApplicationRecord(type, depositoryId, dayTimeSpaces); - show_data.put("data", data); - show_data.put("dayNames", dayNames); - return show_data; - } - - /** - * 根据日期获取出入库的数量(用于柱状图) - */ - public Map getBarChartDataForApplicationRecord(String type, Long depositoryId, List days) { - Map map = new HashMap<>(); - map.put("type", "bar"); - Map emphasisItem = new HashMap<>(); - emphasisItem.put("focus", "series"); - map.put("emphasis", emphasisItem); - Map labelItem = new HashMap<>(); - labelItem.put("show", true); - labelItem.put("position", "inside"); - map.put("label", labelItem); - int i; - List drCountbyDrName = new ArrayList<>(); - - for (i = 0; i < days.size() - 1; i++) { - // 遍历 Map并计算各仓库的入库数 - // 获取一段时间内的库存额度 - Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(days.get(i + 1), days.get(i), ObjectFormatUtil.toInteger(type), depositoryId); - drCountbyDrName.add(depositoryRecordByDate); - } - map.put("data", drCountbyDrName); - return map; - } - -} diff --git a/src/test/java/com/dreamchaser/depository_manage/InterfaceTest.java b/src/test/java/com/dreamchaser/depository_manage/InterfaceTest.java deleted file mode 100644 index e6b872cf..00000000 --- a/src/test/java/com/dreamchaser/depository_manage/InterfaceTest.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.dreamchaser.depository_manage; - -import com.dreamchaser.depository_manage.config.PublicConfig; -import com.dreamchaser.depository_manage.entity.UserByPort; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.List; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@RunWith(SpringRunner.class) -public class InterfaceTest { - - @Test - public void run() { - List userByPortList = PublicConfig.findUserByAdminorgAndPosition(116L, "设备员", null, null); - System.out.println(userByPortList); - } -} diff --git a/src/test/java/com/dreamchaser/depository_manage/InventoryLineChartTest.java b/src/test/java/com/dreamchaser/depository_manage/InventoryLineChartTest.java deleted file mode 100644 index cb0e1692..00000000 --- a/src/test/java/com/dreamchaser/depository_manage/InventoryLineChartTest.java +++ /dev/null @@ -1,251 +0,0 @@ -package com.dreamchaser.depository_manage; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.dreamchaser.depository_manage.config.PublicConfig; -import com.dreamchaser.depository_manage.entity.UserByPort; -import com.dreamchaser.depository_manage.pojo.InventoryByDname; -import com.dreamchaser.depository_manage.security.pool.RedisPool; -import com.dreamchaser.depository_manage.service.DepositoryRecordService; -import com.dreamchaser.depository_manage.service.DepositoryService; -import com.dreamchaser.depository_manage.service.MaterialService; -import com.dreamchaser.depository_manage.service.MaterialTypeService; -import com.dreamchaser.depository_manage.utils.DateUtil; -import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -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.junit4.SpringRunner; - -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.concurrent.*; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@RunWith(SpringRunner.class) -public class InventoryLineChartTest { - - - @Autowired - MaterialTypeService materialTypeService; - - @Autowired - DepositoryRecordService depositoryRecordService; - - @Autowired - MaterialService materialService; - - @Autowired - DepositoryService depositoryService; - - @Autowired - RedisPool redisPool; - - @Test - public void main() { - Map day = getLineOrBarChartDataForInventory(41L, "day", "line"); - System.out.println(day); - } - - /** - * 获取折线图数据 - * - * @param depositoryId 待获取仓库Id - * @param dateType 日期类型(day按天month按月) - * @return - */ - public Map getLineOrBarChartDataForInventory(Long depositoryId, String dateType, String echartType) { - // 声明仓库库存数据 - Map show_data = new HashMap<>(); - - // redisKey - String redisKey = "depositoryId:" + depositoryId; - - // 获取至今的日期名称 - List dayNames = new ArrayList<>(); - List dayTimeSpaces = new ArrayList<>(); - if ("month".equals(dateType)) { - //获取获取系统的当前日历对象 - - Map monthBeginToNow = DateUtil.getPreviousMonth(); - - // 获取至今的日期名称 - dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("monthNames"), String.class); - Collections.reverse(dayNames); - // 获取至今的日期时间戳 - dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("months"), Long.class); - Collections.reverse(dayTimeSpaces); - - } else if ("day".equals(dateType)) { - //获取获取系统的当前日历对象 - Map monthBeginToNow = DateUtil.getMonthBeginToNow(); - // 获取至今的日期名称 - dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("dayName"), String.class); - // 获取至今的日期时间戳 - dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("dayTimeSpace"), Long.class); - dayTimeSpaces.add(Calendar.getInstance().getTimeInMillis()); - } - - Set keys = redisPool.getRedisTemplateByDb(15).opsForHash().keys(redisKey); - - // 声明仓库入库数据列表 - List applicationInDataList = new ArrayList<>(); - // 声明仓库出库数据列表 - List applicationOutDataList = new ArrayList<>(); - // 声明仓库库存数据列表 - List inventoryList = new ArrayList<>(); - - // 获取当前仓库的库存值 - Double depositoryInventory = materialService.findInventorySumForDepository(depositoryId); - - if (keys.contains("inventory:" + dateType)) { - // 如果redis中存在当前值 - Object inventory = redisPool.getRedisTemplateByDb(15).opsForHash().get(redisKey, "inventory:" + dateType); - if (inventory != null) { - inventoryList = JSONArray.parseArray(inventory.toString(), Double.class); - } - } else { - if (keys.contains("in:" + dateType)) { - // 如果包含入库数据 - Object applicationInDataForRedis = redisPool.getRedisTemplateByDb(15).opsForHash().get(redisKey, "in:" + dateType); - if (applicationInDataForRedis != null) { - applicationInDataList = JSONArray.parseArray(applicationInDataForRedis.toString(), Double.class); - Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(dayTimeSpaces.get(dayTimeSpaces.size() - 1), dayTimeSpaces.get(dayTimeSpaces.size() - 2), 1, depositoryId); - applicationInDataList.add(depositoryRecordByDate); - } else { - for (int i = 0; i < dayTimeSpaces.size() - 1; i++) { - // 遍历 Map并计算各仓库的入库数 - // 获取一段时间内的库存额度 - Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(dayTimeSpaces.get(i + 1), dayTimeSpaces.get(i), 1, depositoryId); - applicationInDataList.add(depositoryRecordByDate); - } - } - } else { - for (int i = 0; i < dayTimeSpaces.size() - 1; i++) { - // 遍历 Map并计算各仓库的入库数 - // 获取一段时间内的库存额度 - Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(dayTimeSpaces.get(i + 1), dayTimeSpaces.get(i), 1, depositoryId); - applicationInDataList.add(depositoryRecordByDate); - } - } - - if (keys.contains("out:" + dateType)) { - // 如果包含出库数据 - Object applicationOutDataForRedis = redisPool.getRedisTemplateByDb(15).opsForHash().get(redisKey, "out:" + dateType); - if (applicationOutDataForRedis != null) { - applicationOutDataList = JSONArray.parseArray(applicationOutDataForRedis.toString(), Double.class); - Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(dayTimeSpaces.get(dayTimeSpaces.size() - 1), dayTimeSpaces.get(dayTimeSpaces.size() - 2), 2, depositoryId); - applicationOutDataList.add(depositoryRecordByDate); - } else { - for (int i = 0; i < dayTimeSpaces.size() - 1; i++) { - // 遍历 Map并计算各仓库的入库数 - // 获取一段时间内的库存额度 - Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(dayTimeSpaces.get(i + 1), dayTimeSpaces.get(i), 2, depositoryId); - applicationOutDataList.add(depositoryRecordByDate); - } - } - } else { - for (int i = 0; i < dayTimeSpaces.size() - 1; i++) { - // 遍历 Map并计算各仓库的入库数 - // 获取一段时间内的库存额度 - Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(dayTimeSpaces.get(i + 1), dayTimeSpaces.get(i), 2, depositoryId); - applicationOutDataList.add(depositoryRecordByDate); - } - } - } - inventoryList.add(depositoryInventory); - if (inventoryList.size() <= 1) { - // 如果没有 - inventoryList.add(depositoryInventory); - for (int i = applicationInDataList.size() - 1; i > 0; i--) { - // 入库数 - Double inQuantity = applicationInDataList.get(i); - // 出库数 - Double outQuantity = applicationOutDataList.get(i); - depositoryInventory = depositoryInventory - inQuantity + outQuantity; - inventoryList.add(depositoryInventory); - } - Collections.reverse(inventoryList); - } - - List inventoryListCopy = new ArrayList<>(); - ObjectMapper objectMap = new ObjectMapper(); - try { - inventoryListCopy = objectMap.readValue(objectMap.writeValueAsString(inventoryList), List.class); - } catch (JsonProcessingException e) { - e.printStackTrace(); - } - inventoryListCopy.remove(inventoryListCopy.size() - 1); - redisPool.getRedisTemplateByDb(15).opsForHash().put(redisKey, "inventory:" + dateType, JSONObject.toJSONString(inventoryListCopy)); - if (applicationInDataList.size() > 0) { - applicationInDataList.remove(applicationInDataList.size() - 1); - redisPool.getRedisTemplateByDb(15).opsForHash().put(redisKey, "in:" + dateType, JSONObject.toJSONString(applicationInDataList)); - - } - if (applicationOutDataList.size() > 0) { - applicationOutDataList.remove(applicationOutDataList.size() - 1); - redisPool.getRedisTemplateByDb(15).opsForHash().put(redisKey, "out:" + dateType, JSONObject.toJSONString(applicationOutDataList)); - } - redisPool.getRedisTemplateByDb(15).expire(redisKey, DateUtil.getSecondsNextEarlyMorning(), TimeUnit.SECONDS); - Map map = new HashMap<>(); - if ("line".equals(echartType)) { - map.put("type", "line"); - Map areaStyleItem = new HashMap<>(); - map.put("areaStyle", areaStyleItem); - } else if ("bar".equals(echartType)) { - map.put("type", "bar"); - Map emphasisItem = new HashMap<>(); - emphasisItem.put("focus", "series"); - map.put("emphasis", emphasisItem); - Map labelItem = new HashMap<>(); - labelItem.put("show", true); - labelItem.put("position", "inside"); - map.put("label", labelItem); - } - - map.put("data", inventoryList); - show_data.put("data", map); - show_data.put("dayNames", dayNames); - return show_data; - } - - /** - * 获取当前折线图的具体数据 - * - * @param type 查看类型(1入库2出库) - * @param days 查询日期 - * @param depositoryId 仓库id - * @return - */ - public Map getLineOrBarChartDataForApplicationRecord(String type, List days, Long depositoryId, String echartType) { - Map map = new HashMap<>(); - if ("line".equals(echartType)) { - map.put("type", "line"); - Map areaStyleItem = new HashMap<>(); - map.put("areaStyle", areaStyleItem); - } else if ("bar".equals(echartType)) { - map.put("type", "bar"); - Map emphasisItem = new HashMap<>(); - emphasisItem.put("focus", "series"); - map.put("emphasis", emphasisItem); - Map labelItem = new HashMap<>(); - labelItem.put("show", true); - labelItem.put("position", "inside"); - map.put("label", labelItem); - } - int i; - List drCountbyDrName = new ArrayList<>(); - for (i = 0; i < days.size() - 1; i++) { - // 遍历 Map并计算各仓库的入库数 - // 获取一段时间内的库存额度 - Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(days.get(i + 1), days.get(i), ObjectFormatUtil.toInteger(type), depositoryId); - drCountbyDrName.add(depositoryRecordByDate); - } - map.put("data", drCountbyDrName); - return map; - } - -} diff --git a/src/test/java/com/dreamchaser/depository_manage/InventorySunburstDataTest.java b/src/test/java/com/dreamchaser/depository_manage/InventorySunburstDataTest.java deleted file mode 100644 index 65ded7e6..00000000 --- a/src/test/java/com/dreamchaser/depository_manage/InventorySunburstDataTest.java +++ /dev/null @@ -1,430 +0,0 @@ -package com.dreamchaser.depository_manage; - -import com.alibaba.fastjson.JSONObject; -import com.dreamchaser.depository_manage.config.PublicConfig; -import com.dreamchaser.depository_manage.entity.Depository; -import com.dreamchaser.depository_manage.entity.MaterialType; -import com.dreamchaser.depository_manage.entity.UserByPort; -import com.dreamchaser.depository_manage.exception.MyException; -import com.dreamchaser.depository_manage.pojo.InventoryByMTAndDepository; -import com.dreamchaser.depository_manage.security.pool.RedisPool; -import com.dreamchaser.depository_manage.service.DepositoryRecordService; -import com.dreamchaser.depository_manage.service.DepositoryService; -import com.dreamchaser.depository_manage.service.MaterialService; -import com.dreamchaser.depository_manage.service.MaterialTypeService; -import com.dreamchaser.depository_manage.utils.DateUtil; -import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; -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.data.redis.core.RedisTemplate; -import org.springframework.test.context.junit4.SpringRunner; - -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.concurrent.*; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@RunWith(SpringRunner.class) -public class InventorySunburstDataTest { - - - @Autowired - MaterialTypeService materialTypeService; - - @Autowired - DepositoryRecordService depositoryRecordService; - - @Autowired - MaterialService materialService; - - @Autowired - DepositoryService depositoryService; - - @Autowired - RedisPool redisPool; - - - @Test - public void main() { - String type = "2"; - String dayName = "6月"; - String dayNumberString = dayName.split("月")[0]; -// Map sunBurstDataForInventoryByMonth = getSunBurstDataForInventoryByMonth(dayName, "办公用品", 40); -// System.out.println(JSONObject.toJSONString(sunBurstDataForInventoryByMonth)); - - System.out.println(Calendar.getInstance().get(Calendar.MONTH)); -// int dayNumber = Integer.parseInt(dayNumberString); - // 获取本月之前的月份 -// Map previousMonth = DateUtil.getPreviousMonth(); - // 获取月份的时间戳 -// List months = ObjectFormatUtil.objToList(previousMonth.get("months"), Long.class); - // 获取开始时间 -// Long start = months.get(months.size() - dayNumber - 1); - // 获取结束时间 -// Long end = months.get(0); -// List materialTypeNoParent = materialTypeService.findMaterialTypeNoParent(); -// Map sunBurstDataForApplication = getSunBurstDataForApplication(dayName, "1", start, end, materialTypeNoParent, 40); -// System.out.println(sunBurstDataForApplication); - } - - /** - * 用于获取库存旭日图数据 - * - * @param dayName 待获取日期名称 - * @param mtName 待查询物料类型 - * @param depositoryId 待查询仓库 - * @return - */ - public Map getSunBurstDataForInventoryByMonth(String dayName, String mtName, Integer depositoryId) { - // 定义结果集 - Map result = new HashMap(); - - String dayNumberString = dayName.split("月")[0]; - int dayNumber = Integer.parseInt(dayNumberString); - // 获取本月之前的月份 - Map previousMonth = DateUtil.getPreviousMonth(); - // 获取月份的时间戳 - List months = ObjectFormatUtil.objToList(previousMonth.get("months"), Long.class); - List materialTypeList = new ArrayList<>(); - - // 获取开始时间 - Long start = months.get(months.size() - dayNumber - 1); - // 获取结束时间 - Long end = months.get(0); - - - /** - * 用于执行获取旭日图数据的线程类 - */ - class TemporaryClass implements Callable> { - private String type; - private List materialTypeList; - - public TemporaryClass(String type, List materialTypeList) { - this.type = type; - this.materialTypeList = materialTypeList; - } - - @Override - public Map call() throws Exception { - Map data = getSunBurstDataForApplication(dayName, type, start, end, materialTypeList, depositoryId); - return data; - } - } - - // 定义线程池 - ExecutorService exs = new ThreadPoolExecutor(3, 6, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(6)); - if (mtName == null || "".equals(mtName)) { - // 获取要执行的物料类型列表 - materialTypeList = materialTypeService.findMaterialTypeNoParent(); - } else { - List materialTypeByNames = materialTypeService.findMaterialTypeByName(mtName); - MaterialType materialType = null; - if (materialTypeByNames.size() > 0) { - materialType = materialTypeByNames.get(0); - } else { - throw new MyException("错误,不存在当前名称的类型"); - } - materialTypeList = materialTypeService.findChildForMaterialTypeByParent(materialType.getOldId()); - } - // 结果集 - List> futureList = new ArrayList>(); - // 1.定义CompletionService - CompletionService> completionService = new ExecutorCompletionService>(exs); - - // 获取入库的旭日图数据 - Future> applicationInThread = completionService.submit(new TemporaryClass("1", materialTypeList)); - // 获取出库的旭日图数据 - Future> applicationOutThread = completionService.submit(new TemporaryClass("2", materialTypeList)); - // 获取当前库存的旭日图数据 - Future> InventoryThread = completionService.submit(new TemporaryClass("3", materialTypeList)); - - try { - // 获取入库的旭日图数据列表 - List applicationInDataList = ObjectFormatUtil.objToList(applicationInThread.get().get("children"), Object.class); - // 获取出库的旭日图数据列表 - List applicationOutDataList = ObjectFormatUtil.objToList(applicationOutThread.get().get("children"), Object.class); - // 获取库存的旭日图数据列表 - List inventoryDataList = ObjectFormatUtil.objToList(InventoryThread.get().get("children"), Object.class); - PublicConfig.closeThreadPool(exs); - // 用于存储入库时的旭日图具体数据 - Map applicationInData = new HashMap<>(); - // 用于存储出库时的旭日图具体数据 - Map applicationOutData = new HashMap<>(); - // 用于存储库存时的旭日图具体数据 - Map inventoryData = new HashMap<>(); - for (int i = 0; i < applicationInDataList.size(); i++) { - // 循环获取所有出库、入库、库存的旭日图对应类型与其值 - Map applicationInDataMap = ObjectFormatUtil.objToMap(applicationInDataList.get(i), String.class, Object.class); - applicationInData.put((String) applicationInDataMap.get("name"), ObjectFormatUtil.toDouble(applicationInDataMap.get("value"))); - Map applicationOutDataMap = ObjectFormatUtil.objToMap(applicationOutDataList.get(i), String.class, Object.class); - applicationOutData.put((String) applicationOutDataMap.get("name"), ObjectFormatUtil.toDouble(applicationOutDataMap.get("value"))); - Map inventoryDataMap = ObjectFormatUtil.objToMap(inventoryDataList.get(i), String.class, Object.class); - inventoryData.put((String) inventoryDataMap.get("name"), ObjectFormatUtil.toDouble(inventoryDataMap.get("value"))); - } - double sumInventory = 0.0; - List resultData = new ArrayList<>(); - // 用于生产随机的颜色 - Random random = new Random(); - - for (String key : inventoryData.keySet()) { - Map resultDataItem = new HashMap<>(); - // 获取当前类型库存 - double value = inventoryData.get(key); - // 获取当前类型入库数 - double inQuantity = applicationInData.get(key); - // 获取当前类型出库数 - double outQuantity = applicationOutData.get(key); - // 获取计算后的库存(库存+出库-入库) - double inventory = ObjectFormatUtil.subtract(ObjectFormatUtil.sum(value, outQuantity), inQuantity); - resultDataItem.put("name", key); - resultDataItem.put("value", inventory); - Map itemStyle = new HashMap<>(); - int r = random.nextInt(256); - int g = random.nextInt(256); - int b = random.nextInt(256); - itemStyle.put("color", "rgb(" + r + "," + g + "," + b + ")"); - resultDataItem.put("itemStyle", itemStyle); - // 更新当前类型库存数 - sumInventory = ObjectFormatUtil.sum(sumInventory, inventory); - resultData.add(resultDataItem); - } - result.put("children", resultData); - result.put("value", sumInventory); - result.put("name", dayName); - Map itemStyle = new HashMap<>(); - int r = random.nextInt(256); - int g = random.nextInt(256); - int b = random.nextInt(256); - itemStyle.put("color", "rgb(" + r + "," + g + "," + b + ")"); - result.put("itemStyle", itemStyle); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - return result; - - } - - - /** - * 用于获取旭日图数据 - * - * @param dayName 当前月份名称 - * @param type 查看类型(1入库2出库3库存) - * @param start 开始时间 - * @param end 结束时间 - * @param materialTypeAll 当前查看物料类型 - * @param depositoryId 当前查看仓库id - * @return - */ - public Map getSunBurstDataForApplication(String dayName, String type, Long start, Long end, List materialTypeAll, Integer depositoryId) { - - Map result = new HashMap<>(); - - int maxThreadSize = materialTypeAll.size(); - - int threadSize = Runtime.getRuntime().availableProcessors(); - - if (maxThreadSize < threadSize) { - maxThreadSize = threadSize * 2; - } - - ExecutorService exs = new ThreadPoolExecutor(threadSize, maxThreadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(maxThreadSize)); - - // 结果集 - List> futureList = new ArrayList>(); - // 1.定义CompletionService - CompletionService completionService = new ExecutorCompletionService(exs); - - List resultForData = new ArrayList<>(); - int openThreadSize = 0; - for (MaterialType materialType : materialTypeAll) { - Future future = null; - if ("3".equals(type)) { - future = completionService.submit(new getSunBurstDataForInventoryByDepository(materialType, depositoryId)); - } else { - future = completionService.submit(new getSunBurstDataForApplicationByDepository(type, start, end, materialType, depositoryId)); - } - futureList.add(future); - openThreadSize++; - } - - double sum = 0.0; - for (int i = 0; i < openThreadSize; i++) { - Object obj = null; - try { - obj = completionService.take().get(); - sum = ObjectFormatUtil.sum(sum, ObjectFormatUtil.toDouble(ObjectFormatUtil.objToMap(obj, String.class, Object.class).get("value"))); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - resultForData.add(obj); - } - result.put("children", resultForData); - result.put("name", dayName); - result.remove("month"); - result.put("value", sum); - // 用于生产随机的颜色 - Random random = new Random(); - Map itemStyle = new HashMap<>(); - int r = random.nextInt(256); - int g = random.nextInt(256); - int b = random.nextInt(256); - itemStyle.put("color", "rgb(" + r + "," + g + "," + b + ")"); - result.put("itemStyle", itemStyle); - result.put("sunburstDataType", type); - return result; - } - - /** - * 用于获取当前类别名称下当前月份的出入库的旭日图数据 - * - * @param dayName 当前月份 - * @param type 类型(1入库2出库) - * @param start 开始 - * @param end 结束 - * @param mtName 类别名称 - * @return - */ - public Map getSunBurstDataByMtName(String dayName, String type, Long start, Long end, String mtName, Integer depositoryId) { - List materialTypeByNames = materialTypeService.findMaterialTypeByName(mtName); - MaterialType materialType = null; - if (materialTypeByNames.size() > 0) { - materialType = materialTypeByNames.get(0); - } else { - throw new MyException("错误,不存在当前名称的类型"); - } - List childMaterialTypeList = materialTypeService.findChildForMaterialTypeByParent(materialType.getOldId()); - - - int threadSize = PublicConfig.availableVirtualMachine; - - int maxThreadSize = childMaterialTypeList.size(); - if (maxThreadSize < threadSize) { - maxThreadSize = threadSize * 2; - } - ExecutorService exs = new ThreadPoolExecutor(threadSize, maxThreadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(maxThreadSize)); - - // 结果集 - List> futureList = new ArrayList>(); - // 1.定义CompletionService - CompletionService completionService = new ExecutorCompletionService(exs); - - int runThreadSize = 0; - for (MaterialType value : childMaterialTypeList) { - Future submit = completionService.submit(new getSunBurstDataForApplicationByDepository(type, start, end, value, depositoryId)); - runThreadSize++; - futureList.add(submit); - } - - double sum = 0.0; - List resultForData = new ArrayList<>(); - for (int i = 0; i < runThreadSize; i++) { - Object obj = null; - try { - obj = completionService.take().get(); - resultForData.add(obj); - sum = ObjectFormatUtil.sum(sum, ObjectFormatUtil.toDouble(ObjectFormatUtil.objToMap(obj, String.class, Object.class).get("value"))); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - Map result = new HashMap<>(); - result.put("children", resultForData); - result.put("name", dayName); - result.remove("month"); - result.put("value", sum); - // 用于生产随机的颜色 - Random random = new Random(); - Map itemStyle = new HashMap<>(); - int r = random.nextInt(256); - int g = random.nextInt(256); - int b = random.nextInt(256); - itemStyle.put("color", "rgb(" + r + "," + g + "," + b + ")"); - result.put("itemStyle", itemStyle); - return result; - } - - /** - * 用于具体执行查询出入库旭日图的多线程类 - */ - class getSunBurstDataForApplicationByDepository implements Callable { - - - String type; - Long start; - Long end; - MaterialType materialType; - Integer depositoryId; - - public getSunBurstDataForApplicationByDepository(String type, Long start, Long end, MaterialType materialType, Integer depositoryId) { - this.type = type; - this.start = start; - this.end = end; - this.materialType = materialType; - this.depositoryId = depositoryId; - } - - @Override - public Object call() throws Exception { - Map map = new HashMap<>(); - map.put("type", ObjectFormatUtil.toInteger(type)); - map.put("start", start); - map.put("end", end); - map.put("depository_id", depositoryId); - map.put("oldId", materialType.getOldId()); - Map result = new HashMap<>(); - Double materialCountByMonth = depositoryRecordService.calMaterialTypeTopCount(map); - result.put("name", materialType.getTname()); - result.put("value", materialCountByMonth); - Map itemStyle = new HashMap<>(); - // 用于生产随机的颜色 - Random random = new Random(); - int r = random.nextInt(256); - int g = random.nextInt(256); - int b = random.nextInt(256); - itemStyle.put("color", "rgb(" + r + "," + g + "," + b + ")"); - result.put("itemStyle", itemStyle); - return result; - } - } - - /** - * 用于具体执行查询库存旭日图的多线程类 - */ - class getSunBurstDataForInventoryByDepository implements Callable { - - - MaterialType materialType; - Integer depositoryId; - - public getSunBurstDataForInventoryByDepository(MaterialType materialType, Integer depositoryId) { - this.materialType = materialType; - this.depositoryId = depositoryId; - } - - @Override - public Object call() throws Exception { - Map map = new HashMap<>(); - map.put("depositoryId", depositoryId); - map.put("oldId", materialType.getOldId()); - Map result = new HashMap<>(); - Double materialCountByMonth = materialService.calMaterialTypeTopCount(map); - result.put("name", materialType.getTname()); - result.put("value", materialCountByMonth); - Map itemStyle = new HashMap<>(); - // 用于生产随机的颜色 - Random random = new Random(); - int r = random.nextInt(256); - int g = random.nextInt(256); - int b = random.nextInt(256); - itemStyle.put("color", "rgb(" + r + "," + g + "," + b + ")"); - result.put("itemStyle", itemStyle); - return result; - } - } - - -} diff --git a/src/test/java/com/dreamchaser/depository_manage/LineChartTest.java b/src/test/java/com/dreamchaser/depository_manage/LineChartTest.java deleted file mode 100644 index 4cfa35c3..00000000 --- a/src/test/java/com/dreamchaser/depository_manage/LineChartTest.java +++ /dev/null @@ -1,117 +0,0 @@ -package com.dreamchaser.depository_manage; - -import com.dreamchaser.depository_manage.service.DepositoryRecordService; -import com.dreamchaser.depository_manage.service.DepositoryService; -import com.dreamchaser.depository_manage.service.MaterialService; -import com.dreamchaser.depository_manage.service.MaterialTypeService; -import com.dreamchaser.depository_manage.utils.DateUtil; -import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; -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.junit4.SpringRunner; - -import java.util.*; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@RunWith(SpringRunner.class) -public class LineChartTest { - - - @Autowired - MaterialTypeService materialTypeService; - - @Autowired - DepositoryRecordService depositoryRecordService; - - @Autowired - MaterialService materialService; - - @Autowired - DepositoryService depositoryService; - - - @Test - public void main() { - Map day = getLineOrBarChartData(28L, "1", "day","bar"); - System.out.println(day); - } - - /** - * 获取折线图数据 - * @param depositoryId 待获取仓库Id - * @param type 查看类型(1入库2出库) - * @param dateType 日期类型(day按天month按月) - * @return - */ - public Map getLineOrBarChartData(Long depositoryId, String type, String dateType, String echartType) { - - - // 获取至今的日期名称 - List dayNames = new ArrayList<>(); - List dayTimeSpaces = new ArrayList<>(); - if ("month".equals(dateType)) { - //获取获取系统的当前日历对象 - - Map monthBeginToNow = DateUtil.getPreviousMonth(); - - // 获取至今的日期名称 - dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("monthNames"), String.class); - Collections.reverse(dayNames); - // 获取至今的日期时间戳 - dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("months"), Long.class); - Collections.reverse(dayTimeSpaces); - - } else if ("day".equals(dateType)) { - //获取获取系统的当前日历对象 - Map monthBeginToNow = DateUtil.getMonthBeginToNow(); - // 获取至今的日期名称 - dayNames = ObjectFormatUtil.objToList(monthBeginToNow.get("dayName"), String.class); - // 获取至今的日期时间戳 - dayTimeSpaces = ObjectFormatUtil.objToList(monthBeginToNow.get("dayTimeSpace"), Long.class); - dayTimeSpaces.add(Calendar.getInstance().getTimeInMillis()); - } - // 每天仓库出入库数目 - Map show_data = new HashMap<>(); - Map applicationRecordByDate = getLineOrBarChartDataForApplicationRecord(type, dayTimeSpaces, depositoryId,echartType); - show_data.put("data",applicationRecordByDate); - show_data.put("dayNames",dayNames); - return show_data; - } - - /** - * 获取当前折线图的具体数据 - * @param type 查看类型(1入库2出库) - * @param days 查询日期 - * @param depositoryId 仓库id - * @return - */ - public Map getLineOrBarChartDataForApplicationRecord(String type, List days, Long depositoryId, String echartType) { - Map map = new HashMap<>(); - if("line".equals(echartType)){ - map.put("type", "line"); - Map areaStyleItem = new HashMap<>(); - map.put("areaStyle", areaStyleItem); - }else if("bar".equals(echartType)){ - map.put("type", "bar"); - Map emphasisItem = new HashMap<>(); - emphasisItem.put("focus", "series"); - map.put("emphasis", emphasisItem); - Map labelItem = new HashMap<>(); - labelItem.put("show", true); - labelItem.put("position", "inside"); - map.put("label", labelItem); - } - int i; - List drCountbyDrName = new ArrayList<>(); - for (i = 0; i < days.size() - 1; i++) { - // 遍历 Map并计算各仓库的入库数 - // 获取一段时间内的库存额度 - Double depositoryRecordByDate = depositoryRecordService.findApplicationRecordByDate(days.get(i + 1), days.get(i), ObjectFormatUtil.toInteger(type), depositoryId); - drCountbyDrName.add(depositoryRecordByDate); - } - map.put("data", drCountbyDrName); - return map; - } -} diff --git a/src/test/java/com/dreamchaser/depository_manage/MoreDatasourceTest.java b/src/test/java/com/dreamchaser/depository_manage/MoreDatasourceTest.java deleted file mode 100644 index df0d3ace..00000000 --- a/src/test/java/com/dreamchaser/depository_manage/MoreDatasourceTest.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.dreamchaser.depository_manage; - -import com.dreamchaser.depository_manage.entity.Administration; -import com.dreamchaser.depository_manage.entity.UserByPort; -import com.dreamchaser.depository_manage.hrNew_mapper.AdministrativeMapper; -import com.dreamchaser.depository_manage.hrNew_mapper.UserMapper; -import com.dreamchaser.depository_manage.service.AdministrativeService; -import com.dreamchaser.depository_manage.service.UserService; -import com.dreamchaser.depository_manage.utils.EncryptionAlgorithmUtil; -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.junit4.SpringRunner; - -import java.util.*; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@RunWith(SpringRunner.class) -public class MoreDatasourceTest { - @Autowired - private UserService userService; - - @Autowired - private AdministrativeService administrativeService; - - @Test - public void test(){ - UserByPort userByWorkWechat = userService.findUserByWorkWechat("PangFuZhen"); - EncryptionAlgorithmUtil encryptionAlgorithmUtil = new EncryptionAlgorithmUtil(); - Map userKeyAndUserToken = encryptionAlgorithmUtil.getUserKeyAndUserToken(userByWorkWechat); - System.out.println(userKeyAndUserToken); - } - - - - -} diff --git a/src/test/java/com/dreamchaser/depository_manage/QyWxCallBackTest.java b/src/test/java/com/dreamchaser/depository_manage/QyWxCallBackTest.java deleted file mode 100644 index 2e32ba30..00000000 --- a/src/test/java/com/dreamchaser/depository_manage/QyWxCallBackTest.java +++ /dev/null @@ -1,318 +0,0 @@ -package com.dreamchaser.depository_manage; - -import com.alibaba.fastjson.JSONObject; -import com.dreamchaser.depository_manage.config.QyWxConfig; -import com.dreamchaser.depository_manage.pojo.ApplicationOutRecordP; -import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.*; -import com.dreamchaser.depository_manage.security.pool.RedisPool; -import com.dreamchaser.depository_manage.service.DepositoryRecordService; -import com.dreamchaser.depository_manage.utils.*; -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.junit4.SpringRunner; - -import java.util.*; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@RunWith(SpringRunner.class) -public class QyWxCallBackTest { - - @Autowired - DepositoryRecordService depositoryRecordService; - - @Autowired - RedisPool redisPool; - - public void callback(ApprovalInfo approvalInfo) { - - - // 获取当前审批的编号 - String spNo = approvalInfo.getSpNo(); - - // 获取当前审批关联的主订单 - String mainId = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_" + spNo, "mainId"); - - // 获取所有审批流程信息 - List spRecord_list = approvalInfo.getSpRecord(); - - // 获取审批流程信息 - ApprovalInfo_SpRecord as = null; - // 获取审批节点详情 - ApprovalInfo_Details approvalInfo_details = null; - // 定义当前流程审批时间 - String as_SpTime = ""; - // 定义当前审批流程是是否要通过仓储中心 - boolean flagForFirst = true; // 默认通过 - - // 设置当前审批是否为仓库管理员(1为部门负责人,2为仓储中心,3为仓库管理员) - int flagForDepository = 1; // 默认为部门负责人 - - // 定义当前审批人的企业微信uid列表 - List approverQyWxUid = new ArrayList<>(); - - - // 定义已完成审批的节点数 - int approval_complete_count = 0; - - - // 定义当前审批流程的节点总数 - int approval_count = spRecord_list.size(); - - // 获取审批申请状态变化类型:1-提单;2-同意;3-驳回;4-转审;5-催办;6-撤销;8-通过后撤销;10-添加备注 - String spStatus = approvalInfo.getStatuChangeEvent(); - - // 获取当前处理的节点及审批的节点数 - for (ApprovalInfo_SpRecord approvalInfo_SpRecord : spRecord_list) { - - // 获取当前审批节点详情。当节点为标签或上级时,一个节点可能有多个分支 - List details = approvalInfo_SpRecord.getDetails(); - - // 定义审批操作时间 - String spTime = ""; - // 定义审批操作状态 - String ad_SpStatus = ""; - // 定义审批详情 - ApprovalInfo_Details ap_detail = null; - - // 用于获取当前审批的最新节点 - for (ApprovalInfo_Details ad : details) { - - // 获取节点分支审批人审批操作时间,0为尚未操作 - spTime = ad.getSpTime(); - - // 如果当前审批节点已经处理 - if (!("0".equals(spTime))) { - - // 添加当前审批节点人的uid - approverQyWxUid.add(ad.getApprover().getUserId()); - - // 设置当前处理的详情 - ap_detail = ad; - // 设置当前审批的状态 - ad_SpStatus = ad.getSpStatus(); - // 已审批节点数+1 - approval_complete_count++; - break; - } - } - - - if (!"0".equals(spTime)) { - // 如果已经操作 - - // 盘点当前审批状态是否为回调时操作状态 - if (ad_SpStatus.equals(spStatus)) { - // 将当前审批进行暂存 - if (as == null) { - // 如果是当前并没有获取到审批节点 - as = approvalInfo_SpRecord; - as_SpTime = spTime; - approvalInfo_details = ap_detail; - } else { - // 如果已经获取到审批节点 - - // 获取当前审批节点处理时间 - long aLong = ObjectFormatUtil.toLong(spTime); - - // 获取之前节点的审批时间 - long aLong1 = ObjectFormatUtil.toLong(as_SpTime); - - if (aLong >= aLong1) { - // 如果当前审批节点是最近处理 - - // 更新当前审批节点 - as = approvalInfo_SpRecord; - as_SpTime = spTime; - approvalInfo_details = ap_detail; - flagForFirst = false; // 设置当前节点不是第一个节点 - } - } - } - - } - } - - // 1-审批中;2-已同意;3-已驳回;4-已转审 - if (!("1".equals(spStatus))) { - // 如果当前已经审批过 - if (QyWxConfig.out_approval_template_id.equals(approvalInfo.getTemplateId())) { - // 如果是物料出库申请审批 - - // 获取要进行判断的节点 - ApprovalInfo_SpRecord approvalInfo_spRecord = null; - if (spRecord_list.size() > 1 && spRecord_list.size() < 4) { - // 如果是除中心仓下办公用品库以外的仓库 - approvalInfo_spRecord = spRecord_list.get(1); // 获取该审批节点 - } - if (approvalInfo_spRecord != null) { - // 获取第二个节点中审批人信息 - List details = approvalInfo_spRecord.getDetails(); - // 定义当前是否为标签 - boolean flagForLabel = true; // 默认为标签 - - // 获取当前的主订单 - ApplicationOutRecordP applicationOutRecordPById = depositoryRecordService.findApplicationOutRecordPById(ObjectFormatUtil.toLong(mainId)); - if(applicationOutRecordPById == null){ - return; - } - if (Integer.compare(applicationOutRecordPById.getFlagForOpenDepository(), 2) == 0) { - // 如果是申请的开放仓库 - - // 获取当时发送审批时其他部门负责人Id - String otherDepartmentIdList = (String) redisPool.getRedisTemplateByDb(14).opsForHash().get("wms_QyWxMessage_" + spNo, "otherDepartmentIdList"); - if (otherDepartmentIdList != null) { - for (ApprovalInfo_Details ad : details - ) { - // 获取当前节点审批人userId - String approver = ad.getApprover().getUserId(); - flagForLabel = flagForLabel && otherDepartmentIdList.contains(approver); - } - } - } else { - flagForLabel = false; - } - - - if (!flagForLabel && approval_count < 3) { - // 如果第二个节点不是标签节点且总节点数小于3个 - - if (approval_complete_count > 1) { - // 如果完成审批的节点数大于1 - flagForDepository = 3; - - // 如果已经完成该审批记录,则进行删除 - redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_" + spNo); - } else { - // 如果当前是第一个节点 - flagForFirst = false; - } - - } else { - // 如果第二个节点是标签节点 - if (approval_complete_count > 2) { - // 如果完成审批的节点数大于2 - flagForDepository = 3; - // 如果已经完成该审批记录,则进行删除 - redisPool.getRedisTemplateByDb(14).delete("wms_QyWxMessage_" + spNo); - } else { - // 如果当前并不是标签节点后 - flagForDepository = 2; - } - - } - } - else { - // 如果为空则代表是中心仓下的办公用品库 - - int size = approverQyWxUid.size(); - if (size == 1) { - // 如果当前审批节点为第一个即部门负责人 - flagForFirst = true; - flagForDepository = 11; - }else if(size == 2){ - // 如果当前审批节点为第二个即平衡岗 - flagForFirst = true; - flagForDepository = 12; - } - else if(size == 3){ - // 如果当前审批节点为综合办负责人 - flagForFirst = false; - flagForDepository = 2; - }else{ - // 如果不是有操作的审批节点 - flagForDepository = 3; - } - } - - ApprovalInfo_Details finalApprovalInfo_details = approvalInfo_details; - boolean finalFlagForFirst = flagForFirst; - int finalFlagForDepository = flagForDepository; - depositoryRecordService.reviewByQyWxApprovalOut(mainId, finalApprovalInfo_details, "0a7ffa452096d330934052105a67794a", spStatus, approvalInfo.getSpNo(), finalFlagForFirst, finalFlagForDepository); - - } - // 开启一个线程用于进行下步操作 - } - - - } - - @Test - public void someTest() { - - ApprovalInfo approvalInfo = new ApprovalInfo(); - approvalInfo.setTemplateId("3WKiKVCzyLv3Y1LaHZxp4DimQEpCdvYP52HsAUtF"); - approvalInfo.setSpNo("202307250018"); - - - // 模拟第一个节点(部门负责人) - List spRecord_list = new ArrayList<>(); - ApprovalInfo_SpRecord asr1 = new ApprovalInfo_SpRecord(); - asr1.setSpStatus("2"); - List approvalInfo_Details1 = new ArrayList<>(); - ApprovalInfo_Details ad1 = new ApprovalInfo_Details(); - ad1.setSpStatus("2"); - ad1.setSpTime("1690267027000"); - ApprovalInfo_Details_Approver approver1 = new ApprovalInfo_Details_Approver(); - approver1.setUserId("WoBenShanLiang_3"); - ad1.setApprover(approver1); - approvalInfo_Details1.add(ad1); - asr1.setDetails(approvalInfo_Details1); - - // 模拟第二个节点(宋倩倩,平衡岗) - ApprovalInfo_SpRecord asr2 = new ApprovalInfo_SpRecord(); - asr2.setSpStatus("1"); - List approvalInfo_Details2 = new ArrayList<>(); - ApprovalInfo_Details ad2 = new ApprovalInfo_Details(); - ad2.setSpStatus("1"); - ad2.setSpTime("0"); - ApprovalInfo_Details_Approver approver2 = new ApprovalInfo_Details_Approver(); - approver2.setUserId("XinPing"); - ad2.setApprover(approver2); - approvalInfo_Details2.add(ad2); - asr2.setDetails(approvalInfo_Details2); - - // 模拟第三个节点(综合办负责人)(仓储负责人) - ApprovalInfo_SpRecord asr3 = new ApprovalInfo_SpRecord(); - asr3.setSpStatus("1"); - List approvalInfo_Details3 = new ArrayList<>(); - ApprovalInfo_Details ad3 = new ApprovalInfo_Details(); - ad3.setSpStatus("1"); - ad3.setSpTime("0"); - ApprovalInfo_Details_Approver approver3 = new ApprovalInfo_Details_Approver(); - approver3.setUserId("SiKai"); - ad3.setApprover(approver3); - approvalInfo_Details3.add(ad3); - asr3.setDetails(approvalInfo_Details3); - - // 模拟第四个节点(仓库管理员) - ApprovalInfo_SpRecord asr4 = new ApprovalInfo_SpRecord(); - asr4.setSpStatus("1"); - List approvalInfo_Details4 = new ArrayList<>(); - ApprovalInfo_Details ad4 = new ApprovalInfo_Details(); - ad4.setSpStatus("1"); - ad4.setSpTime("0"); - ApprovalInfo_Details_Approver approver4 = new ApprovalInfo_Details_Approver(); - approver4.setUserId("PangFuZhen"); - ad4.setApprover(approver4); - approvalInfo_Details4.add(ad4); - asr4.setDetails(approvalInfo_Details4); - - - spRecord_list.add(asr1); - spRecord_list.add(asr2); -// spRecord_list.add(asr3); -// spRecord_list.add(asr4); - approvalInfo.setSpRecord(spRecord_list); - - approvalInfo.setStatuChangeEvent("2"); - - - callback(approvalInfo); - - } - - - -} diff --git a/src/test/java/com/dreamchaser/depository_manage/SomeTest.java b/src/test/java/com/dreamchaser/depository_manage/SomeTest.java deleted file mode 100644 index 7b6edffb..00000000 --- a/src/test/java/com/dreamchaser/depository_manage/SomeTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.dreamchaser.depository_manage; - -import com.dreamchaser.depository_manage.depository_mapper.DepositoryRecordMapper; -import com.dreamchaser.depository_manage.entity.ApplicationOutRecordMin; -import com.dreamchaser.depository_manage.entity.UserByPort; -import com.dreamchaser.depository_manage.pojo.ApplicationOutRecordMinP; -import com.dreamchaser.depository_manage.service.DepositoryRecordService; -import com.dreamchaser.depository_manage.service.UserService; -import com.dreamchaser.depository_manage.service.impl.QyWxOperationService; -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.junit4.SpringRunner; - -import java.util.Scanner; - -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -public class SomeTest { - @Autowired - private QyWxOperationService qyWxOperationService; - - @Autowired - private DepositoryRecordMapper depositoryRecordMapper; - - @Autowired - private UserService userService; - - @Test - public void sendQyWxMsg() { - String a = "w,e,a,q,b"; - String[] split = a.split(","); - for (String next : split) { - if ("q".equals(next)) { - return; - } - System.out.println(next); - } - - } -} diff --git a/src/test/java/com/dreamchaser/depository_manage/SunburstChartTest.java b/src/test/java/com/dreamchaser/depository_manage/SunburstChartTest.java deleted file mode 100644 index 2b30d778..00000000 --- a/src/test/java/com/dreamchaser/depository_manage/SunburstChartTest.java +++ /dev/null @@ -1,247 +0,0 @@ -package com.dreamchaser.depository_manage; - -import com.alibaba.fastjson.JSONObject; -import com.dreamchaser.depository_manage.config.PublicConfig; -import com.dreamchaser.depository_manage.entity.MaterialType; -import com.dreamchaser.depository_manage.exception.MyException; -import com.dreamchaser.depository_manage.security.pool.RedisPool; -import com.dreamchaser.depository_manage.service.DepositoryRecordService; -import com.dreamchaser.depository_manage.service.DepositoryService; -import com.dreamchaser.depository_manage.service.MaterialService; -import com.dreamchaser.depository_manage.service.MaterialTypeService; -import com.dreamchaser.depository_manage.utils.DateUtil; -import com.dreamchaser.depository_manage.utils.ObjectFormatUtil; -import org.apache.ibatis.jdbc.Null; -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.junit4.SpringRunner; - -import java.text.SimpleDateFormat; -import java.util.*; -import java.util.concurrent.*; - -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@RunWith(SpringRunner.class) -public class SunburstChartTest { - - - @Autowired - MaterialTypeService materialTypeService; - - @Autowired - DepositoryRecordService depositoryRecordService; - - @Autowired - MaterialService materialService; - - @Autowired - DepositoryService depositoryService; - - @Autowired - RedisPool redisPool; - - - @Test - public void main() { - - String type = "2"; - // 获取本月之前的月份 - Map previousMonth = DateUtil.getPreviousMonth(); - // 获取月份的时间戳 - List months = ObjectFormatUtil.objToList(previousMonth.get("months"), Long.class); - // 获取月份名称 - List sourceList = ObjectFormatUtil.objToList(previousMonth.get("sourceList"), Object.class); - // 结果集 - List materialTypeNoParent = materialTypeService.findMaterialTypeNoParent(); - - Map sourceListTask = getSunBurstDataForApplication("7月", type, months.get(2), months.get(1), materialTypeNoParent, 56); - System.out.println(JSONObject.toJSONString(sourceListTask)); - // 用于返回结果 - - -// Map sunBurstDataByMtName = getSunBurstDataByMtName("7月", "1", months.get(2), months.get(1), "化验器具"); -// System.out.println(sunBurstDataByMtName); - } - - /** - * 用于获取出入库的旭日图数据 - * - * @param dayName 当前月份名称 - * @param type 查看类型 - * @param start 开始时间 - * @param end 结束时间 - * @param materialTypeAll 当前查看物料类型 - * @return - */ - public Map getSunBurstDataForApplication(String dayName, String type, Long start, Long end, List materialTypeAll, Integer depositoryId) { - - Map result = new HashMap<>(); - List resultForData = new ArrayList<>(); - double sum = 0.0; - - int maxThreadSize = materialTypeAll.size(); - - int threadSize = Runtime.getRuntime().availableProcessors(); - - ExecutorService exs = new ThreadPoolExecutor(threadSize, maxThreadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(maxThreadSize)); - - // 结果集 - List> futureList = new ArrayList>(); - // 1.定义CompletionService - CompletionService completionService = new ExecutorCompletionService(exs); - - - for (MaterialType materialType : materialTypeAll) { - // 测试 - Future future = completionService.submit(new getSunBurstDataForApplicationByDepository(type, start, end, materialType, depositoryId)); - futureList.add(future); - } - - for (int i = 0; i < materialTypeAll.size(); i++) { - Object obj = null; - try { - obj = completionService.take().get(); - sum = ObjectFormatUtil.sum(sum, ObjectFormatUtil.toDouble(ObjectFormatUtil.objToMap(obj, String.class, Object.class).get("value"))); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - resultForData.add(obj); - } - - - result.put("children", resultForData); - result.put("name", dayName); - result.remove("month"); - result.put("value", sum); - // 用于生产随机的颜色 - Random random = new Random(); - Map itemStyle = new HashMap<>(); - int r = random.nextInt(256); - int g = random.nextInt(256); - int b = random.nextInt(256); - itemStyle.put("color", "rgb(" + r + "," + g + "," + b + ")"); - result.put("itemStyle", itemStyle); - return result; - } - - /** - * 用于获取当前类别名称下当前月份的出入库的旭日图数据 - * - * @param dayName 当前月份 - * @param type 类型(1入库2出库) - * @param start 开始 - * @param end 结束 - * @param mtName 类别名称 - * @return - */ - public Map getSunBurstDataByMtName(String dayName, String type, Long start, Long end, String mtName, Integer depositoryId) { - List materialTypeByNames = materialTypeService.findMaterialTypeByName(mtName); - MaterialType materialType = null; - if (materialTypeByNames.size() > 0) { - materialType = materialTypeByNames.get(0); - } else { - throw new MyException("错误,不存在当前名称的类型"); - } - List childMaterialTypeList = materialTypeService.findChildForMaterialTypeByParent(materialType.getOldId()); - - - int threadSize = PublicConfig.availableVirtualMachine; - - int maxThreadSize = childMaterialTypeList.size(); - if (maxThreadSize < threadSize) { - maxThreadSize = threadSize * 2; - } - ExecutorService exs = new ThreadPoolExecutor(threadSize, maxThreadSize, 100, TimeUnit.SECONDS, new LinkedBlockingQueue<>(maxThreadSize)); - - // 结果集 - List> futureList = new ArrayList>(); - // 1.定义CompletionService - CompletionService completionService = new ExecutorCompletionService(exs); - - int runThreadSize = 0; - for (MaterialType value : childMaterialTypeList) { - Future submit = completionService.submit(new getSunBurstDataForApplicationByDepository(type, start, end, value, depositoryId)); - runThreadSize++; - futureList.add(submit); - } - - double sum = 0.0; - List resultForData = new ArrayList<>(); - for (int i = 0; i < runThreadSize; i++) { - Object obj = null; - try { - obj = completionService.take().get(); - resultForData.add(obj); - sum = ObjectFormatUtil.sum(sum, ObjectFormatUtil.toDouble(ObjectFormatUtil.objToMap(obj, String.class, Object.class).get("value"))); - } catch (InterruptedException | ExecutionException e) { - e.printStackTrace(); - } - } - Map result = new HashMap<>(); - result.put("children", resultForData); - result.put("name", dayName); - result.remove("month"); - result.put("value", sum); - // 用于生产随机的颜色 - Random random = new Random(); - Map itemStyle = new HashMap<>(); - int r = random.nextInt(256); - int g = random.nextInt(256); - int b = random.nextInt(256); - itemStyle.put("color", "rgb(" + r + "," + g + "," + b + ")"); - result.put("itemStyle", itemStyle); - return result; - } - - - /** - * 用于具体执行查询旭日图的多线程类 - */ - class getSunBurstDataForApplicationByDepository implements Callable { - - - String type; - Long start; - Long end; - MaterialType materialType; - Integer depositoryId; - - public getSunBurstDataForApplicationByDepository(String type, Long start, Long end, MaterialType materialType, Integer depositoryId) { - this.type = type; - this.start = start; - this.end = end; - this.materialType = materialType; - this.depositoryId = depositoryId; - } - - @Override - public Object call() throws Exception { - Map map = new HashMap<>(); - map.put("type", ObjectFormatUtil.toInteger(type)); - if (ObjectFormatUtil.toInteger(type) == 1) { - map.put("state", "已入库"); - } else if (ObjectFormatUtil.toInteger(type) == 2) { - map.put("state", "已出库"); - } - map.put("start", start); - map.put("end", end); - map.put("depositoryId", depositoryId); - map.put("oldId", materialType.getOldId()); - Map result = new HashMap<>(); - Double materialCountByMonth = depositoryRecordService.calMaterialTypeTopCount(map); - result.put("name", materialType.getTname()); - result.put("value", materialCountByMonth); - Map itemStyle = new HashMap<>(); - // 用于生产随机的颜色 - Random random = new Random(); - int r = random.nextInt(256); - int g = random.nextInt(256); - int b = random.nextInt(256); - itemStyle.put("color", "rgb(" + r + "," + g + "," + b + ")"); - result.put("itemStyle", itemStyle); - return result; - } - } -}