src/main/java/com/zy/crm/manager/controller/CstmrController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/crm/manager/controller/OrderController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/crm/manager/controller/result/FollowerTableVo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/crm/manager/mapper/OrderMapper.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/crm/manager/service/OrderService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/crm/manager/service/impl/OrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/OrderMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/crm/manager/controller/CstmrController.java
@@ -7,11 +7,10 @@ import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; import com.core.exception.CoolException; import com.zy.crm.common.web.BaseController; import com.zy.crm.manager.controller.result.CstmrFollowerTableVo; import com.zy.crm.manager.controller.result.FollowerTableVo; import com.zy.crm.manager.entity.Cstmr; import com.zy.crm.manager.entity.CstmrFoll; import com.zy.crm.manager.entity.CstmrType; @@ -71,19 +70,6 @@ ); } private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ for (Map.Entry<String, Object> entry : map.entrySet()){ String val = String.valueOf(entry.getValue()); if (val.contains(RANGE_TIME_LINK)){ String[] dates = val.split(RANGE_TIME_LINK); wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); } else { wrapper.like(entry.getKey(), val); } } } @RequestMapping(value = "/cstmr/add/auth") @ManagerAuth public R add(Cstmr cstmr) { @@ -124,17 +110,6 @@ cstmrService.deleteById(id); } return R.ok(); } @RequestMapping(value = "/cstmr/export/auth") @ManagerAuth public R export(@RequestBody JSONObject param){ EntityWrapper<Cstmr> wrapper = new EntityWrapper<>(); List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); Map<String, Object> map = excludeTrash(param.getJSONObject("cstmr")); convert(map, wrapper); List<Cstmr> list = cstmrService.selectList(wrapper); return R.ok(exportSupport(list, fields)); } @RequestMapping(value = "/cstmrQuery/auth") @@ -291,10 +266,10 @@ @ManagerAuth public R cstmrFollowersTable(@RequestParam("cstmrId") Long cstmrId) { List<CstmrFoll> cstmrFolls = cstmrFollService.selectList(new EntityWrapper<CstmrFoll>().eq("cstmr_id", cstmrId).orderBy("id", false)); List<CstmrFollowerTableVo> result = new ArrayList<>(); List<FollowerTableVo> result = new ArrayList<>(); for (CstmrFoll cstmrFoll : cstmrFolls) { User user = userService.selectById(cstmrFoll.getUserId()); CstmrFollowerTableVo vo = new CstmrFollowerTableVo(); FollowerTableVo vo = new FollowerTableVo(); vo.setUserId(user.getId()); vo.setUserName(user.getNickname()); result.add(vo); src/main/java/com/zy/crm/manager/controller/OrderController.java
@@ -7,18 +7,30 @@ import com.core.annotations.ManagerAuth; import com.core.common.BaseRes; import com.core.common.Cools; import com.core.common.DateUtils; import com.core.common.R; import com.core.exception.CoolException; import com.zy.crm.common.web.BaseController; import com.zy.crm.manager.controller.result.FollowerTableVo; import com.zy.crm.manager.entity.Order; import com.zy.crm.manager.entity.OrderFoll; import com.zy.crm.manager.service.OrderFollService; import com.zy.crm.manager.service.OrderService; import com.zy.crm.system.entity.User; import com.zy.crm.system.service.UserService; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; import java.util.*; @RestController public class OrderController extends BaseController { @@ -32,38 +44,39 @@ return R.ok(orderService.selectById(String.valueOf(id))); } @RequestMapping(value = "/order/list/auth") @RequestMapping(value = "/order/page/auth") @ManagerAuth public R list(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, @RequestParam(required = false)String orderByField, @RequestParam(required = false)String orderByType, @RequestParam(required = false)String condition, @RequestParam Map<String, Object> param){ EntityWrapper<Order> wrapper = new EntityWrapper<>(); excludeTrash(param); convert(param, wrapper); allLike(Order.class, param.keySet(), wrapper, condition); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper)); } private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ for (Map.Entry<String, Object> entry : map.entrySet()){ String val = String.valueOf(entry.getValue()); if (val.contains(RANGE_TIME_LINK)){ String[] dates = val.split(RANGE_TIME_LINK); wrapper.ge(entry.getKey(), DateUtils.convert(dates[0])); wrapper.le(entry.getKey(), DateUtils.convert(dates[1])); } else { wrapper.like(entry.getKey(), val); } } public R list(@RequestParam(defaultValue = "1") Integer curr, @RequestParam(defaultValue = "10") Integer limit, @RequestParam(required = false) String condition, @RequestParam(required = false, value = "dept_id") Long deptId, @RequestParam(required = false, value = "user_id") Long userId){ return R.ok(orderService.getPage(new Page<>(curr, limit) , getHostId() , deptId == null ? null : String.valueOf(deptId) , userId == null ? getUserId() : userId , condition) ); } @RequestMapping(value = "/order/add/auth") @ManagerAuth public R add(Order order) { Long hostId = getHostId(); if (orderService.selectByUuid(hostId, order.getUuid()) != null) { throw new CoolException("客户已存在"); } order.setHostId(hostId); order.setUuid(orderService.getUuid(hostId)); // 客户代号 order.setDeptId(getDeptId()); // 所属部门 order.setUserId(getUserId()); // 所属人员 order.setCreateBy(getUserId()); order.setCreateTime(new Date()); order.setUpdateBy(getUserId()); order.setUpdateTime(new Date()); order.setStatus(1); orderService.insert(order); return R.ok(); } @@ -74,6 +87,8 @@ if (Cools.isEmpty(order) || null==order.getId()){ return R.error(); } order.setUpdateBy(getUserId()); order.setUpdateTime(new Date()); orderService.updateById(order); return R.ok(); } @@ -85,17 +100,6 @@ orderService.deleteById(id); } return R.ok(); } @RequestMapping(value = "/order/export/auth") @ManagerAuth public R export(@RequestBody JSONObject param){ EntityWrapper<Order> wrapper = new EntityWrapper<>(); List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class); Map<String, Object> map = excludeTrash(param.getJSONObject("order")); convert(map, wrapper); List<Order> list = orderService.selectList(wrapper); return R.ok(exportSupport(list, fields)); } @RequestMapping(value = "/orderQuery/auth") @@ -124,4 +128,103 @@ return R.ok(); } /*************************************** 数据相关 ***********************************************/ /** * excel导入 */ @PostMapping(value = "/order/excel/import/auth") @ManagerAuth(memo = "甲方单位Excel导入") // @Transactional public R orderExcelImport(MultipartFile file) throws IOException { InputStream inStream = file.getInputStream(); String fileMime = file.getContentType(); int excelVersion = 2007; if ("application/vnd.ms-excel".equals(fileMime)) { excelVersion = 2003; } Workbook book = null; if (excelVersion == 2003) { book = new HSSFWorkbook(inStream); } else { // 当 excel 是 2007 时 book = new XSSFWorkbook(inStream); } Sheet sheet = book.getSheetAt(0); int totalRows = sheet.getLastRowNum() + 1; // 总 Long userId = getUserId(); Long hostId = getHostId(); Long deptId = getDeptId(); Date now = new Date(); DataFormatter dataFormatter = new DataFormatter(); for (int i = 2; i < totalRows; i++) { } return R.ok(); } /** * excel导出 */ @PostMapping(value = "/order/excel/export/auth") @ManagerAuth public void orderExcelExport(HttpServletResponse response) throws IOException { } /******************************** 跟进人 ***************************************/ @Autowired private OrderFollService orderFollService; @Autowired private UserService userService; @RequestMapping(value = "/order/followers/table/auth") @ManagerAuth public R orderFollowersTable(@RequestParam("orderId") Long orderId) { List<OrderFoll> orderFolls = orderFollService.selectList(new EntityWrapper<OrderFoll>().eq("order_id", orderId).orderBy("id", false)); List<FollowerTableVo> result = new ArrayList<>(); for (OrderFoll orderFoll : orderFolls) { User user = userService.selectById(orderFoll.getUserId()); FollowerTableVo vo = new FollowerTableVo(); vo.setUserId(user.getId()); vo.setUserName(user.getNickname()); result.add(vo); } return R.ok().add(result); } @RequestMapping(value = "/order/followers/add/auth") @ManagerAuth @Transactional public R orderFollowersAdd(@RequestParam("orderId") Long orderId, @RequestParam("followerIds[]") Long[] followerIds) { if (Cools.isEmpty(orderId, followerIds)) { return R.parse(BaseRes.PARAM); } for (Long userId : followerIds) { if (orderFollService.selectCount(new EntityWrapper<OrderFoll>().eq("order_id", orderId).eq("user_id", userId)) == 0) { OrderFoll orderFoll = new OrderFoll(); orderFoll.setOrderId(orderId); orderFoll.setUserId(userId); if (!orderFollService.insert(orderFoll)) { throw new CoolException("添加失败,请联系管理员"); } } } return R.ok("添加成功"); } @RequestMapping(value = "/order/followers/remove/auth") @ManagerAuth public R orderFollowersRemove(@RequestParam("orderId") Long orderId, @RequestParam("userId") Long userId) { if (Cools.isEmpty(orderId, userId)) { return R.parse(BaseRes.PARAM); } if (!orderFollService.delete(new EntityWrapper<OrderFoll>().eq("order_id", orderId).eq("user_id", userId))) { throw new CoolException("删除失败,请联系管理员"); } return R.ok("删除成功"); } } src/main/java/com/zy/crm/manager/controller/result/FollowerTableVo.java
File was renamed from src/main/java/com/zy/crm/manager/controller/result/CstmrFollowerTableVo.java @@ -6,7 +6,7 @@ * Created by vincent on 2022/11/7 */ @Data public class CstmrFollowerTableVo { public class FollowerTableVo { private Long userId; src/main/java/com/zy/crm/manager/mapper/OrderMapper.java
@@ -1,12 +1,22 @@ package com.zy.crm.manager.mapper; import com.zy.crm.manager.entity.Order; import com.baomidou.mybatisplus.mapper.BaseMapper; import com.baomidou.mybatisplus.plugins.Page; import com.zy.crm.manager.entity.Order; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @Mapper @Repository public interface OrderMapper extends BaseMapper<Order> { Order selectByUuid(@Param("hostId") Long hostId, @Param("uuid") String uuid); Order selectOrderByNewestUuid(@Param("hostId") Long hostId); List<Order> listByPage(Page<Order> page, @Param("hostId")Long hostId, @Param("deptId") String deptId, @Param("userId") Long userId , @Param("condition") String condition); } src/main/java/com/zy/crm/manager/service/OrderService.java
@@ -1,8 +1,15 @@ package com.zy.crm.manager.service; import com.zy.crm.manager.entity.Order; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.IService; import com.zy.crm.manager.entity.Order; public interface OrderService extends IService<Order> { Order selectByUuid(Long hostId, String uuid); String getUuid(Long hostId); Page<Order> getPage(Page<Order> page, Long hostId, String deptId, Long userId, String condition); } src/main/java/com/zy/crm/manager/service/impl/OrderServiceImpl.java
@@ -1,12 +1,61 @@ package com.zy.crm.manager.service.impl; import com.zy.crm.manager.mapper.OrderMapper; import com.zy.crm.manager.entity.Order; import com.zy.crm.manager.service.OrderService; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.core.common.Cools; import com.zy.crm.manager.entity.Order; import com.zy.crm.manager.mapper.OrderMapper; import com.zy.crm.manager.service.OrderService; import org.springframework.stereotype.Service; @Service("orderService") public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService { @Override public Order selectByUuid(Long hostId, String uuid) { return this.baseMapper.selectByUuid(hostId, uuid); } @Override public Page<Order> getPage(Page<Order> page, Long hostId, String deptId, Long userId, String condition) { return page.setRecords(baseMapper.listByPage(page, hostId, deptId, userId, condition)); } @Override public String getUuid(Long hostId) { String uuid = null; int times = 0; while (Cools.isEmpty(uuid)) { if (times > 100) { break; } String nextUuid = getNextUuid(hostId); if (selectByUuid(hostId, nextUuid) == null) { uuid = nextUuid; } times ++; } return uuid; } private String getNextUuid(Long hostId) { Order order = this.baseMapper.selectOrderByNewestUuid(hostId); if (order == null) { return "0001"; } return zerofill(String.valueOf(Integer.parseInt(order.getUuid()) + 1), 4); } public static String zerofill(String msg, Integer count){ if (msg.length() == count){ return msg; } else if (msg.length() > count){ return msg.substring(0, 16); } else { StringBuilder msgBuilder = new StringBuilder(msg); for (int i = 0; i<count-msg.length(); i++){ msgBuilder.insert(0,"0"); } return msgBuilder.toString(); } } } src/main/resources/mapper/OrderMapper.xml
@@ -30,4 +30,65 @@ </resultMap> <select id="selectByUuid" resultMap="BaseResultMap"> select * from man_order where 1=1 and uuid = #{uuid} <if test="hostId != null"> and host_id = #{hostId} </if> </select> <select id="selectOrderByNewestUuid" resultMap="BaseResultMap"> select top 1 * from man_order where 1=1 <if test="hostId != null"> and host_id = #{hostId} </if> order by uuid + 0 desc </select> <select id="listByPage" resultMap="BaseResultMap"> SELECT mo.* FROM man_order mo LEFT JOIN sys_dept sd ON mo.dept_id = sd.id WHERE 1=1 <choose> <when test="deptId != null and deptId != ''"> AND (CHARINDEX(','+#{deptId}+',', ','+sd.path+',') > 0 OR sd.id = #{deptId}) </when> <otherwise> and ( user_id = #{userId} or mo.id in ( select order_id from man_order_foll where 1=1 and user_id = #{userId} ) ) </otherwise> </choose> <if test="hostId != null"> and mo.host_id = #{hostId} </if> <if test="condition != null and condition != ''"> and ( mo.uuid like concat('%',#{condition},'%') or mo.name like concat('%',#{condition},'%') or mo.tel like concat('%',#{condition},'%') or mo.contacts like concat('%',#{condition},'%') or mo.remarks like concat('%',#{condition},'%') or mo.director like concat('%',#{condition},'%') or mo.addr like concat('%',#{condition},'%') ) </if> ORDER BY mo.create_time DESC </select> </mapper>