소스 검색

大屏分析报表,滚动效果

zhangshuling 1 년 전
부모
커밋
071133a00e

+ 126 - 0
xzl-admin/src/main/java/com/xzl/web/controller/userPortrait/BussIllegalCreditCustomerController.java

@@ -0,0 +1,126 @@
+package com.xzl.web.controller.userPortrait;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.xzl.system.domain.BussIllegalCustomer;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.xzl.common.annotation.Log;
+import com.xzl.common.core.controller.BaseController;
+import com.xzl.common.core.domain.AjaxResult;
+import com.xzl.common.enums.BusinessType;
+import com.xzl.system.domain.BussIllegalCreditCustomer;
+import com.xzl.system.service.IBussIllegalCreditCustomerService;
+import com.xzl.common.utils.poi.ExcelUtil;
+import com.xzl.common.core.page.TableDataInfo;
+import org.springframework.web.multipart.MultipartFile;
+
+/**
+ * 【请填写功能名称】Controller
+ *
+ * @author xzl
+ * @date 2023-12-28
+ */
+@RestController
+@RequestMapping("/buss/illegal-credit-customer")
+public class BussIllegalCreditCustomerController extends BaseController {
+  @Autowired
+  private IBussIllegalCreditCustomerService bussIllegalCreditCustomerService;
+
+  /**
+   * 查询【请填写功能名称】列表
+   */
+  @PreAuthorize("@ss.hasPermi('buss:illegal-credit-customer:list')")
+  @GetMapping("/list")
+  public TableDataInfo list(BussIllegalCreditCustomer bussIllegalCreditCustomer) {
+    startPage();
+    List<BussIllegalCreditCustomer> list = bussIllegalCreditCustomerService.selectBussIllegalCreditCustomerList(bussIllegalCreditCustomer);
+    return getDataTable(list);
+  }
+
+
+  /**
+   * 导出【请填写功能名称】列表
+   */
+  @PreAuthorize("@ss.hasPermi('buss:illegal-credit-customer:export')")
+  @Log(title = "【请填写功能名称】", businessType = BusinessType.EXPORT)
+  @PostMapping("/export")
+  public void export(HttpServletResponse response, BussIllegalCreditCustomer bussIllegalCreditCustomer) {
+    List<BussIllegalCreditCustomer> list = bussIllegalCreditCustomerService.selectBussIllegalCreditCustomerList(bussIllegalCreditCustomer);
+    ExcelUtil<BussIllegalCreditCustomer> util = new ExcelUtil<BussIllegalCreditCustomer>(BussIllegalCreditCustomer.class);
+    util.exportExcel(response, list, "【请填写功能名称】数据");
+  }
+
+  /**
+   * 获取【请填写功能名称】详细信息
+   */
+  @PreAuthorize("@ss.hasPermi('buss:illegal-credit-customer:query')")
+  @GetMapping(value = "/{id}")
+  public AjaxResult getInfo(@PathVariable("id") String id) {
+    return success(bussIllegalCreditCustomerService.selectBussIllegalCreditCustomerById(id));
+  }
+
+  /**
+   * 新增【请填写功能名称】
+   */
+  @PreAuthorize("@ss.hasPermi('buss:illegal-credit-customer:add')")
+  @Log(title = "【请填写功能名称】", businessType = BusinessType.INSERT)
+  @PostMapping
+  public AjaxResult add(@RequestBody BussIllegalCreditCustomer bussIllegalCreditCustomer) {
+    return toAjax(bussIllegalCreditCustomerService.insertBussIllegalCreditCustomer(bussIllegalCreditCustomer));
+  }
+
+  /**
+   * 修改【请填写功能名称】
+   */
+  @PreAuthorize("@ss.hasPermi('buss:illegal-credit-customer:edit')")
+  @Log(title = "【请填写功能名称】", businessType = BusinessType.UPDATE)
+  @PutMapping
+  public AjaxResult edit(@RequestBody BussIllegalCreditCustomer bussIllegalCreditCustomer) {
+    return toAjax(bussIllegalCreditCustomerService.updateBussIllegalCreditCustomer(bussIllegalCreditCustomer));
+  }
+
+  /**
+   * 删除【请填写功能名称】
+   */
+  @PreAuthorize("@ss.hasPermi('buss:illegal-credit-customer:remove')")
+  @Log(title = "【请填写功能名称】", businessType = BusinessType.DELETE)
+  @DeleteMapping("/{ids}")
+  public AjaxResult remove(@PathVariable String[] ids) {
+    return toAjax(bussIllegalCreditCustomerService.deleteBussIllegalCreditCustomerByIds(ids));
+  }
+
+
+  /**
+   * 查询【请填写功能名称】列表
+   */
+  @GetMapping("/all")
+  public List<BussIllegalCreditCustomer> all(BussIllegalCreditCustomer bussIllegalCustomer) {
+    List<BussIllegalCreditCustomer> list = bussIllegalCreditCustomerService.selectBussIllegalCreditCustomerList(bussIllegalCustomer);
+    if (list != null && list.size() > 0) {
+      list.forEach(o -> {
+        o.setOrderList(bussIllegalCreditCustomerService.getOrderList(o.getLicenceNo()));
+      });
+    }
+    return list;
+  }
+
+  @Log(title = "用户管理", businessType = BusinessType.IMPORT)
+  @PostMapping("/importData")
+  public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception {
+    ExcelUtil<BussIllegalCreditCustomer> util = new ExcelUtil<BussIllegalCreditCustomer>(BussIllegalCreditCustomer.class);
+    List<BussIllegalCreditCustomer> customerList = util.importExcel(file.getInputStream());
+    String operName = getUsername();
+    String message = bussIllegalCreditCustomerService.importData(customerList, updateSupport, operName);
+    return success(message);
+  }
+}

+ 170 - 0
xzl-system/src/main/java/com/xzl/system/domain/BussIllegalCreditCustomer.java

@@ -0,0 +1,170 @@
+package com.xzl.system.domain;
+
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Map;
+
+import com.xzl.common.annotation.Excel;
+import com.xzl.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.springframework.data.annotation.Transient;
+
+/**
+ * 【请填写功能名称】对象 buss_illegal_credit_customer
+ *
+ * @author xzl
+ * @date 2023-12-28
+ */
+public class BussIllegalCreditCustomer extends BaseEntity {
+  private static final long serialVersionUID = 1L;
+
+  /**
+   * $column.columnComment
+   */
+  private String id;
+
+  /**
+   * 许可证号
+   */
+  @Excel(name = "许可证号")
+  private String licenceNo;
+
+  /**
+   * 零售户姓名
+   */
+  @Excel(name = "零售户姓名")
+  private String customerName;
+
+  /**
+   * 1 一级、2 二级、3 三级、4 四级、5 五级、6 六级
+   */
+  @Excel(name = "信用等级")
+  private String creditLevel;
+
+  /**
+   * 经度
+   */
+  @Excel(name = "经度")
+  private BigDecimal longitude;
+
+  /**
+   * 纬度
+   */
+  @Excel(name = "纬度")
+  private BigDecimal latitude;
+
+  /**
+   * $column.columnComment
+   */
+  private String delFlag;
+
+  @Excel(name = "备注")
+  private String remark;
+
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  public String getId() {
+    return id;
+  }
+
+  public void setLicenceNo(String licenceNo) {
+    this.licenceNo = licenceNo;
+  }
+
+  public String getLicenceNo() {
+    return licenceNo;
+  }
+
+  public void setCustomerName(String customerName) {
+    this.customerName = customerName;
+  }
+
+  public String getCustomerName() {
+    return customerName;
+  }
+
+  public void setCreditLevel(String creditLevel) {
+    this.creditLevel = creditLevel;
+  }
+
+  public String getCreditLevel() {
+    return creditLevel;
+  }
+
+  public void setLongitude(BigDecimal longitude) {
+    this.longitude = longitude;
+  }
+
+  public BigDecimal getLongitude() {
+    return longitude;
+  }
+
+  public void setLatitude(BigDecimal latitude) {
+    this.latitude = latitude;
+  }
+
+  public BigDecimal getLatitude() {
+    return latitude;
+  }
+
+  public void setDelFlag(String delFlag) {
+    this.delFlag = delFlag;
+  }
+
+  public String getDelFlag() {
+    return delFlag;
+  }
+
+
+  private String address;
+  private String creditLevels;
+  private List<Map> orderList;
+
+  @Transient
+  public String getAddress() {
+    return address;
+  }
+
+  public void setAddress(String address) {
+    this.address = address;
+  }
+
+  @Transient
+  public String getCreditLevels() {
+    return creditLevels;
+  }
+
+  public void setCreditLevels(String creditLevels) {
+    this.creditLevels = creditLevels;
+  }
+
+  @Transient
+  public List<Map> getOrderList() {
+    return orderList;
+  }
+
+  public void setOrderList(List<Map> orderList) {
+    this.orderList = orderList;
+  }
+
+  @Override
+  public String toString() {
+    return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+      .append("id", getId())
+      .append("licenceNo", getLicenceNo())
+      .append("customerName", getCustomerName())
+      .append("creditLevel", getCreditLevel())
+      .append("longitude", getLongitude())
+      .append("latitude", getLatitude())
+      .append("remark", getRemark())
+      .append("delFlag", getDelFlag())
+      .append("createBy", getCreateBy())
+      .append("createTime", getCreateTime())
+      .append("updateBy", getUpdateBy())
+      .append("updateTime", getUpdateTime())
+      .toString();
+  }
+}

+ 67 - 0
xzl-system/src/main/java/com/xzl/system/mapper/BussIllegalCreditCustomerMapper.java

@@ -0,0 +1,67 @@
+package com.xzl.system.mapper;
+
+import java.util.List;
+import java.util.Map;
+
+import com.xzl.system.domain.BussIllegalCreditCustomer;
+
+/**
+ * 【请填写功能名称】Mapper接口
+ *
+ * @author xzl
+ * @date 2023-12-28
+ */
+public interface BussIllegalCreditCustomerMapper {
+  /**
+   * 查询【请填写功能名称】
+   *
+   * @param id 【请填写功能名称】主键
+   * @return 【请填写功能名称】
+   */
+  public BussIllegalCreditCustomer selectBussIllegalCreditCustomerById(String id);
+
+  /**
+   * 查询【请填写功能名称】列表
+   *
+   * @param bussIllegalCreditCustomer 【请填写功能名称】
+   * @return 【请填写功能名称】集合
+   */
+  public List<BussIllegalCreditCustomer> selectBussIllegalCreditCustomerList(BussIllegalCreditCustomer bussIllegalCreditCustomer);
+
+  /**
+   * 新增【请填写功能名称】
+   *
+   * @param bussIllegalCreditCustomer 【请填写功能名称】
+   * @return 结果
+   */
+  public int insertBussIllegalCreditCustomer(BussIllegalCreditCustomer bussIllegalCreditCustomer);
+
+  /**
+   * 修改【请填写功能名称】
+   *
+   * @param bussIllegalCreditCustomer 【请填写功能名称】
+   * @return 结果
+   */
+  public int updateBussIllegalCreditCustomer(BussIllegalCreditCustomer bussIllegalCreditCustomer);
+
+  /**
+   * 删除【请填写功能名称】
+   *
+   * @param id 【请填写功能名称】主键
+   * @return 结果
+   */
+  public int deleteBussIllegalCreditCustomerById(String id);
+
+  /**
+   * 批量删除【请填写功能名称】
+   *
+   * @param ids 需要删除的数据主键集合
+   * @return 结果
+   */
+  public int deleteBussIllegalCreditCustomerByIds(String[] ids);
+
+
+  void cleanData();
+
+  List<Map> queryNearOrderList(Map map);
+}

+ 51 - 52
xzl-system/src/main/java/com/xzl/system/mapper/BussIllegalCustomerMapper.java

@@ -6,59 +6,58 @@ import java.util.List;
 
 /**
  * 【请填写功能名称】Mapper接口
- * 
+ *
  * @author xzl
  * @date 2023-12-27
  */
-public interface BussIllegalCustomerMapper 
-{
-    /**
-     * 查询【请填写功能名称】
-     * 
-     * @param id 【请填写功能名称】主键
-     * @return 【请填写功能名称】
-     */
-    public BussIllegalCustomer selectBussIllegalCustomerById(String id);
-
-    /**
-     * 查询【请填写功能名称】列表
-     * 
-     * @param bussIllegalCustomer 【请填写功能名称】
-     * @return 【请填写功能名称】集合
-     */
-    public List<BussIllegalCustomer> selectBussIllegalCustomerList(BussIllegalCustomer bussIllegalCustomer);
-
-    /**
-     * 新增【请填写功能名称】
-     * 
-     * @param bussIllegalCustomer 【请填写功能名称】
-     * @return 结果
-     */
-    public int insertBussIllegalCustomer(BussIllegalCustomer bussIllegalCustomer);
-
-    /**
-     * 修改【请填写功能名称】
-     * 
-     * @param bussIllegalCustomer 【请填写功能名称】
-     * @return 结果
-     */
-    public int updateBussIllegalCustomer(BussIllegalCustomer bussIllegalCustomer);
-
-    /**
-     * 删除【请填写功能名称】
-     * 
-     * @param id 【请填写功能名称】主键
-     * @return 结果
-     */
-    public int deleteBussIllegalCustomerById(String id);
-
-    /**
-     * 批量删除【请填写功能名称】
-     * 
-     * @param ids 需要删除的数据主键集合
-     * @return 结果
-     */
-    public int deleteBussIllegalCustomerByIds(String[] ids);
-
-    void cleanData();
+public interface BussIllegalCustomerMapper {
+  /**
+   * 查询【请填写功能名称】
+   *
+   * @param id 【请填写功能名称】主键
+   * @return 【请填写功能名称】
+   */
+  public BussIllegalCustomer selectBussIllegalCustomerById(String id);
+
+  /**
+   * 查询【请填写功能名称】列表
+   *
+   * @param bussIllegalCustomer 【请填写功能名称】
+   * @return 【请填写功能名称】集合
+   */
+  public List<BussIllegalCustomer> selectBussIllegalCustomerList(BussIllegalCustomer bussIllegalCustomer);
+
+  /**
+   * 新增【请填写功能名称】
+   *
+   * @param bussIllegalCustomer 【请填写功能名称】
+   * @return 结果
+   */
+  public int insertBussIllegalCustomer(BussIllegalCustomer bussIllegalCustomer);
+
+  /**
+   * 修改【请填写功能名称】
+   *
+   * @param bussIllegalCustomer 【请填写功能名称】
+   * @return 结果
+   */
+  public int updateBussIllegalCustomer(BussIllegalCustomer bussIllegalCustomer);
+
+  /**
+   * 删除【请填写功能名称】
+   *
+   * @param id 【请填写功能名称】主键
+   * @return 结果
+   */
+  public int deleteBussIllegalCustomerById(String id);
+
+  /**
+   * 批量删除【请填写功能名称】
+   *
+   * @param ids 需要删除的数据主键集合
+   * @return 结果
+   */
+  public int deleteBussIllegalCustomerByIds(String[] ids);
+
+  void cleanData();
 }

+ 66 - 0
xzl-system/src/main/java/com/xzl/system/service/IBussIllegalCreditCustomerService.java

@@ -0,0 +1,66 @@
+package com.xzl.system.service;
+
+import java.util.List;
+import java.util.Map;
+
+import com.xzl.system.domain.BussIllegalCreditCustomer;
+
+/**
+ * 【请填写功能名称】Service接口
+ *
+ * @author xzl
+ * @date 2023-12-28
+ */
+public interface IBussIllegalCreditCustomerService {
+  /**
+   * 查询【请填写功能名称】
+   *
+   * @param id 【请填写功能名称】主键
+   * @return 【请填写功能名称】
+   */
+  public BussIllegalCreditCustomer selectBussIllegalCreditCustomerById(String id);
+
+  /**
+   * 查询【请填写功能名称】列表
+   *
+   * @param bussIllegalCreditCustomer 【请填写功能名称】
+   * @return 【请填写功能名称】集合
+   */
+  public List<BussIllegalCreditCustomer> selectBussIllegalCreditCustomerList(BussIllegalCreditCustomer bussIllegalCreditCustomer);
+
+  /**
+   * 新增【请填写功能名称】
+   *
+   * @param bussIllegalCreditCustomer 【请填写功能名称】
+   * @return 结果
+   */
+  public int insertBussIllegalCreditCustomer(BussIllegalCreditCustomer bussIllegalCreditCustomer);
+
+  /**
+   * 修改【请填写功能名称】
+   *
+   * @param bussIllegalCreditCustomer 【请填写功能名称】
+   * @return 结果
+   */
+  public int updateBussIllegalCreditCustomer(BussIllegalCreditCustomer bussIllegalCreditCustomer);
+
+  /**
+   * 批量删除【请填写功能名称】
+   *
+   * @param ids 需要删除的【请填写功能名称】主键集合
+   * @return 结果
+   */
+  public int deleteBussIllegalCreditCustomerByIds(String[] ids);
+
+  /**
+   * 删除【请填写功能名称】信息
+   *
+   * @param id 【请填写功能名称】主键
+   * @return 结果
+   */
+  public int deleteBussIllegalCreditCustomerById(String id);
+
+  String importData(List<BussIllegalCreditCustomer> customerList, boolean updateSupport, String operName);
+
+  List<Map> getOrderList(String custId);
+}

+ 159 - 0
xzl-system/src/main/java/com/xzl/system/service/impl/BussIllegalCreditCustomerServiceImpl.java

@@ -0,0 +1,159 @@
+package com.xzl.system.service.impl;
+
+import com.xzl.common.exception.ServiceException;
+import com.xzl.common.utils.DateUtils;
+import com.xzl.common.utils.StringUtils;
+import com.xzl.common.utils.bean.BeanValidators;
+import com.xzl.common.utils.uuid.IdUtils;
+import com.xzl.system.domain.BussIllegalCreditCustomer;
+import com.xzl.system.mapper.BussIllegalCreditCustomerMapper;
+import com.xzl.system.service.IBussIllegalCreditCustomerService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.validation.Validator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 【请填写功能名称】Service业务层处理
+ *
+ * @author xzl
+ * @date 2023-12-28
+ */
+@Service
+public class BussIllegalCreditCustomerServiceImpl implements IBussIllegalCreditCustomerService {
+
+  private static final Logger log = LoggerFactory.getLogger(BussIllegalCreditCustomerServiceImpl.class);
+
+  @Autowired
+  private BussIllegalCreditCustomerMapper bussIllegalCreditCustomerMapper;
+
+  @Autowired
+  protected Validator validator;
+
+  /**
+   * 查询【请填写功能名称】
+   *
+   * @param id 【请填写功能名称】主键
+   * @return 【请填写功能名称】
+   */
+  @Override
+  public BussIllegalCreditCustomer selectBussIllegalCreditCustomerById(String id) {
+    return bussIllegalCreditCustomerMapper.selectBussIllegalCreditCustomerById(id);
+  }
+
+  /**
+   * 查询【请填写功能名称】列表
+   *
+   * @param bussIllegalCreditCustomer 【请填写功能名称】
+   * @return 【请填写功能名称】
+   */
+  @Override
+  public List<BussIllegalCreditCustomer> selectBussIllegalCreditCustomerList(BussIllegalCreditCustomer bussIllegalCreditCustomer) {
+    return bussIllegalCreditCustomerMapper.selectBussIllegalCreditCustomerList(bussIllegalCreditCustomer);
+  }
+
+  /**
+   * 新增【请填写功能名称】
+   *
+   * @param bussIllegalCreditCustomer 【请填写功能名称】
+   * @return 结果
+   */
+  @Override
+  public int insertBussIllegalCreditCustomer(BussIllegalCreditCustomer bussIllegalCreditCustomer) {
+    bussIllegalCreditCustomer.setCreateTime(DateUtils.getNowDate());
+    return bussIllegalCreditCustomerMapper.insertBussIllegalCreditCustomer(bussIllegalCreditCustomer);
+  }
+
+  /**
+   * 修改【请填写功能名称】
+   *
+   * @param bussIllegalCreditCustomer 【请填写功能名称】
+   * @return 结果
+   */
+  @Override
+  public int updateBussIllegalCreditCustomer(BussIllegalCreditCustomer bussIllegalCreditCustomer) {
+    bussIllegalCreditCustomer.setUpdateTime(DateUtils.getNowDate());
+    return bussIllegalCreditCustomerMapper.updateBussIllegalCreditCustomer(bussIllegalCreditCustomer);
+  }
+
+  /**
+   * 批量删除【请填写功能名称】
+   *
+   * @param ids 需要删除的【请填写功能名称】主键
+   * @return 结果
+   */
+  @Override
+  public int deleteBussIllegalCreditCustomerByIds(String[] ids) {
+    return bussIllegalCreditCustomerMapper.deleteBussIllegalCreditCustomerByIds(ids);
+  }
+
+  /**
+   * 删除【请填写功能名称】信息
+   *
+   * @param id 【请填写功能名称】主键
+   * @return 结果
+   */
+  @Override
+  public int deleteBussIllegalCreditCustomerById(String id) {
+    return bussIllegalCreditCustomerMapper.deleteBussIllegalCreditCustomerById(id);
+  }
+
+  @Override
+  public String importData(List<BussIllegalCreditCustomer> list, boolean updateSupport, String operName) {
+    if (StringUtils.isNull(list) || list.size() == 0) {
+      throw new ServiceException("导入零售户数据不能为空!");
+    }
+    int successNum = 0;
+    int failureNum = 0;
+    StringBuilder successMsg = new StringBuilder();
+    StringBuilder failureMsg = new StringBuilder();
+    // 先删除表数据
+    bussIllegalCreditCustomerMapper.cleanData();
+
+    Map<String, String> typeMap = new HashMap<String, String>();
+    typeMap.put("一级", "1");
+    typeMap.put("二级", "2");
+    typeMap.put("三级", "3");
+    typeMap.put("四级", "4");
+    typeMap.put("五级", "5");
+    typeMap.put("六级", "6");
+
+    for (BussIllegalCreditCustomer customer : list) {
+      try {
+        customer.setId(IdUtils.simpleUUID());
+        customer.setCreditLevel(typeMap.get(customer.getCreditLevel()));
+        // 验证是否存在这个用户
+        BeanValidators.validateWithException(validator, customer);
+        customer.setUpdateBy(operName);
+        bussIllegalCreditCustomerMapper.insertBussIllegalCreditCustomer(customer);
+        successNum++;
+        successMsg.append("<br/>" + successNum + "、零售户 " + customer.getCustomerName() + " 保存成功");
+      } catch (Exception e) {
+        failureNum++;
+        String msg = "<br/>" + failureNum + "、零售户 " + customer.getCustomerName() + " 导入失败:";
+        failureMsg.append(msg + e.getMessage());
+        log.error(msg, e);
+      }
+    }
+    if (failureNum > 0) {
+      failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
+      throw new ServiceException(failureMsg.toString());
+    } else {
+      successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
+    }
+    return successMsg.toString();
+  }
+
+  @Override
+  public List<Map> getOrderList(String custId) {
+    Map param = new HashMap();
+    param.put("custId", custId);
+    param.put("limit", 3);
+    return bussIllegalCreditCustomerMapper.queryNearOrderList(param);
+  }
+}

+ 128 - 0
xzl-system/src/main/resources/mapper/system/BussIllegalCreditCustomerMapper.xml

@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xzl.system.mapper.BussIllegalCreditCustomerMapper">
+
+    <resultMap type="BussIllegalCreditCustomer" id="BussIllegalCreditCustomerResult">
+        <result property="id" column="id"/>
+        <result property="licenceNo" column="licence_no"/>
+        <result property="customerName" column="customer_name"/>
+        <result property="creditLevel" column="credit_level"/>
+        <result property="longitude" column="longitude"/>
+        <result property="latitude" column="latitude"/>
+        <result property="remark" column="remark"/>
+        <result property="delFlag" column="del_flag"/>
+        <result property="createBy" column="create_by"/>
+        <result property="createTime" column="create_time"/>
+        <result property="updateBy" column="update_by"/>
+        <result property="updateTime" column="update_time"/>
+        <result property="address" column="address"/>
+    </resultMap>
+
+    <sql id="selectBussIllegalCreditCustomerVo">
+        select m.id, m.licence_no, m.customer_name, m.credit_level, m.longitude, m.latitude, m.remark, m.del_flag, m.create_by, m.create_time, m.update_by, m.update_time,
+        d.address
+        from buss_illegal_credit_customer m
+        left join v_b_client d on m.licence_no = d.client_code    </sql>
+
+    <select id="selectBussIllegalCreditCustomerList" parameterType="BussIllegalCreditCustomer"
+            resultMap="BussIllegalCreditCustomerResult">
+        <include refid="selectBussIllegalCreditCustomerVo"/>
+        where m.del_flag = '0'
+        <if test="licenceNo != null  and licenceNo != ''">and m.licence_no = #{licenceNo}</if>
+        <if test="customerName != null  and customerName != ''">and m.customer_name like concat('%', #{customerName},
+            '%')
+        </if>
+        <if test="creditLevel != null  and creditLevel != ''">and m.credit_level = #{creditLevel}</if>
+        <if test="creditLevels != null  and creditLevels != ''">
+            and m.credit_level in
+            <foreach collection="creditLevels.split(',')" index="index" item="creditLevel" open="(" separator=","
+                     close=")">
+                #{creditLevel}
+            </foreach>
+        </if>
+
+        order by m.credit_level asc
+    </select>
+
+    <select id="selectBussIllegalCreditCustomerById" parameterType="String" resultMap="BussIllegalCreditCustomerResult">
+        <include refid="selectBussIllegalCreditCustomerVo"/>
+        where id = #{id}
+    </select>
+
+    <insert id="insertBussIllegalCreditCustomer" parameterType="BussIllegalCreditCustomer">
+        insert into buss_illegal_credit_customer
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="id != null">id,</if>
+            <if test="licenceNo != null">licence_no,</if>
+            <if test="customerName != null">customer_name,</if>
+            <if test="creditLevel != null">credit_level,</if>
+            <if test="longitude != null">longitude,</if>
+            <if test="latitude != null">latitude,</if>
+            <if test="remark != null">remark,</if>
+            <if test="delFlag != null">del_flag,</if>
+            <if test="createBy != null">create_by,</if>
+            <if test="createTime != null">create_time,</if>
+            <if test="updateBy != null">update_by,</if>
+            <if test="updateTime != null">update_time,</if>
+        </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="id != null">#{id},</if>
+            <if test="licenceNo != null">#{licenceNo},</if>
+            <if test="customerName != null">#{customerName},</if>
+            <if test="creditLevel != null">#{creditLevel},</if>
+            <if test="longitude != null">#{longitude},</if>
+            <if test="latitude != null">#{latitude},</if>
+            <if test="remark != null">#{remark},</if>
+            <if test="delFlag != null">#{delFlag},</if>
+            <if test="createBy != null">#{createBy},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="updateBy != null">#{updateBy},</if>
+            <if test="updateTime != null">#{updateTime},</if>
+        </trim>
+    </insert>
+
+    <update id="updateBussIllegalCreditCustomer" parameterType="BussIllegalCreditCustomer">
+        update buss_illegal_credit_customer
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="licenceNo != null">licence_no = #{licenceNo},</if>
+            <if test="customerName != null">customer_name = #{customerName},</if>
+            <if test="creditLevel != null">credit_level = #{creditLevel},</if>
+            <if test="longitude != null">longitude = #{longitude},</if>
+            <if test="latitude != null">latitude = #{latitude},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="delFlag != null">del_flag = #{delFlag},</if>
+            <if test="createBy != null">create_by = #{createBy},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateBy != null">update_by = #{updateBy},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+
+    <delete id="deleteBussIllegalCreditCustomerById" parameterType="String">
+          update buss_illegal_credit_customer set del_flag = '2'  where id = #{id}
+    </delete>
+
+    <delete id="deleteBussIllegalCreditCustomerByIds" parameterType="String">
+        update buss_illegal_credit_customer set del_flag = '2' where id in
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+
+
+    <update id="cleanData" parameterType="map">
+        update buss_illegal_credit_customer set del_flag = '2' where del_flag = '0'
+    </update>
+
+
+    <!-- temp_interface_fn_sell 为interface_fn_sell 的临时表,每次导入违规户的时候,把这几个零售户的数据导入进去-->
+    <select id="queryNearOrderList" parameterType="map" resultType="map">
+        select sell_date, count(1) amount , sum(money_order) money_total from temp_interface_fn_sell where cust_id = #{custId}
+        group by sell_date
+        order by sell_date desc limit #{limit}
+    </select>
+</mapper>

+ 1 - 0
xzl-ui/package.json

@@ -58,6 +58,7 @@
     "vue-cropper": "0.5.5",
     "vue-meta": "2.4.0",
     "vue-router": "3.4.9",
+    "vue-seamless-scroll": "^1.1.23",
     "vuedraggable": "2.24.3",
     "vuex": "3.6.0"
   },

BIN
xzl-ui/public/illegal_customer_credit_template.xlsx


+ 1 - 1
xzl-ui/src/utils/request.js

@@ -17,7 +17,7 @@ const service = axios.create({
   // axios中请求配置有baseURL选项,表示请求URL公共部分
   baseURL: process.env.VUE_APP_BASE_API,
   // 超时
-  timeout: 10000
+  timeout: 60000
 })
 
 // request拦截器

+ 103 - 15
xzl-ui/src/views/monitor/map/largeScreenShow.vue

@@ -1,9 +1,9 @@
 <template>
-  <div><!--
+  <div>
     <div
-      style="position: absolute; height: 40px; width: 160px; opacity: 0.8; z-index: 9999; padding: 8px; top:6px; left: 6px; background: #fff; border-radius: 8px;">
+      style="position: absolute; height: 40px; width: 160px; opacity: 0.8; z-index: 1999; padding: 8px; top:6px; left: 6px; background: #fff; border-radius: 8px;">
       <button @click="uploadFile" style="width: 98%; text-align: center">导入违规零售户</button>
-    </div> -->
+    </div>
     <div id="container" v-bind:style="'width: 100%;border: 1px solid #cecece;height:'+pageHeight*0.9+'px;'">
     </div>
 
@@ -25,7 +25,7 @@
         <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
         <div class="el-upload__tip text-center" slot="tip">
           <span>仅允许导入xls、xlsx格式文件。</span>
-          <a href="/illegal_customer_template.xlsx" style="padding-left:10px; color: coral">下载违规零售户模板</a>
+          <a href="/illegal_customer_credit_template.xlsx" style="padding-left:10px; color: coral">下载违规零售户模板</a>
         </div>
       </el-upload>
       <div slot="footer" class="dialog-footer">
@@ -33,11 +33,64 @@
         <el-button @click="upload.open = false">取 消</el-button>
       </div>
     </el-dialog>
+
+    <div class="scroll-box2">
+      <h3>违规零售户列表</h3>
+      <div class="scroll-item">
+        <vue-seamless-scroll :data="list" class="warp">
+          <div v-for="c in list" class="customer-info">
+            <table align="center" width="98%">
+              <tr>
+                <td width="20%">许可证号</td>
+                <td width="30%">{{c.licenceNo}}</td>
+                <td width="20%">姓名</td>
+                <td width="30%">{{c.customerName}}</td>
+              </tr>
+              <tr>
+                <td>信用等级</td>
+                <td>{{typeItems[c.creditLevel].typeName}}</td>
+                <td>信用等级</td>
+                <td>{{typeItems[c.creditLevel].typeName}}</td>
+              </tr>
+              <tr>
+                <td>地址</td>
+                <td colspan="3">{{c.address}}</td>
+              </tr>
+              <tr>
+                <td colspan="4" valign="top">
+                  <table width="100%">
+                    <tr>
+                      <td colspan="3"><span style="font-weight: bold">近期订货情况</span></td>
+                    </tr>
+                    <tr>
+                      <td width="40%">日期</td>
+                      <td width="25%">订货量</td>
+                      <td width="35%">订货金额(单位:元)</td>
+                    </tr>
+                    <template v-if="c.orderList && c.orderList.length > 0">
+                      <tr v-for="o in c.orderList">
+                        <td width="40%">{{o.sell_date}}</td>
+                        <td width="30%">{{o.amount}}</td>
+                        <td width="30%">{{o.money_total}}</td>
+                      </tr>
+                    </template>
+                    <tr v-else>
+                      <td colspan="3" align="center"><span style="color: red;">近期未订货</span></td>
+                    </tr>
+                  </table>
+                </td>
+              </tr>
+            </table>
+          </div>
+        </vue-seamless-scroll>
+      </div>
+    </div>
   </div>
 </template>
 <script>
   import request from '@/utils/request'
   import {getToken} from "@/utils/auth";
+  import vueSeamlessScroll from 'vue-seamless-scroll'
 
   export default {
     data() {
@@ -70,18 +123,22 @@
           // 设置上传的请求头部
           headers: {Authorization: "Bearer " + getToken()},
           // 上传的地址
-          url: process.env.VUE_APP_BASE_API + "/buss/illegal-customer/importData"
+          url: process.env.VUE_APP_BASE_API + "/buss/illegal-credit-customer/importData"
         },
         typeItems: {
-          '1': {color: 'red', 'typeName': '许可证异常信息'},
-          '2': {color: 'orange', 'typeName': '经营户违规信息'},
-          '3': {color: 'yellow', 'typeName': '真烟外流信息进行数据关链'},
-          '4': {color: 'blue', 'typeName': '产生许可证异常预警'},
-          '5': {color: 'green', 'typeName': '内管黑名单预警'},
-          '6': {color: 'gray', 'typeName': '内管灰名单预警'},
-        }
+          '1': {color: 'red', 'typeName': '一级'},
+          '2': {color: 'orange', 'typeName': '二级'},
+          '3': {color: 'yellow', 'typeName': '三级'},
+          '4': {color: 'blue', 'typeName': '四级'},
+          '5': {color: 'green', 'typeName': '五级'},
+          '6': {color: 'gray', 'typeName': '六级'},
+        },
+        list: []
       }
     },
+    components: {
+      vueSeamlessScroll
+    },
     created() {
       setTimeout(() => {
         this.initMap()
@@ -187,14 +244,17 @@
       },
       getList() {
         const t = this;
+        t.$modal.loading("正在获取数据,请稍候...");
         request({
-          url: '/buss/illegal-customer/all?illegalTypes=1,2',
+          url: '/buss/illegal-credit-customer/all',
           method: "get"
         }).then(function (rs) {
+          t.$modal.closeLoading()
+          t.list = rs
           // 描点
           rs.forEach(o => {
             let pt = new BMap.Point(o.longitude, o.latitude);
-            const ct = t.typeItems[o.illegalType];
+            const ct = t.typeItems[o.creditLevel];
             let marker = new BMap.Marker(pt, {
               // 指定Marker的icon属性为Symbol
               icon: new BMap.Symbol(BMap_Symbol_SHAPE_POINT, {
@@ -211,7 +271,7 @@
                 + '<li ><span>零售户名称:</span>' + o.customerName + '</li>'
                 + '<li ><span>许可证号:</span>' + o.licenceNo + '</li>'
                 + '<li ><span>地址:</span>' + o.address + '</li>'
-                + '<li ><span>违规类型:</span>' + ct.typeName + '</li>'
+                + '<li ><span>信用等级:</span>' + ct.typeName + '</li>'
                 + '</ul>';
               t.$alert(content, '零售户违规信息', {
                 dangerouslyUseHTMLString: true
@@ -256,4 +316,32 @@
   .anchorBL {
     display: none;
   }
+
+  .scroll-box2 {
+    width: 300px;
+    height: 560px;
+    position: absolute;
+    z-index: 1999;
+    background: #ffffff;
+    right: 10px;
+    top: 10px;
+    border-radius: 8px;
+    opacity: 0.8;
+  }
+
+  .scroll-box2 h3 {
+    text-align: center;
+    line-height: 40px;
+  }
+
+  .scroll-item {
+    height: 480px;
+    overflow: hidden;
+  }
+
+  .customer-info {
+    font-size: 12px;
+    margin-top: 20px;
+    padding: 2px;
+  }
 </style>

+ 64 - 2
xzl-ui/src/views/monitor/map/warn1.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div
-      style="position: absolute; height: 40px; width: 160px; opacity: 0.8; z-index: 9999; padding: 8px; top:6px; left: 6px; background: #fff; border-radius: 8px;">
+      style="position: absolute; height: 40px; width: 160px; opacity: 0.8; z-index: 1999; padding: 8px; top:6px; left: 6px; background: #fff; border-radius: 8px;">
       <button @click="uploadFile" style="width: 98%; text-align: center">导入违规零售户</button>
     </div>
     <div id="container" v-bind:style="'width: 100%;border: 1px solid #cecece;height:'+pageHeight*0.9+'px;'">
@@ -33,11 +33,40 @@
         <el-button @click="upload.open = false">取 消</el-button>
       </div>
     </el-dialog>
+
+    <div class="scroll-box">
+      <h3>违规零售户列表</h3>
+      <div class="scroll-item">
+        <vue-seamless-scroll :data="list" class="warp">
+          <div v-for="c in list" class="customer-info">
+            <table align="center" width="98%" cellpadding="0">
+              <tr>
+                <td width="35%">许可证号</td>
+                <td width="65%">{{c.licenceNo}}</td>
+              </tr>
+              <tr>
+                <td>零售户姓名</td>
+                <td>{{c.customerName}}</td>
+              </tr>
+              <tr>
+                <td>违规类型</td>
+                <td>{{typeItems[c.illegalType].typeName}}</td>
+              </tr>
+              <tr>
+                <td>地址</td>
+                <td>{{c.address}}</td>
+              </tr>
+            </table>
+          </div>
+        </vue-seamless-scroll>
+      </div>
+    </div>
   </div>
 </template>
 <script>
   import request from '@/utils/request'
   import {getToken} from "@/utils/auth";
+  import vueSeamlessScroll from 'vue-seamless-scroll'
 
   export default {
     data() {
@@ -79,9 +108,13 @@
           '4': {color: 'blue', 'typeName': '产生许可证异常预警'},
           '5': {color: 'green', 'typeName': '内管黑名单预警'},
           '6': {color: 'gray', 'typeName': '内管灰名单预警'},
-        }
+        },
+        list: []
       }
     },
+    components: {
+      vueSeamlessScroll
+    },
     created() {
       setTimeout(() => {
         this.initMap()
@@ -191,6 +224,7 @@
           url: '/buss/illegal-customer/all',
           method: "get"
         }).then(function (rs) {
+          t.list = rs
           // 描点
           rs.forEach(o => {
             let pt = new BMap.Point(o.longitude, o.latitude);
@@ -256,4 +290,32 @@
   .anchorBL {
     display: none;
   }
+
+  .scroll-box {
+    width: 240px;
+    height: 560px;
+    position: absolute;
+    z-index: 1999;
+    background: #ffffff;
+    right: 10px;
+    top: 10px;
+    border-radius: 8px;
+    opacity: 0.8;
+  }
+
+  .scroll-box h3 {
+    text-align: center;
+    line-height: 40px;
+  }
+
+  .scroll-item {
+    height: 480px;
+    overflow: hidden;
+  }
+
+  .customer-info {
+    font-size: 12px;
+    margin-top: 20px;
+    padding: 2px;
+  }
 </style>