package com.matrix.system.dataMove; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.matrix.component.redis.RedisClient; import com.matrix.core.tools.StringUtils; import com.matrix.system.common.bean.SysUsers; import com.matrix.system.common.constance.AppConstance; import com.matrix.system.common.dao.SysUsersDao; import com.matrix.system.common.tools.PasswordUtil; import com.matrix.system.hive.bean.*; import com.matrix.system.hive.dao.*; import com.matrix.system.hive.service.SysVipInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.UnsupportedEncodingException; import java.math.BigDecimal; import java.security.NoSuchAlgorithmException; import java.util.*; /** * @author wzy * @date 2021-03-18 **/ @Service public class DateMoveServiceImpl { @Autowired private JdbcTemplate jdbcTemplate; @Autowired private SysShopInfoDao sysShopInfoDao; @Autowired private SysUsersDao sysUsersDao; @Autowired private SysVipLevelDao sysVipLevelDao; @Autowired private SysVipInfoDao sysVipInfoDao; @Autowired private SysVipInfoService sysVipInfoService; @Autowired private SysSupplierTypeDao sysSupplierTypeDao; @Autowired private SysSupplierInfoDao sysSupplierInfoDao; @Autowired private ShoppingGoodsCategoryDao shoppingGoodsCategoryDao; @Autowired private SysGoodsTypeDao sysGoodsTypeDao; @Autowired private ShoppingGoodsDao shoppingGoodsDao; @Autowired private ShoppingGoodsAssembleDao shoppingGoodsAssembleDao; @Autowired private RedisClient redisClient; private Long companyId = 35L; private Long shopId = 38L; public List> dataMove() { return jdbcTemplate.queryForList("select * from sys_vip_info limit 10"); } public List mapsToListBean(List> maps, Class t) { List list = new ArrayList<>(); for (Map map : maps) { String s = JSONObject.toJSONString(map); T object = JSONObject.parseObject(s, t); list.add(object); } return list; } public T mapToBane(Map map, Class t) { String s = JSONObject.toJSONString(map); return JSONObject.parseObject(s, t); } /** * 旧系统商店数据 * * @return */ @DS("slave") public List oldShopInfo() { List> maps = jdbcTemplate.queryForList("select * from sys_shop_info"); List shopInfos = new ArrayList<>(); for (Map map : maps) { String s = JSONObject.toJSONString(map); SysShopInfo sysShopInfo = JSONObject.parseObject(s, SysShopInfo.class); shopInfos.add(sysShopInfo); } return shopInfos; } public void toNewShopInfo(List shopInfos) { if (CollUtil.isNotEmpty(shopInfos)) { Map oldAndNewId = new HashMap<>(); for (SysShopInfo shopInfo : shopInfos) { if (shopInfo.getShopName().equals("总部")) { shopInfo.setShopType(1); shopInfo.setIsOpenNet(2); } else { shopInfo.setShopType(2); shopInfo.setIsOpenNet(1); } shopInfo.setShopShortName(shopInfo.getShopName()); shopInfo.setCompanyId(companyId); SysShopInfo query = new SysShopInfo(); query.setShopNo(shopInfo.getShopNo()); Long oldId = shopInfo.getId(); shopInfo.setId(null); // TODO 若迁往正式环境,这里需要变动 if (!shopInfo.getShopName().contains("美度") && !shopInfo.getShopName().contains("总店")) { sysShopInfoDao.insert(shopInfo); oldAndNewId.put(oldId, shopInfo.getId()); } else { SysShopInfo sysShopInfo = sysShopInfoDao.selectByShopName(shopInfo.getShopName()); oldAndNewId.put(oldId, sysShopInfo.getId()); } } redisClient.saveMapValue("shopId", oldAndNewId); } } @DS("slave") public List oldSysUsers() throws UnsupportedEncodingException, NoSuchAlgorithmException { List> maps = jdbcTemplate.queryForList("select * from users"); List list = new ArrayList<>(); String shopIds = redisClient.getCachedValue("shopId"); Map shopMap = JSONObject.parseObject(shopIds, Map.class); for (Map map : maps) { SysUsers sysUsers = new SysUsers(); sysUsers.setSuAccount((String) map.get("account")); sysUsers.setSuId((Long) map.get("id")); sysUsers.setSuName((String) map.get("name")); sysUsers.setSuTel((String) map.get("tel")); sysUsers.setSuPhoto((String) map.get("photo")); sysUsers.setSuEmail((String) map.get("email")); sysUsers.setSuUserType((String) map.get("user_type")); sysUsers.setSuAccountStatus((String) map.get("account_status")); sysUsers.setSuValid("Y"); sysUsers.setCompanyId(companyId); Long aaa = (Long) map.get("shop_id"); System.out.println(aaa); if (aaa != null) { Integer shopId = (Integer) shopMap.get(aaa.toString()); if (shopId != null) { sysUsers.setShopId(Long.parseLong(shopId.toString())); } } sysUsers.setSuRegisterTime((Date) map.get("register_time")); sysUsers.setCreateBy(AppConstance.SYSTEM_USER); sysUsers.setUpdateBy(AppConstance.SYSTEM_USER); sysUsers.setSuPassword(PasswordUtil.getEncrypUserPwd(sysUsers)); list.add(sysUsers); } return list; } @Transactional(rollbackFor = Exception.class) public void newSysUsers(List list) { if (CollUtil.isNotEmpty(list)) { Map sysUsersOldAndNew = new HashMap<>(); for (SysUsers sysUsers : list) { Long oldId = sysUsers.getSuId(); sysUsers.setSuId(null); sysUsersDao.insert(sysUsers); sysUsersOldAndNew.put(oldId, sysUsers.getSuId()); } redisClient.saveMapValue("sys_users", sysUsersOldAndNew); } } @DS("slave") public List vipLevelOld() { List> maps = jdbcTemplate.queryForList("select * from sys_vip_level"); return mapsToListBean(maps, SysVipLevel.class); } @Transactional(rollbackFor = Exception.class) public void vipLevelNew(List list) { if (CollUtil.isNotEmpty(list)) { Map ids = new HashMap<>(); for (SysVipLevel sysVipLevel : list) { Long oldId = sysVipLevel.getId(); sysVipLevel.setId(null); sysVipLevel.setCompanyId(companyId); sysVipLevel.setShopId(38L); sysVipLevelDao.insert(sysVipLevel); ids.put(oldId, sysVipLevel.getId()); } redisClient.saveMapValue("vip_level", ids); } } @DS("slave") public List vipInfoOld() { List> maps = jdbcTemplate.queryForList("select * from sys_vip_info"); return mapsToListBean(maps, SysVipInfo.class); } @Transactional(rollbackFor = Exception.class) public void vipInfoNew(List list) { if (CollUtil.isNotEmpty(list)) { Map vipInfoIds = new HashMap<>(); String shopIds = redisClient.getCachedValue("shopId"); Map shopMap = JSONObject.parseObject(shopIds, Map.class); String sysUsersIds = redisClient.getCachedValue("sys_users"); Map sysUsersMap = JSONObject.parseObject(sysUsersIds, Map.class); String vipLevelIds = redisClient.getCachedValue("vip_level"); Map vipLevelIdsMap = JSONObject.parseObject(vipLevelIds, Map.class); for (SysVipInfo sysVipInfo : list) { Long shopId = sysVipInfo.getShopId(); if (shopId != null) { Object newId = shopMap.get(shopId.toString()); if (newId != null) { sysVipInfo.setShopId(Long.parseLong(newId.toString())); } } Long staffId = sysVipInfo.getStaffId(); if (staffId != null) { Object o = sysUsersMap.get(staffId.toString()); if (o != null) { sysVipInfo.setStaffId(Long.parseLong(o.toString())); } } Long levelId = sysVipInfo.getLevelId(); if (levelId != null) { Object o = vipLevelIdsMap.get(levelId.toString()); if (o != null) { sysVipInfo.setLevelId(Long.parseLong(o.toString())); } } sysVipInfo.setCompanyId(companyId); Long oldId = sysVipInfo.getId(); sysVipInfo.setId(null); if (StrUtil.isNotBlank(sysVipInfo.getVipName())) { sysVipInfo.setZjm(StringUtils.toHanyuPinyin(sysVipInfo.getVipName()) + "," + StringUtils.toHeadWordHanyuPinyin(sysVipInfo.getVipName())); } sysVipInfoDao.insert(sysVipInfo); vipInfoIds.put(oldId, sysVipInfo.getId()); sysVipInfoService.addVipDefaultCard(sysVipInfo.getId()); } redisClient.saveMapValue("vip_info", vipInfoIds); } } @DS("slave") public List supplierTypeOld() { List> maps = jdbcTemplate.queryForList("select * from sys_supplier_type"); return mapsToListBean(maps, SysSupplierType.class); } @Transactional(rollbackFor = Exception.class) public void supplierNew(List list) { if (CollUtil.isNotEmpty(list)) { Map maps = new HashMap<>(); for (SysSupplierType sysSupplierType : list) { sysSupplierType.setShopId(shopId); sysSupplierType.setCompanyId(companyId); Long oldId = sysSupplierType.getId(); sysSupplierType.setId(null); sysSupplierTypeDao.insert(sysSupplierType); maps.put(oldId, sysSupplierType.getId()); } redisClient.saveMapValue("supplier_type", maps); } } @DS("slave") public List supplierInfoOld() { List> maps = jdbcTemplate.queryForList("select * from sys_supplier_info"); return mapsToListBean(maps, SysSupplierInfo.class); } @Transactional(rollbackFor = Exception.class) public void supplierInfoNew(List list) { if (CollUtil.isNotEmpty(list)) { Map maps = new HashMap<>(); String supplierTypeIds = redisClient.getCachedValue("supplier_type"); Map supplierTypeMap = JSONObject.parseObject(supplierTypeIds, Map.class); for (SysSupplierInfo sysSupplierInfo : list) { sysSupplierInfo.setShopId(shopId); sysSupplierInfo.setCompanyId(companyId); Object o = supplierTypeMap.get(sysSupplierInfo.getSupplType().toString()); if (o != null) { sysSupplierInfo.setSupplType(Long.parseLong(o.toString())); } Long oldId = sysSupplierInfo.getId(); sysSupplierInfo.setId(null); sysSupplierInfo.setSupplNo("MD" + sysSupplierInfo.getSupplNo()); sysSupplierInfoDao.insert(sysSupplierInfo); maps.put(oldId, sysSupplierInfo.getId()); } redisClient.saveMapValue("supplier_info", maps); } } @DS("slave") public List goodsCategoryOld() { String sql = "select * from shopping_goods_category"; List> maps = jdbcTemplate.queryForList(sql); return mapsToListBean(maps, ShoppingGoodsCategory.class); } @Transactional(rollbackFor = Exception.class) public void goodsCategoryNew(List list) { if (CollUtil.isNotEmpty(list)) { Map map = new HashMap<>(); for (ShoppingGoodsCategory shoppingGoodsCategory : list) { shoppingGoodsCategory.setShopId(shopId); shoppingGoodsCategory.setCompanyId(companyId); Long oldId = shoppingGoodsCategory.getId(); shoppingGoodsCategory.setId(null); shoppingGoodsCategoryDao.insert(shoppingGoodsCategory); map.put(oldId, shoppingGoodsCategory.getId()); } redisClient.saveMapValue("goods_category", map); } } @Transactional(rollbackFor = Exception.class) public void goodsCategoryParentIdUpdate() { String goodsCategoryIds = redisClient.getCachedValue("goods_category"); Map maps = JSONObject.parseObject(goodsCategoryIds, HashMap.class); for (Map.Entry entry : maps.entrySet()) { String sql = "update shopping_goods_category set parent_id=" + entry.getValue().toString() + " where parent_id="+ entry.getKey() +" and company_id=35"; jdbcTemplate.update(sql); } } @DS("slave") public List goodsTypeOld() { List> maps = jdbcTemplate.queryForList("select * from sys_goods_type"); return mapsToListBean(maps, SysGoodsType.class); } @Transactional(rollbackFor = Exception.class) public void goodsTypeNew(List goodsTypes) { if (CollUtil.isNotEmpty(goodsTypes)) { Map map = new HashMap<>(); for (SysGoodsType goodsType : goodsTypes) { goodsType.setCompanyId(companyId); Long oldID = goodsType.getId(); goodsType.setId(null); sysGoodsTypeDao.insert(goodsType); map.put(oldID, goodsType.getId()); } redisClient.saveMapValue("goods_type", map); } } @Transactional(rollbackFor = Exception.class) public void updateGoodsTypeParentId() { String goodsTypes = redisClient.getCachedValue("goods_type"); Map maps = JSONObject.parseObject(goodsTypes, HashMap.class); for (Map.Entry entry : maps.entrySet()) { String sql = "update sys_goods_type set PARENT_ID="+ entry.getValue() +" where company_id=35 and PARENT_ID="+entry.getKey(); jdbcTemplate.update(sql); } } /** * 家具产品 * @param goodType * @return */ @DS("slave") public List shoppingGoodsOld(String goodType) { List> maps = jdbcTemplate.queryForList("select * from shopping_goods where good_type='"+goodType+"'"); List shoppingGoods = mapsToListBean(maps, ShoppingGoods.class); Map goodsTypeIds = getRedisIds("goods_type"); Map supplierInfoIds = getRedisIds("supplier_info"); for (ShoppingGoods shoppingGood : shoppingGoods) { List> assembleList = jdbcTemplate.queryForList("select * from shopping_goods_assemble where shopping_goods_id=" + shoppingGood.getId()); if (CollUtil.isNotEmpty(assembleList)) { String goodsName = shoppingGood.getName(); ; for (Map assemble : assembleList) { shoppingGood.setPrice((Double) assemble.get("price")); Long goodsId = (Long) assemble.get("assemble_sku_id"); if (goodsId == null) { continue; } Map sku = jdbcTemplate.queryForMap("select * from sku where id=" + goodsId); Map sysGoods = jdbcTemplate.queryForMap("select * from sys_goods where id=" + sku.get("goods_id")); shoppingGood.setGoodsNo((String) sysGoods.get("goods_no")); shoppingGood.setCode((String) sysGoods.get("goods_no")); shoppingGood.setName(goodsName+ "->" + sysGoods.get("name")); shoppingGood.setUnit((String) sysGoods.get("unit")); shoppingGood.setMeasure((String) sysGoods.get("measure")); shoppingGood.setAlarmNum((Integer) sku.get("alarm_num")); shoppingGood.setHeadquarters(1); shoppingGood.setIsDel(1); shoppingGood.setZjm(StringUtils.toHanyuPinyin(shoppingGood.getName()) + "," + StringUtils.toHeadWordHanyuPinyin(shoppingGood.getName())); shoppingGood.setWeiDescription("数据迁移"); Integer goodsSortId = goodsTypeIds.get(sysGoods.get("goods_sort_id").toString()); shoppingGood.setGoodsSortId(Long.parseLong(goodsSortId.toString())); Integer supplierId = supplierInfoIds.get(sysGoods.get("supplier_id").toString()); if (supplierId != null) { shoppingGood.setSupplierId(Long.parseLong(supplierId.toString())); } // 因为旧系统 sys_order_item 表中,关联商品与sku的id相关 shoppingGood.setId(goodsId); } } else { System.out.println("这是ID啊:"+ shoppingGood.getId()); } } return shoppingGoods; } @DS("slave") public List shoppingGoodsProjectOld() { List> maps = jdbcTemplate.queryForList("select * from shopping_goods where good_type='项目'"); List shoppingGoods = mapsToListBean(maps, ShoppingGoods.class); for (ShoppingGoods shoppingGood : shoppingGoods) { Map goodsAssemble = jdbcTemplate.queryForMap("select * from shopping_goods_assemble where shopping_goods_id=" + shoppingGood.getId()); Map projInfo = jdbcTemplate.queryForMap("select * from sys_proj_info where id=" + goodsAssemble.get("assemble_proj_id")); shoppingGood.setTimeLength((Integer) projInfo.get("time_length")); shoppingGood.setCode((String) projInfo.get("proj_no")); shoppingGood.setCompanyId(companyId); shoppingGood.setHeadquarters(1); shoppingGood.setIsDel(1); shoppingGood.setZjm(StringUtils.toHanyuPinyin(shoppingGood.getName()) + "," + StringUtils.toHeadWordHanyuPinyin(shoppingGood.getName())); shoppingGood.setWeiDescription("数据迁移"); shoppingGood.setId((Long) goodsAssemble.get("assemble_proj_id")); } return shoppingGoods; } @DS("slave") public List shoppingGoodsTcList() { List> maps = jdbcTemplate.queryForList("select * from shopping_goods where good_type='套餐'"); List shoppingGoods = mapsToListBean(maps, ShoppingGoods.class); Map goodsSku = getRedisIds("shopping_goods_sku"); Map goodProj = getRedisIds("shopping_goods_proj"); Map goodsTypeIds = getRedisIds("goods_type"); Map supplierInfoIds = getRedisIds("supplier_info"); List projExist = new ArrayList<>(); List skuExist = new ArrayList<>(); for (ShoppingGoods shoppingGood : shoppingGoods) { List> assembles = jdbcTemplate.queryForList("select * from shopping_goods_assemble where shopping_goods_id=" + shoppingGood.getId()); shoppingGood.setCompanyId(companyId); shoppingGood.setHeadquarters(1); shoppingGood.setIsDel(1); shoppingGood.setZjm(StringUtils.toHanyuPinyin(shoppingGood.getName()) + "," + StringUtils.toHeadWordHanyuPinyin(shoppingGood.getName())); shoppingGood.setWeiDescription("数据迁移-tc"); List assembleList = mapsToListBean(assembles, ShoppingGoodsAssemble.class); for (ShoppingGoodsAssemble assembleGood : assembleList) { if(assembleGood.getAssembleSkuId() != null) { Integer skuId = goodsSku.get(assembleGood.getAssembleSkuId().toString()); // assembleGood.setAssembleSkuId(null); if (skuId == null && !skuExist.contains(assembleGood.getAssembleSkuId())) { Map goodsMap = jdbcTemplate.queryForMap("select * from shopping_goods where id=" + assembleGood.getShoppingGoodsId()); ShoppingGoods goods = mapToBane(goodsMap, ShoppingGoods.class); Map sku = jdbcTemplate.queryForMap("select * from sku where id=" + assembleGood.getAssembleSkuId()); Map sysGoods = jdbcTemplate.queryForMap("select * from sys_goods where id=" + sku.get("goods_id")); goods.setGoodsNo((String) sysGoods.get("goods_no")); goods.setCode((String) sysGoods.get("goods_no")); goods.setName(goods.getName()+ "->" + sysGoods.get("name")); goods.setUnit((String) sysGoods.get("unit")); goods.setMeasure((String) sysGoods.get("measure")); goods.setAlarmNum((Integer) sku.get("alarm_num")); goods.setHeadquarters(1); goods.setIsDel(1); goods.setGoodType("家居产品"); goods.setZjm(StringUtils.toHanyuPinyin(shoppingGood.getName()) + "," + StringUtils.toHeadWordHanyuPinyin(shoppingGood.getName())); goods.setWeiDescription("数据迁移-tc"); Integer goodsSortId = goodsTypeIds.get(sysGoods.get("goods_sort_id").toString()); goods.setGoodsSortId(Long.parseLong(goodsSortId.toString())); Integer supplierId = supplierInfoIds.get(sysGoods.get("supplier_id").toString()); if (supplierId != null) { shoppingGood.setSupplierId(Long.parseLong(supplierId.toString())); } assembleGood.setShoppingGoods(goods); skuExist.add(assembleGood.getAssembleSkuId()); } else { if (skuId != null) { assembleGood.setAssembleGoodId(skuId.longValue()); } } } if (assembleGood.getAssembleProjId() != null) { Integer projId = goodProj.get(assembleGood.getAssembleProjId().toString()); // 若为空,则需创建一个shopping_goods if (projId == null && !projExist.contains(assembleGood.getAssembleProjId())) { Map goodsMap = jdbcTemplate.queryForMap("select * from shopping_goods where id=" + assembleGood.getShoppingGoodsId()); ShoppingGoods goods = mapToBane(goodsMap, ShoppingGoods.class); Map projMap = jdbcTemplate.queryForMap("select * from sys_proj_info where id=" + assembleGood.getAssembleProjId()); goods.setTimeLength((Integer) projMap.get("time_length")); goods.setCode((String) projMap.get("proj_no")); goods.setCompanyId(companyId); goods.setHeadquarters(1); goods.setIsDel(1); goods.setGoodType("项目"); goods.setZjm(StringUtils.toHanyuPinyin(goods.getName()) + "," + StringUtils.toHeadWordHanyuPinyin(goods.getName())); goods.setWeiDescription("数据迁移-tc"); assembleGood.setShoppingGoods(goods); projExist.add(assembleGood.getAssembleProjId()); } else { if (projId != null) { assembleGood.setAssembleGoodId(projId.longValue()); } } // assembleGood.setAssembleProjId(null); } } if (CollUtil.isNotEmpty(assembleList)) { shoppingGood.setAssembleGoods(assembleList); } } return shoppingGoods; } @DS("slave") public List shoppingGoodsCzkOld() { List> maps = jdbcTemplate.queryForList("select * from shopping_goods where good_type='充值卡'"); List shoppingGoods = mapsToListBean(maps, ShoppingGoods.class); for (ShoppingGoods shoppingGood : shoppingGoods) { shoppingGood.setCompanyId(companyId); shoppingGood.setHeadquarters(1); shoppingGood.setIsDel(1); shoppingGood.setZjm(StringUtils.toHanyuPinyin(shoppingGood.getName()) + "," + StringUtils.toHeadWordHanyuPinyin(shoppingGood.getName())); shoppingGood.setWeiDescription("数据迁移"); } return shoppingGoods; } @DS("slave") public List shoppingGoodsZhkOld() { List> maps = jdbcTemplate.queryForList("select * from shopping_goods where good_type='综合卡'"); List shoppingGoods = mapsToListBean(maps, ShoppingGoods.class); Map goodsSku = getRedisIds("shopping_goods_sku"); Map goodProj = getRedisIds("shopping_goods_proj"); Map goodTc = getRedisIds("shopping_goods_tc"); Map goodCzk = getRedisIds("shopping_goods_czk"); for (ShoppingGoods shoppingGood : shoppingGoods) { List> assembles = jdbcTemplate.queryForList("select * from shopping_goods_assemble where shopping_goods_id=" + shoppingGood.getId()); List assembleList = mapsToListBean(assembles, ShoppingGoodsAssemble.class); for (ShoppingGoodsAssemble shoppingGoodsAssemble : assembleList) { Long goodsId = shoppingGoodsAssemble.getAssembleGoodId(); System.out.println("----->" + goodsId); if (goodsId == 8521 || goodsId == 8522) { continue; } Map goodsMap = jdbcTemplate.queryForMap("select * from shopping_goods where id=" + goodsId); ShoppingGoods goods = mapToBane(goodsMap, ShoppingGoods.class); if ("套餐".equals(goods.getGoodType())) { Integer tcId = goodTc.get(goodsId.toString()); shoppingGoodsAssemble.setAssembleGoodId(tcId.longValue()); } else if("充值卡".equals(goods.getGoodType())) { Integer czkId = goodCzk.get(goodsId.toString()); shoppingGoodsAssemble.setShoppingGoodsId(czkId.longValue()); } else if ("家居产品".equals(goods.getGoodType())) { Map skuMap = jdbcTemplate.queryForMap("select * from shopping_goods_assemble where shopping_goods_id=" + goods.getId()); ShoppingGoodsAssemble sku = mapToBane(skuMap, ShoppingGoodsAssemble.class); Integer skuId = goodsSku.get(sku.getAssembleSkuId().toString()); shoppingGoodsAssemble.setAssembleGoodId(skuId.longValue()); } else if ("项目".equals(goods.getGoodType())) { Map projMap = jdbcTemplate.queryForMap("select * from shopping_goods_assemble where shopping_goods_id=" + goods.getId()); ShoppingGoodsAssemble proj = mapToBane(projMap, ShoppingGoodsAssemble.class); Integer projId = goodProj.get(proj.getAssembleProjId().toString()); shoppingGoodsAssemble.setAssembleGoodId(projId.longValue()); } } shoppingGood.setAssembleGoods(assembleList); } return shoppingGoods; } @Transactional(rollbackFor = Exception.class) public void shoppingGoodsNew(List list, String goodsType) { if (CollUtil.isNotEmpty(list)) { Map map = new HashMap<>(); Map goodsCategory = getRedisIds("goods_category"); Map goodsSku = getRedisIds("shopping_goods_sku"); Map goodProj = getRedisIds("shopping_goods_proj"); Map sku = new HashMap<>(); Map proj = new HashMap<>(); for (ShoppingGoods shoppingGoods : list) { shoppingGoods.setCompanyId(companyId); if (shoppingGoods.getCateId() != null) { Integer cateId = goodsCategory.get(shoppingGoods.getCateId().toString()); if (cateId != null) { shoppingGoods.setCateId(Long.parseLong(cateId.toString())); } } Long oldId = shoppingGoods.getId(); shoppingGoods.setId(null); shoppingGoodsDao.insert(shoppingGoods); map.put(oldId, shoppingGoods.getId()); if ("套餐".equals(goodsType)) { List assembleGoods = shoppingGoods.getAssembleGoods(); if (CollUtil.isNotEmpty(assembleGoods)) { for (ShoppingGoodsAssemble assembleGood : assembleGoods) { assembleGood.setShoppingGoodsId(shoppingGoods.getId()); Long oldIdTc = assembleGood.getAssembleSkuId() == null ? assembleGood.getAssembleProjId() : assembleGood.getAssembleSkuId(); if (assembleGood.getShoppingGoods() != null) { assembleGood.getShoppingGoods().setId(null); shoppingGoodsDao.insert(assembleGood.getShoppingGoods()); if (assembleGood.getAssembleSkuId() == null) { proj.put(oldIdTc, assembleGood.getShoppingGoods().getId()); goodProj.put(oldIdTc.toString(), assembleGood.getShoppingGoods().getId().intValue()); } else { sku.put(oldIdTc, assembleGood.getShoppingGoods().getId()); goodsSku.put(oldIdTc.toString(), assembleGood.getShoppingGoods().getId().intValue()); } assembleGood.setAssembleGoodId(assembleGood.getShoppingGoods().getId()); } else { if (assembleGood.getAssembleSkuId() == null) { Integer projTc = goodProj.get(oldIdTc.toString()); Long goodsId = null; if (projTc == null) { goodsId = proj.get(oldIdTc); } else { goodsId = projTc.longValue(); } assembleGood.setAssembleGoodId(goodsId); } else { Integer skuTc = goodsSku.get(oldIdTc.toString()); Long goodsId = null; if (skuTc == null) { goodsId = sku.get(oldIdTc); } else { goodsId = skuTc.longValue(); } assembleGood.setAssembleGoodId(goodsId); } } assembleGood.setId(null); } shoppingGoodsAssembleDao.batchInsert(assembleGoods); } } } if ("家居产品".equals(goodsType)) { redisClient.saveMapValue("shopping_goods_sku", map); } else if ("项目".equals(goodsType)) { redisClient.saveMapValue("shopping_goods_proj", map); } else if ("套餐".equals(goodsType)) { redisClient.saveMapValue("shopping_goods_tc", map); redisClient.saveMapValue("shopping_goods_sku", goodsSku); redisClient.saveMapValue("shopping_goods_proj", goodProj); } else if ("充值卡".equals(goodsType)) { redisClient.saveMapValue("shopping_goods_czk", map); } } } @Transactional(rollbackFor = Exception.class) public void shoppingGoodsZhkNew(List list) { if (CollUtil.isNotEmpty(list)) { Map map = new HashMap<>(); Map goodsCategory = getRedisIds("goods_category"); for (ShoppingGoods shoppingGoods : list) { shoppingGoods.setCompanyId(companyId); if (shoppingGoods.getCateId() != null) { Integer cateId = goodsCategory.get(shoppingGoods.getCateId().toString()); if (cateId != null) { shoppingGoods.setCateId(Long.parseLong(cateId.toString())); } } Long oldId = shoppingGoods.getId(); shoppingGoods.setId(null); shoppingGoodsDao.insert(shoppingGoods); map.put(oldId, shoppingGoods.getId()); for (ShoppingGoodsAssemble assembleGood : shoppingGoods.getAssembleGoods()) { assembleGood.setShoppingGoodsId(shoppingGoods.getId()); assembleGood.setId(null); } shoppingGoodsAssembleDao.batchInsert(shoppingGoods.getAssembleGoods()); } redisClient.saveMapValue("shopping_goods_zhk", map); } } public Map getRedisIds(String key) { String idsStr = redisClient.getCachedValue(key); return JSONObject.parseObject(idsStr, HashMap.class); } @DS("slave") public List orderOld() { List> maps = jdbcTemplate.queryForList("select * from sys_order"); List orders = mapsToListBean(maps, SysOrder.class); Map goodsSku = getRedisIds("shopping_goods_sku"); Map goodProj = getRedisIds("shopping_goods_proj"); Map goodTc = getRedisIds("shopping_goods_tc"); Map goodCZK = getRedisIds("shopping_goods_czk"); Map goodZHK = getRedisIds("shopping_goods_zhk"); Map shopIds = getRedisIds("shopId"); Map sysUsers = getRedisIds("sys_users"); Map vipInfos = getRedisIds("vip_info"); for (SysOrder order : orders) { List> itemsMap = jdbcTemplate.queryForList("select * from sys_order_item where ORDER_ID=" + order.getId()); Integer shopId = shopIds.get(order.getShopId().toString()); order.setShopId(shopId.longValue()); Integer statffId = sysUsers.get(order.getStaffId().toString()); if (statffId != null) { order.setStaffId(statffId.longValue()); } else { order.setStaffId(-order.getStaffId()); } Integer vipId = vipInfos.get(order.getVipId().toString()); if (vipId != null) { order.setVipId(vipId.longValue()); } else { order.setVipId(-order.getVipId()); } order.setCompanyId(companyId); List items = mapsToListBean(itemsMap, SysOrderItem.class); Double cardPay = 0D; Double cashPay = 0D; Double arrears = 0D; Map shoppingGoodsIds = new HashMap<>(); if (CollUtil.isNotEmpty(items)) { Long goodsId = items.get(0).getGoodsId(); Map goods = jdbcTemplate.queryForMap("select * from shopping_goods where id=" + goodsId); order.setShopShortName((String) goods.get("name")); for (SysOrderItem item : items) { Double itemCard = item.getCardPay() == null ? 0D : item.getCardPay(); Double itemCash = item.getCashPay() == null ? 0D : item.getCashPay(); Double itemArrears = item.getArrears() == null ? 0D : item.getArrears(); cardPay += itemCard; cashPay += itemCash; arrears += itemArrears; if (itemCard != 0) { item.setPayMethod("划扣"); } else { item.setPayMethod("现金"); } Long oldID = item.getGoodsId(); switch (item.getType()) { case "家居产品" : Map skuMap = jdbcTemplate.queryForMap("select * from shopping_goods_assemble where id=" + item.getAssembleId()); Long skuId = (Long) skuMap.get("assemble_sku_id"); Integer skuGoodsId = goodsSku.get(skuId.toString()); if (skuGoodsId != null) { item.setGoodsId(skuGoodsId.longValue()); } else { item.setGoodsId(-item.getAssembleId()); } break; case "项目" : Map projMap = jdbcTemplate.queryForMap("select * from shopping_goods_assemble where id=" + item.getAssembleId()); Long projId = (Long) projMap.get("assemble_proj_id"); Integer projGoodsId = goodProj.get(projId.toString()); if (projGoodsId != null) { item.setGoodsId(projGoodsId.longValue()); } else { item.setGoodsId(-item.getAssembleId()); } break; case "套餐" : Integer tcId = goodTc.get(item.getGoodsId().toString()); if (tcId != null) { item.setGoodsId(tcId.longValue()); } else { item.setGoodsId(-item.getGoodsId()); } break; case "充值卡" : Integer czkId = goodCZK.get(item.getGoodsId().toString()); if (czkId != null) { item.setGoodsId(czkId.longValue()); } else { item.setGoodsId(-item.getGoodsId()); } break; case "综合卡" : Integer zhkId = goodZHK.get(item.getGoodsId().toString()); if (zhkId != null) { item.setGoodsId(zhkId.longValue()); } else { item.setGoodsId(-item.getGoodsId()); } break; default: } shoppingGoodsIds.put(oldID, item.getGoodsId()); } order.setItems(items); } List flows = new ArrayList<>(); if (cardPay != 0D) { flows.add(setOrderFLow(order, "储值卡", cardPay, 1)); } if (cashPay != 0D) { flows.add(setOrderFLow(order, "现金支付", cashPay, 1)); } if (arrears != 0D) { flows.add(setOrderFLow(order, "欠款", arrears, 1)); } order.setFlows(flows); List> achievesMap = jdbcTemplate.queryForList("select sale_id, beault_id, shop_id, datatime, order_id, order_item_id, shopping_goods_id, vip_id, order_type, sum(t1) as t1 from achieve_new where order_type='订单' and order_id="+ order.getId() + " group by sale_id, beault_id, shop_id, datatime, order_id, order_item_id, shopping_goods_id, vip_id, order_type"); if (CollUtil.isNotEmpty(achievesMap)) { List achieves = mapsToListBean(achievesMap, AchieveNew.class); for (AchieveNew achieve : achieves) { Integer achiShopId = shopIds.get(achieve.getShopId().toString()); achieve.setShopId(achiShopId.longValue()); if (achieve.getBeaultId() == null) { achieve.setBeaultId(achieve.getSaleId()); achieve.setAchieveType("顾问业绩"); } else { achieve.setAchieveType("美疗师业绩"); } Integer beaultId = sysUsers.get(achieve.getBeaultId().toString()); if (beaultId != null) { achieve.setBeaultId(beaultId.longValue()); } else { achieve.setBeaultId(-achieve.getBeaultId()); } Integer saleId = sysUsers.get(achieve.getSaleId().toString()); if (saleId != null) { achieve.setSaleId(saleId.longValue()); } else { achieve.setSaleId(-achieve.getSaleId()); } Integer achiVipId = vipInfos.get(achieve.getVipId().toString()); if (achiVipId != null) { achieve.setVipId(achiVipId.longValue()); } else { achieve.setVipId(-achieve.getVipId()); } achieve.setGoodsCash(Double.parseDouble(achieve.getT1())); achieve.setCompanyId(companyId); achieve.setShoppingGoodsId(shoppingGoodsIds.get(achieve.getShoppingGoodsId())); } order.setAchieveNews(achieves); } } return orders; } public SysOrderFlow setOrderFLow(SysOrder sysOrder, String type, Double amount, int index) { SysOrderFlow flow = new SysOrderFlow(); flow.setFlowContent(sysOrder.getShopShortName() + "等" + sysOrder.getItems().size() + "件产品"); flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY); flow.setAmount(new BigDecimal(amount)); flow.setFlowNo("F" + sysOrder.getOrderNo() + "-" + index); flow.setVipId(sysOrder.getVipId()); flow.setShopId(sysOrder.getShopId()); flow.setCompanyId(sysOrder.getCompanyId()); flow.setPayMethod(type); return flow; } @Autowired private SysOrderDao sysOrderDao; @Autowired private SysOrderItemDao sysOrderItemDao; @Autowired private SysOrderFlowDao sysOrderFlowDao; @Autowired private AchieveNewDao achieveNewDao; @Transactional(rollbackFor = Exception.class) public void orderNew(List list) { if (CollUtil.isNotEmpty(list)) { Map orderIds = new HashMap<>(); Map itemIds = new HashMap<>(); for (SysOrder sysOrder : list) { Long oldOrderId = sysOrder.getId(); sysOrder.setId(null); sysOrderDao.insert(sysOrder); orderIds.put(oldOrderId, sysOrder.getId()); if (CollUtil.isNotEmpty(sysOrder.getItems())) { for (SysOrderItem item : sysOrder.getItems()) { Long oldItemId = item.getId(); item.setOrderId(sysOrder.getId()); item.setId(null); sysOrderItemDao.insert(item); itemIds.put(oldItemId, item.getId()); } } if (CollUtil.isNotEmpty(sysOrder.getFlows())) { for (SysOrderFlow flow : sysOrder.getFlows()) { flow.setOrderId(oldOrderId); sysOrderFlowDao.insert(flow); } } if (CollUtil.isNotEmpty(sysOrder.getAchieveNews())) { for (AchieveNew achieveNew : sysOrder.getAchieveNews()) { achieveNew.setOrderId(oldOrderId); Long item = itemIds.get(achieveNew.getOrderItemId()); achieveNew.setOrderItemId(item); } achieveNewDao.batchInsert(sysOrder.getAchieveNews()); } } redisClient.saveMapValue("order", orderIds); redisClient.saveMapValue("order_item", itemIds); } } }