This commit is contained in:
Vinjor 2025-11-26 11:44:24 +08:00
parent 98f0d2c3d1
commit dbe624497f
36 changed files with 340 additions and 31 deletions

View File

@ -70,7 +70,7 @@ public class BaseTimeZoneController extends BaseController {
**/ **/
@GetMapping("/listZone") @GetMapping("/listZone")
public AjaxResult listZone() { public AjaxResult listZone() {
return success(baseTimeZoneService.list()); return success(baseTimeZoneService.listAllZoneAndTime());
} }

View File

@ -31,6 +31,10 @@ public class BaseTimeZone
@Excel(name = "时区标准名称", readConverterExp = "如=,“=Asia/Shanghai”遵循,I=ANA,时=区数据库命名规范") @Excel(name = "时区标准名称", readConverterExp = "如=,“=Asia/Shanghai”遵循,I=ANA,时=区数据库命名规范")
private String zoneName; private String zoneName;
/** 时区中文 */
@Excel(name = "时区中文")
private String zoneCn;
/** UTC 偏移量(如 “+08:00”“-05:00”“+03:30” */ /** UTC 偏移量(如 “+08:00”“-05:00”“+03:30” */
@Excel(name = "UTC 偏移量", readConverterExp = "如=,“=+08:00”“-05:00”“+03:30”") @Excel(name = "UTC 偏移量", readConverterExp = "如=,“=+08:00”“-05:00”“+03:30”")
private String utcOffset; private String utcOffset;

View File

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.base.domain.BaseTimeZone; import com.ruoyi.base.domain.BaseTimeZone;
import com.ruoyi.base.vo.BaseCountryVO; import com.ruoyi.base.vo.BaseCountryVO;
import com.ruoyi.base.vo.TimeZoneVO;
/** /**
* 时区Service接口 * 时区Service接口
@ -25,4 +26,13 @@ public interface IBaseTimeZoneService extends IService<BaseTimeZone> {
* @date 15:34 2025/11/17 * @date 15:34 2025/11/17
**/ **/
IPage<BaseTimeZone> queryListPage(BaseTimeZone pageReqVO, Page<BaseTimeZone> page); IPage<BaseTimeZone> queryListPage(BaseTimeZone pageReqVO, Page<BaseTimeZone> page);
/**
* 获取时区列表--含当前时间
*
* @return com.ruoyi.base.vo.BaseCountryVO
* @author PQZ
* @date 15:02 2025/11/17
**/
List<TimeZoneVO> listAllZoneAndTime();
} }

View File

@ -1,10 +1,14 @@
package com.ruoyi.base.service.impl; package com.ruoyi.base.service.impl;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.base.vo.BaseCountryVO; import com.ruoyi.base.vo.BaseCountryVO;
import com.ruoyi.base.vo.TimeZoneVO;
import com.ruoyi.utils.DateTimeUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@ -22,6 +26,8 @@ import com.ruoyi.base.service.IBaseTimeZoneService;
public class BaseTimeZoneServiceImpl extends ServiceImpl<BaseTimeZoneMapper, BaseTimeZone> implements IBaseTimeZoneService { public class BaseTimeZoneServiceImpl extends ServiceImpl<BaseTimeZoneMapper, BaseTimeZone> implements IBaseTimeZoneService {
@Autowired @Autowired
private BaseTimeZoneMapper baseTimeZoneMapper; private BaseTimeZoneMapper baseTimeZoneMapper;
@Autowired
private DateTimeUtil dateTimeUtil;
/** /**
* 分页查询时区列表 * 分页查询时区列表
@ -36,4 +42,26 @@ public class BaseTimeZoneServiceImpl extends ServiceImpl<BaseTimeZoneMapper, Bas
public IPage<BaseTimeZone> queryListPage(BaseTimeZone pageReqVO, Page<BaseTimeZone> page) { public IPage<BaseTimeZone> queryListPage(BaseTimeZone pageReqVO, Page<BaseTimeZone> page) {
return baseTimeZoneMapper.queryListPage(pageReqVO, page); return baseTimeZoneMapper.queryListPage(pageReqVO, page);
} }
/**
* 获取时区列表--含当前时间
*
* @return com.ruoyi.base.vo.BaseCountryVO
* @author PQZ
* @date 15:02 2025/11/17
**/
@Override
public List<TimeZoneVO> listAllZoneAndTime() {
List<BaseTimeZone> list = this.list();
List<TimeZoneVO> rtnList = new ArrayList<>();
for (BaseTimeZone item : list) {
TimeZoneVO vo = new TimeZoneVO();
BeanUtils.copyProperties(item, vo);
vo.setNowTime(dateTimeUtil.getZoneTime(item.getZoneName()));
rtnList.add(vo);
}
//按时间先后排序
rtnList.sort((o1, o2) -> o1.getNowTime().compareTo(o2.getNowTime()));
return rtnList;
}
} }

View File

@ -0,0 +1,14 @@
package com.ruoyi.base.vo;
import com.ruoyi.base.domain.BaseTimeZone;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.TimeZone;
@EqualsAndHashCode(callSuper = true)
@Data
public class TimeZoneVO extends BaseTimeZone {
/** 当前时间*/
private String nowTime;
}

View File

@ -19,9 +19,7 @@ import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.cus.domain.CusMainSeas; import com.ruoyi.cus.domain.CusMainSeas;
import com.ruoyi.cus.domain.CusTimeAxis; import com.ruoyi.cus.domain.CusTimeAxis;
import com.ruoyi.cus.service.ICusImportService; import com.ruoyi.cus.service.*;
import com.ruoyi.cus.service.ICusMainSeasService;
import com.ruoyi.cus.service.ICusTimeAxisService;
import com.ruoyi.cus.vo.CusMainVO; import com.ruoyi.cus.vo.CusMainVO;
import com.ruoyi.cus.vo.MainVO; import com.ruoyi.cus.vo.MainVO;
import com.ruoyi.utils.CodeGenerator; import com.ruoyi.utils.CodeGenerator;
@ -42,7 +40,6 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.cus.domain.CusMain; import com.ruoyi.cus.domain.CusMain;
import com.ruoyi.cus.service.ICusMainService;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -66,6 +63,16 @@ public class CusMainController extends BaseController {
private ICusTimeAxisService cusTimeAxisService; private ICusTimeAxisService cusTimeAxisService;
@Autowired @Autowired
private ICusMainSeasService cusMainSeasService; private ICusMainSeasService cusMainSeasService;
@Autowired
private ICusManagerService cusManagerService;
@Autowired
private ICusCompanyService cusCompanyService;
@Autowired
private ICusMarkService cusMarkService;
@Autowired
private ICusContactsService cusContactsService;
@Autowired
private ICusBankService cusBankService;
/** /**
* 生成客户编码 * 生成客户编码
@ -232,20 +239,32 @@ public class CusMainController extends BaseController {
/** /**
* 删除客户信息 * 删除客户信息---只会单个删除
*/ */
@PreAuthorize("@ss.hasPermi('cus:main:remove')") @PreAuthorize("@ss.hasPermi('cus:main:remove')")
@Log(title = "客户信息", businessType = BusinessType.DELETE) @Log(title = "客户信息", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids) { public AjaxResult remove(@PathVariable String[] ids) {
List<String> list = new ArrayList<>(Arrays.asList(ids)); List<String> list = new ArrayList<>(Arrays.asList(ids));
String cusId = list.get(0);
//时间轴信息 //时间轴信息
CusTimeAxis cusTimeAxis = new CusTimeAxis(); CusTimeAxis cusTimeAxis = new CusTimeAxis();
cusTimeAxis.setBusiMaxCatg("客户"); cusTimeAxis.setBusiMaxCatg("客户");
cusTimeAxis.setBusiCatg("修改"); cusTimeAxis.setBusiCatg("修改");
cusTimeAxis.setContent("删除客户信息"); cusTimeAxis.setContent("删除客户信息");
cusTimeAxis.setCusId(list.get(0)); cusTimeAxis.setCusId(cusId);
cusTimeAxisService.saveNewTimeAxis(cusTimeAxis); cusTimeAxisService.saveNewTimeAxis(cusTimeAxis);
//删除其他子表信息-删除管理信息
cusManagerService.deleteCusData(cusId);
//删除公司信息
cusCompanyService.deleteCusData(cusId);
//删除联系人信息
cusContactsService.deleteCusData(cusId);
//删除唛头信息
cusMarkService.deleteCusMark(cusId);
//删除银行信息
cusBankService.deleteCusData(cusId);
return toAjax(cusMainService.removeByIds(list)); return toAjax(cusMainService.removeByIds(list));
} }

View File

@ -10,8 +10,7 @@ import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.cus.domain.CusMain; import com.ruoyi.cus.domain.CusMain;
import com.ruoyi.cus.domain.CusTimeAxis; import com.ruoyi.cus.domain.CusTimeAxis;
import com.ruoyi.cus.service.ICusMainService; import com.ruoyi.cus.service.*;
import com.ruoyi.cus.service.ICusTimeAxisService;
import com.ruoyi.cus.vo.MainVO; import com.ruoyi.cus.vo.MainVO;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -30,7 +29,6 @@ import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.cus.domain.CusMainSeas; import com.ruoyi.cus.domain.CusMainSeas;
import com.ruoyi.cus.service.ICusMainSeasService;
import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
@ -49,6 +47,16 @@ public class CusMainSeasController extends BaseController {
private ICusMainService cusMainService; private ICusMainService cusMainService;
@Autowired @Autowired
private ICusTimeAxisService cusTimeAxisService; private ICusTimeAxisService cusTimeAxisService;
@Autowired
private ICusManagerService cusManagerService;
@Autowired
private ICusCompanyService cusCompanyService;
@Autowired
private ICusMarkService cusMarkService;
@Autowired
private ICusContactsService cusContactsService;
@Autowired
private ICusBankService cusBankService;
/** /**
* 查询公海客户信息列表 * 查询公海客户信息列表
@ -117,13 +125,25 @@ public class CusMainSeasController extends BaseController {
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids) { public AjaxResult remove(@PathVariable String[] ids) {
List<String> list = new ArrayList<>(Arrays.asList(ids)); List<String> list = new ArrayList<>(Arrays.asList(ids));
String cusId = list.get(0);
//时间轴信息 //时间轴信息
CusTimeAxis cusTimeAxis = new CusTimeAxis(); CusTimeAxis cusTimeAxis = new CusTimeAxis();
cusTimeAxis.setBusiMaxCatg("客户"); cusTimeAxis.setBusiMaxCatg("客户");
cusTimeAxis.setBusiCatg("修改"); cusTimeAxis.setBusiCatg("修改");
cusTimeAxis.setContent("删除公海客户信息"); cusTimeAxis.setContent("删除公海客户信息");
cusTimeAxis.setCusId(list.get(0)); cusTimeAxis.setCusId(cusId);
cusTimeAxisService.saveNewTimeAxis(cusTimeAxis); cusTimeAxisService.saveNewTimeAxis(cusTimeAxis);
//删除其他子表信息-删除管理信息
cusManagerService.deleteCusData(cusId);
//删除公司信息
cusCompanyService.deleteCusData(cusId);
//删除联系人信息
cusContactsService.deleteCusData(cusId);
//删除唛头信息
cusMarkService.deleteCusMark(cusId);
//删除银行信息
cusBankService.deleteCusData(cusId);
return toAjax(cusMainSeasService.removeByIds(list)); return toAjax(cusMainSeasService.removeByIds(list));
} }

View File

@ -18,4 +18,12 @@ import org.apache.ibatis.annotations.Mapper;
public interface CusBankMapper extends BaseMapper<CusBank> public interface CusBankMapper extends BaseMapper<CusBank>
{ {
IPage<CusBank> queryListPage(@Param("entity") CusBank entity, Page<CusBank> page); IPage<CusBank> queryListPage(@Param("entity") CusBank entity, Page<CusBank> page);
/**
* 删除客户银行信息
* @author vinjor-M
* @date 10:14 2025/11/24
* @return int
**/
int deleteCusData(String cusId);
} }

View File

@ -18,4 +18,12 @@ import org.apache.ibatis.annotations.Mapper;
public interface CusCompanyMapper extends BaseMapper<CusCompany> public interface CusCompanyMapper extends BaseMapper<CusCompany>
{ {
IPage<CusCompany> queryListPage(@Param("entity") CusCompany entity, Page<CusCompany> page); IPage<CusCompany> queryListPage(@Param("entity") CusCompany entity, Page<CusCompany> page);
/**
* 删除客户公司信息
* @author vinjor-M
* @date 10:14 2025/11/24
* @return int
**/
int deleteCusData(String cusId);
} }

View File

@ -27,4 +27,12 @@ public interface CusContactsMapper extends BaseMapper<CusContacts>
* @return void * @return void
**/ **/
void updateOtherDefault(@Param("cusId") String cusId); void updateOtherDefault(@Param("cusId") String cusId);
/**
* 删除客户联系人信息
* @author vinjor-M
* @date 10:14 2025/11/24
* @return int
**/
int deleteCusData(String cusId);
} }

View File

@ -26,4 +26,12 @@ public interface CusManagerMapper extends BaseMapper<CusManager>
* @return int * @return int
**/ **/
int updateByCusId(@Param("entity") CusManager entity); int updateByCusId(@Param("entity") CusManager entity);
/**
* 删除客户管理信息
* @author vinjor-M
* @date 10:14 2025/11/24
* @return int
**/
int deleteCusData(String cusId);
} }

View File

@ -18,4 +18,13 @@ import org.apache.ibatis.annotations.Mapper;
public interface CusMarkMapper extends BaseMapper<CusMark> public interface CusMarkMapper extends BaseMapper<CusMark>
{ {
IPage<CusMark> queryListPage(@Param("entity") CusMark entity, Page<CusMark> page); IPage<CusMark> queryListPage(@Param("entity") CusMark entity, Page<CusMark> page);
/**
* 删除客户唛头信息
* @author vinjor-M
* @date 9:34 2025/11/26
* @param cusId TODO
* @return int
**/
int deleteCusMark(@Param("cusId") String cusId);
} }

View File

@ -25,4 +25,12 @@ public interface ICusBankService extends IService<CusBank> {
* @date 15:58 2025/11/20 * @date 15:58 2025/11/20
**/ **/
void saveOrUpdateByAccount(List<CusBank> cusBankList); void saveOrUpdateByAccount(List<CusBank> cusBankList);
/**
* 根据客户id删除数据
* @author vinjor-M
* @date 9:20 2025/11/26
* @param cusId 客户id
**/
void deleteCusData(String cusId);
} }

View File

@ -25,4 +25,12 @@ public interface ICusCompanyService extends IService<CusCompany> {
* @date 15:15 2025/11/20 * @date 15:15 2025/11/20
**/ **/
void saveOrUpdateByCusName(List<CusCompany> cusCompanyList); void saveOrUpdateByCusName(List<CusCompany> cusCompanyList);
/**
* 根据客户id删除数据
* @author vinjor-M
* @date 9:20 2025/11/26
* @param cusId 客户id
**/
void deleteCusData(String cusId);
} }

View File

@ -40,4 +40,12 @@ public interface ICusContactsService extends IService<CusContacts> {
* @param cusId TODO * @param cusId TODO
**/ **/
void updateOtherDefault(String cusId); void updateOtherDefault(String cusId);
/**
* 根据客户id删除数据
* @author vinjor-M
* @date 9:20 2025/11/26
* @param cusId 客户id
**/
void deleteCusData(String cusId);
} }

View File

@ -32,4 +32,12 @@ public interface ICusManagerService extends IService<CusManager> {
* @date 10:13 2025/11/24 * @date 10:13 2025/11/24
**/ **/
void updateByCusId(CusManager cusManager); void updateByCusId(CusManager cusManager);
/**
* 根据客户id删除数据
* @author vinjor-M
* @date 9:20 2025/11/26
* @param cusId 客户id
**/
void deleteCusData(String cusId);
} }

View File

@ -15,4 +15,12 @@ import com.ruoyi.cus.domain.CusMark;
public interface ICusMarkService extends IService<CusMark> public interface ICusMarkService extends IService<CusMark>
{ {
IPage<CusMark> queryListPage(CusMark pageReqVO, Page<CusMark> page); IPage<CusMark> queryListPage(CusMark pageReqVO, Page<CusMark> page);
/**
* 根据客户id删除数据
* @author vinjor-M
* @date 9:20 2025/11/26
* @param cusId 客户id
**/
void deleteCusMark(String cusId);
} }

View File

@ -98,4 +98,15 @@ public class CusBankServiceImpl extends ServiceImpl<CusBankMapper, CusBank> impl
} }
} }
/**
* 根据客户id删除数据
*
* @param cusId 客户id
* @author vinjor-M
* @date 9:20 2025/11/26
**/
@Override
public void deleteCusData(String cusId) {
cusBankMapper.deleteCusData(cusId);
}
} }

View File

@ -97,4 +97,15 @@ public class CusCompanyServiceImpl extends ServiceImpl<CusCompanyMapper, CusComp
} }
} }
/**
* 根据客户id删除数据
*
* @param cusId 客户id
* @author vinjor-M
* @date 9:20 2025/11/26
**/
@Override
public void deleteCusData(String cusId) {
cusCompanyMapper.deleteCusData(cusId);
}
} }

View File

@ -120,4 +120,16 @@ public class CusContactsServiceImpl extends ServiceImpl<CusContactsMapper,CusCon
this.updateBatchById(toUpdateList); this.updateBatchById(toUpdateList);
} }
} }
/**
* 根据客户id删除数据
*
* @param cusId 客户id
* @author vinjor-M
* @date 9:20 2025/11/26
**/
@Override
public void deleteCusData(String cusId) {
cusContactsMapper.deleteCusData(cusId);
}
} }

View File

@ -21,6 +21,7 @@ import com.ruoyi.cus.mapper.*;
import com.ruoyi.cus.service.*; import com.ruoyi.cus.service.*;
import com.ruoyi.cus.vo.*; import com.ruoyi.cus.vo.*;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.utils.DateTimeUtil;
import com.ruoyi.utils.SnowflakeIdGenerator; import com.ruoyi.utils.SnowflakeIdGenerator;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -61,6 +62,8 @@ public class CusMainServiceImpl extends ServiceImpl<CusMainMapper,CusMain> impl
private ICusMainSeasService cusMainSeasService; private ICusMainSeasService cusMainSeasService;
@Autowired @Autowired
private ISysUserService sysUserService; private ISysUserService sysUserService;
@Autowired
private DateTimeUtil dateTimeUtil;
@Override @Override
public IPage<MainVO> queryListPage(MainVO pageReqVO, Page<CusMain> page) { public IPage<MainVO> queryListPage(MainVO pageReqVO, Page<CusMain> page) {
@ -253,15 +256,17 @@ public class CusMainServiceImpl extends ServiceImpl<CusMainMapper,CusMain> impl
//查公海客户信息 //查公海客户信息
CusMainSeas cusMainSeas = cusMainSeasService.getById(id); CusMainSeas cusMainSeas = cusMainSeasService.getById(id);
BeanUtils.copyProperties(cusMainSeas, mainVO); BeanUtils.copyProperties(cusMainSeas, mainVO);
mainVO.setCusLabelList(JSON.parseArray(cusMainSeas.getCusLabels()));
cusViewVO.setCusMain(mainVO);
}else{ }else{
//正常客户 //正常客户
CusMain cusMain = this.getById(id); CusMain cusMain = this.getById(id);
BeanUtils.copyProperties(cusMain, mainVO); BeanUtils.copyProperties(cusMain, mainVO);
mainVO.setCusLabelList(JSON.parseArray(cusMain.getCusLabels()));
cusViewVO.setCusMain(mainVO);
} }
mainVO.setCusLabelList(JSON.parseArray(mainVO.getCusLabels()));
//设置客户当前时间
if(StringUtils.isNotEmpty(mainVO.getZoneName())){
mainVO.setNowTime(dateTimeUtil.getZoneTime(mainVO.getZoneName()));
}
cusViewVO.setCusMain(mainVO);
//2.客户联系人信息 //2.客户联系人信息
CusContacts contacts = new CusContacts(); CusContacts contacts = new CusContacts();
contacts.setCusId(id); contacts.setCusId(id);

View File

@ -108,4 +108,16 @@ public class CusManagerServiceImpl extends ServiceImpl<CusManagerMapper, CusMana
cusManagerMapper.updateByCusId(cusManager); cusManagerMapper.updateByCusId(cusManager);
} }
/**
* 根据客户id删除数据
*
* @param cusId 客户id
* @author vinjor-M
* @date 9:20 2025/11/26
**/
@Override
public void deleteCusData(String cusId) {
cusManagerMapper.deleteCusData(cusId);
}
} }

View File

@ -26,4 +26,17 @@ public class CusMarkServiceImpl extends ServiceImpl<CusMarkMapper,CusMark> impl
public IPage<CusMark> queryListPage(CusMark pageReqVO, Page<CusMark> page) { public IPage<CusMark> queryListPage(CusMark pageReqVO, Page<CusMark> page) {
return cusMarkMapper.queryListPage(pageReqVO, page); return cusMarkMapper.queryListPage(pageReqVO, page);
} }
/**
* 根据客户id删除数据
*
* @param cusId 客户id
* @author vinjor-M
* @date 9:20 2025/11/26
**/
@Override
public void deleteCusMark(String cusId) {
cusMarkMapper.deleteCusMark(cusId);
}
} }

View File

@ -42,4 +42,7 @@ public class MainVO extends CusMain {
/** 最近联系时间 */ /** 最近联系时间 */
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date contactTime; private Date contactTime;
/** 客户所在时区当前时间 */
private String nowTime;
} }

View File

@ -0,0 +1,30 @@
package com.ruoyi.utils;
import org.springframework.stereotype.Component;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
@Component
public class DateTimeUtil {
/**
* 获取某时区当前时间
* @author vinjor-M
* @date 10:50 2025/11/26
* @param zoneName TODO
* @return java.lang.String
**/
public String getZoneTime(String zoneName){
// 1. 定义目标时区ID推荐使用 IANA 时区ID避免旧版 ID 兼容问题
ZoneId zoneId = ZoneId.of(zoneName);
// 2. 获取该时区的当前时间ZonedDateTime 包含 日期+时间+时区+偏移量
ZonedDateTime zonedDateTime = ZonedDateTime.now(zoneId);
// 3. 可选格式化时间为自定义格式yyyy-MM-dd HH:mm:ss zzzz
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss zzzz");
return zonedDateTime.format(formatter);
}
}

View File

@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="BaseTimeZone" id="BaseTimeZoneResult"> <resultMap type="BaseTimeZone" id="BaseTimeZoneResult">
<result property="id" column="id" /> <result property="id" column="id" />
<result property="zoneName" column="zone_name" /> <result property="zoneName" column="zone_name" />
<result property="zoneCn" column="zone_cn" />
<result property="utcOffset" column="utc_offset" /> <result property="utcOffset" column="utc_offset" />
<result property="abbreviation" column="abbreviation" /> <result property="abbreviation" column="abbreviation" />
<result property="usesDst" column="uses_dst" /> <result property="usesDst" column="uses_dst" />
@ -15,13 +16,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectBaseTimeZoneVo"> <sql id="selectBaseTimeZoneVo">
select id, zone_name, utc_offset, abbreviation, uses_dst, dst_offset, description from base_time_zone select id, zone_name, zone_cn,utc_offset, abbreviation, uses_dst, dst_offset, description from base_time_zone
</sql> </sql>
<select id="queryListPage" parameterType="BaseTimeZone" resultMap="BaseTimeZoneResult"> <select id="queryListPage" parameterType="BaseTimeZone" resultMap="BaseTimeZoneResult">
<include refid="selectBaseTimeZoneVo"/> <include refid="selectBaseTimeZoneVo"/>
<where> <where>
<if test="entity.zoneName != null and entity.zoneName != ''"> and zone_name like concat('%', #{entity.zoneName}, '%')</if> <if test="entity.zoneName != null and entity.zoneName != ''"> and zone_name like concat('%', #{entity.zoneName}, '%')</if>
<if test="entity.zoneCn != null and entity.zoneCn != ''"> and zone_cn like concat('%', #{entity.zoneCn}, '%')</if>
</where> </where>
</select> </select>
</mapper> </mapper>

View File

@ -34,4 +34,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where> </where>
order by update_time desc order by update_time desc
</select> </select>
<update id="deleteCusData">
update cus_bank set del_flag = '1' where cus_id = #{cusId}
</update>
</mapper> </mapper>

View File

@ -21,6 +21,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectCusCompanyVo"> <sql id="selectCusCompanyVo">
select id, cus_id, cus_from, cus_level, busi_type, contact_address, del_flag, creator, create_time, updater, update_time from cus_company select id, cus_id, cus_from, cus_level, busi_type, contact_address, del_flag, creator, create_time, updater, update_time from cus_company
</sql> </sql>
<update id="deleteCusData">
update cus_company set del_flag = '1' where cus_id = #{cusId}
</update>
<select id="queryListPage" parameterType="CusCompany" resultMap="CusCompanyResult"> <select id="queryListPage" parameterType="CusCompany" resultMap="CusCompanyResult">
<include refid="selectCusCompanyVo"/> <include refid="selectCusCompanyVo"/>

View File

@ -52,4 +52,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="entity.updateTime != null "> and update_time = #{entity.updateTime}</if> <if test="entity.updateTime != null "> and update_time = #{entity.updateTime}</if>
</where> </where>
</select> </select>
<update id="deleteCusData">
update cus_contacts set del_flag = '1' where cus_id = #{cusId}
</update>
</mapper> </mapper>

View File

@ -23,6 +23,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<sql id="selectCusManagerVo"> <sql id="selectCusManagerVo">
select id, cus_id, user_id,user_name, follow_step, seas_reason, seas_group, old_dept, del_flag, creator, create_time, updater, update_time from cus_manager select id, cus_id, user_id,user_name, follow_step, seas_reason, seas_group, old_dept, del_flag, creator, create_time, updater, update_time from cus_manager
</sql> </sql>
<update id="deleteCusData">
update cus_manager set del_flag = '1' where cus_id = #{cusId}
</update>
<select id="queryListPage" parameterType="CusManager" resultMap="CusManagerResult"> <select id="queryListPage" parameterType="CusManager" resultMap="CusManagerResult">
<include refid="selectCusManagerVo"/> <include refid="selectCusManagerVo"/>
<where> <where>

View File

@ -32,4 +32,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="entity.updateTime != null "> and update_time = #{entity.updateTime}</if> <if test="entity.updateTime != null "> and update_time = #{entity.updateTime}</if>
</where> </where>
</select> </select>
<update id="deleteCusMark">
update cus_mark set del_flag = '1' where cus_id = #{cusId}
</update>
</mapper> </mapper>

View File

@ -78,12 +78,21 @@
<el-col :span="12"> <el-col :span="12">
<el-form-item label="时区" label-width="100px"> <el-form-item label="时区" label-width="100px">
<el-select style="width: 100%" v-model="formData.mainInfo.zoneName" filterable placeholder="时区" clearable> <el-select style="width: 100%" v-model="formData.mainInfo.zoneName" filterable placeholder="时区" clearable>
<el-option <el-tooltip v-for="item in timeZoneList" class="item" effect="dark" :content="'客户当地时间:'+item.nowTime" placement="top-start">
v-for="item in timeZoneList" <el-option
:key="item.zoneName" :key="item.zoneName"
:label="dict.zoneName+'('+dict.utcOffset+')'" :label="item.zoneCn+'('+item.utcOffset+')'"
:value="item.zoneName" :value="item.zoneName"
/> >
<span v-if="parseTime(new Date(), '{y}-{m}-{d}')==item.nowTime.substring(0,10)">
{{item.nowTime.substring(11,16)}}-{{item.zoneCn}}-{{item.utcOffset}}
</span>
<span v-else>
<span style="color: #ffba00">{{item.nowTime.substring(11,16)}}</span>
-{{item.zoneCn}}-{{item.utcOffset}}
</span>
</el-option>
</el-tooltip>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -388,7 +388,7 @@ export default {
}, },
/** 导入按钮操作 */ /** 导入按钮操作 */
handleImport() { handleImport() {
this.upload.title = '户导入' this.upload.title = '户导入'
this.upload.open = true this.upload.open = true
}, },
/** /**

View File

@ -119,12 +119,21 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="时区"> <el-form-item label="时区">
<el-select style="width: 100%" v-model="formData.mainInfo.zoneName" filterable placeholder="时区" clearable> <el-select style="width: 100%" v-model="formData.mainInfo.zoneName" filterable placeholder="时区" clearable>
<el-option <el-tooltip v-for="item in timeZoneList" class="item" effect="dark" :content="'客户当地时间:'+item.nowTime" placement="top-start">
v-for="dict in timeZoneList" <el-option
:key="dict.zoneName" :key="item.zoneName"
:label="dict.zoneName+'('+dict.utcOffset+')'" :label="item.zoneCn+'('+item.utcOffset+')'"
:value="dict.zoneName" :value="item.zoneName"
/> >
<span v-if="parseTime(new Date(), '{y}-{m}-{d}')==item.nowTime.substring(0,10)">
{{item.nowTime.substring(11,16)}}-{{item.zoneCn}}-{{item.utcOffset}}
</span>
<span v-else>
<span style="color: #ffba00">{{item.nowTime.substring(11,16)}}</span>
-{{item.zoneCn}}-{{item.utcOffset}}
</span>
</el-option>
</el-tooltip>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>

View File

@ -26,7 +26,7 @@
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
<div class="time-container"> <div class="time-container">
<i class="el-icon-time dl-hover"/> <i class="el-icon-time dl-hover"/>
<span title="客户所在国家当前时间" class="meta-value">--</span> <span v-if="" title="客户所在国家当前时间" class="meta-value">{{mainInfo.cusMain.nowTime?mainInfo.cusMain.nowTime.substring(0,16):'--'}}</span>
</div> </div>
<el-divider direction="vertical"></el-divider> <el-divider direction="vertical"></el-divider>
<div class="customer-code-container"> <div class="customer-code-container">

View File

@ -362,7 +362,7 @@ export default {
}, },
/** 导入按钮操作 */ /** 导入按钮操作 */
handleImport() { handleImport() {
this.upload.title = '户导入' this.upload.title = '户导入'
this.upload.open = true this.upload.open = true
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */