Commit ac2862eb by zhiwj

导购店长

parent 53a4e73e
......@@ -18,6 +18,7 @@ public class ClerkSearchDTO implements Serializable {
private String storeIds;
private Integer currentPage=1;
private Integer pageSize=20;
private Integer clerkType;
private String fileName;
private Integer excelExtension;
......@@ -112,4 +113,12 @@ public class ClerkSearchDTO implements Serializable {
public void setDataType(Integer dataType) {
this.dataType = dataType;
}
public Integer getClerkType() {
return clerkType;
}
public void setClerkType(Integer clerkType) {
this.clerkType = clerkType;
}
}
......@@ -157,4 +157,13 @@ public interface ClerkApiService {
*/
ServiceResponse<List<ClerkDTO>> listClerkByStoreBrand(Integer enterpriseId, Integer storeBrandId, String clerkName);
/**
* @Title: updateClerkLeader
* @Description:
* @author zhiwj
* @param clerkId
* @return com.gic.api.base.commons.ServiceResponse
* @throws
*/
ServiceResponse updateClerkLeader(Integer clerkId);
}
......@@ -58,7 +58,7 @@ public interface TabClerkMapper {
Integer countByPhoneNumber(@Param("storeId") Integer storeId, @Param("phoneNumber") String phoneNumber, @Param("clerkId") Integer clerkId);
List<TabClerk> listClerkByStoreInfoId(@Param("enterpriseId") Integer enterpriseId, @Param("storeClerkIds") List<Integer> storeClerkIds, @Param("storeInfoIds") String storeInfoIds, @Param("search") String search);
List<TabClerk> listClerkByStoreInfoId(@Param("enterpriseId") Integer enterpriseId, @Param("storeClerkIds") List<Integer> storeClerkIds, @Param("storeInfoIds") String storeInfoIds, @Param("search") String search, @Param("clerkType") Integer clerkType);
Integer getTotalClerk(@Param("enterpriseId") Integer enterpriseId, @Param("storeClerkIds") List<Integer> storeClerkIds, @Param("search") String search);
......@@ -71,4 +71,6 @@ public interface TabClerkMapper {
List<TabClerk> listClerkByIds(@Param("enterpriseId") Integer enterpriseId, @Param("ids") List<Integer> clerkIdList);
TabClerk getClerkByCode(@Param("enterpriseId") Integer enterpriseId, @Param("clerkCode") String clerkCode, @Param("storeInfoId") Integer storeInfoId);
TabClerk getClerkLeaderByStoreInfoId(@Param("enterpriseId") Integer enterpriseId, @Param("storeInfoId") Integer storeInfoId);
}
\ No newline at end of file
......@@ -14,10 +14,10 @@ import java.util.List;
public interface ClerkService {
/**
* @Title: isRepeatByClerkCode
* @Description: 导购关联主键是否重复
* @Description: 导购代码是否重复
* @author zhiwj
* @param storeInfoId 门店id
* @param clerkCode 导购关联主键
* @param clerkCode 导购代码
* @param clerkId 导购id 如果传了,会剔除这个id去判断
* @return boolean true:重复, false:不重复
* @throws
......@@ -69,6 +69,8 @@ public interface ClerkService {
*/
Integer update(ClerkDTO clerkDTO);
Integer update(TabClerk clerk);
/**
* @Title: listClerkByStoreInfoId
* @Description: 查询下导购列表
......@@ -83,6 +85,8 @@ public interface ClerkService {
List<TabClerk> listClerkByStoreInfoId(Integer enterpriseId, String storeInfoIds, String search);
List<TabClerk> listClerkByStoreInfoId(Integer enterpriseId, List<Integer> storeInfoIds, String search, Integer clerkType);
Integer getTotalClerk(Integer enterpriseId, List<Integer> storeInfoIds, String search);
/**
* @Title: getStoreInfoIdsBySearch
......@@ -114,4 +118,7 @@ public interface ClerkService {
List<TabClerk> listClerkByStoreInfoId(Integer enterpriseId, String search);
TabClerk getClerkByCode(Integer enterpriseId, String clerkCode, Integer storeInfoId);
TabClerk getClerkLeaderByStoreInfoId(Integer enterpriseId, Integer storeInfoId);
}
......@@ -46,7 +46,7 @@ public interface StoreService {
Integer countByBrandId(Integer brandId);
/**
* 查询如企业下门店关联主键的个数
* 查询如企业下门店代码的个数
* @param enterpriseId
* @param storeCode
* @param storeId 如果id不为null, 会查询storeId不为传入参数的数据;如果id为null, 会略过
......
......@@ -83,18 +83,29 @@ public class ClerkServiceImpl implements ClerkService {
tabClerk.setClerkGender(copy.getClerkGender());
tabClerk.setNationcode(copy.getNationcode());
tabClerk.setPhoneNumber(copy.getPhoneNumber());
tabClerk.setClerkType(copy.getClerkType());
// tabClerk.setStatus(StoreEnableOrDisAbleEnum.ENABLE.getCode());
return tabClerkMapper.updateByPrimaryKeySelective(tabClerk);
}
@Override
public Integer update(TabClerk clerk) {
return tabClerkMapper.updateByPrimaryKeySelective(clerk);
}
@Override
public List<TabClerk> listClerkByStoreInfoId(Integer enterpriseId, List<Integer> storeInfoIds, String search) {
return tabClerkMapper.listClerkByStoreInfoId(enterpriseId, storeInfoIds, null, search);
return this.listClerkByStoreInfoId(enterpriseId, storeInfoIds, search, null);
}
@Override
public List<TabClerk> listClerkByStoreInfoId(Integer enterpriseId, String storeInfoIds, String search) {
return tabClerkMapper.listClerkByStoreInfoId(enterpriseId, null, storeInfoIds, search);
return tabClerkMapper.listClerkByStoreInfoId(enterpriseId, null, storeInfoIds, search, null);
}
@Override
public List<TabClerk> listClerkByStoreInfoId(Integer enterpriseId, List<Integer> storeInfoIds, String search, Integer clerkType) {
return tabClerkMapper.listClerkByStoreInfoId(enterpriseId, storeInfoIds, null, search, clerkType);
}
@Override
......@@ -138,7 +149,7 @@ public class ClerkServiceImpl implements ClerkService {
@Override
public List<TabClerk> listClerkByStoreInfoId(Integer enterpriseId, String search) {
return this.tabClerkMapper.listClerkByStoreInfoId(enterpriseId, null, null, search);
return this.tabClerkMapper.listClerkByStoreInfoId(enterpriseId, null, null, search, null);
}
@Override
......@@ -146,4 +157,9 @@ public class ClerkServiceImpl implements ClerkService {
return tabClerkMapper.getClerkByCode(enterpriseId, clerkCode, storeInfoId);
}
@Override
public TabClerk getClerkLeaderByStoreInfoId(Integer enterpriseId, Integer storeInfoId) {
return tabClerkMapper.getClerkLeaderByStoreInfoId(enterpriseId, storeInfoId);
}
}
......@@ -63,7 +63,7 @@ public class ClerkApiServiceImpl implements ClerkApiService {
// 校验参数
if (clerkService.isRepeatByClerkCode(clerkDTO.getStoreInfoId(), clerkDTO.getClerkCode(),
clerkDTO.getClerkId())) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "导购关联主键重复");
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "门店下导购代码重复");
}
if (StringUtils.isNotBlank(clerkDTO.getPhoneNumber())) {
String nationcode = clerkDTO.getNationcode();
......@@ -78,18 +78,24 @@ public class ClerkApiServiceImpl implements ClerkApiService {
if (clerkService.isRepeatByPhoneNumber(clerkDTO.getStoreInfoId(), clerkDTO.getPhoneNumber(),
clerkDTO.getClerkId(), clerkDTO.getNationcode())) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "手机号重复");
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "门店下导购手机号重复");
}
}
if (clerkService.isRepeatByClerkName(clerkDTO.getStoreInfoId(), clerkDTO.getClerkName(),
clerkDTO.getClerkId())) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "导购名称重复");
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "门店下导购名称重复");
}
// 店长逻辑
// 如果门店下已经存在有导购是店长, 并且当前导购是店长 则做替换
// 如果门店下没有导购是店长,将当前导购设置成店长
TabClerk clerkLeader = clerkService.getClerkLeaderByStoreInfoId(clerkDTO.getEnterpriseId(), clerkDTO.getStoreInfoId());
if (clerkLeader != null && Integer.valueOf(1).equals(clerkDTO.getClerkType())) {
clerkLeader.setClerkType(0);
clerkService.update(clerkLeader);
clerkDTO.setClerkType(1);
} else {
clerkDTO.setClerkType(1);
}
if (clerkDTO.getClerkId() == null) {
// Integer saveClerkLogBySaveClerk(Integer reason, Integer enterpriseId, Integer clerkId, String remark, Integer operatorId, String operatorName);
......@@ -266,7 +272,15 @@ public class ClerkApiServiceImpl implements ClerkApiService {
storeInfoIds.add(store.getStoreInfoId());
}
List<TabClerk> clerkList = clerkService.listClerkByStoreInfoId(enterpriseId, storeInfoIds,
clerkSearchDTO.getSearch());
clerkSearchDTO.getSearch(), clerkSearchDTO.getClerkType());
if (CollectionUtils.isNotEmpty(clerkList)) {
for (TabClerk clerk : clerkList) {
if (Integer.valueOf(1).equals(clerk.getClerkType())) {
clerk.setPositionName("店长");
}
}
}
Map<Integer, List<TabClerk>> storeIdMap = CollectionUtil.group(clerkList, "storeInfoId");
for (ClerkStoreListDTO clerkStoreListDTO : storeClerkDTOList) {
List<TabClerk> tabClerks = storeIdMap.get(clerkStoreListDTO.getStoreInfoId());
......@@ -530,6 +544,19 @@ public class ClerkApiServiceImpl implements ClerkApiService {
return EnterpriseServiceResponse.success(dtoList);
}
@Override
public ServiceResponse updateClerkLeader(Integer clerkId) {
TabClerk clerk = this.clerkService.getById(clerkId);
clerk.setClerkType(1);
TabClerk oldClerk = this.clerkService.getClerkLeaderByStoreInfoId(clerk.getEnterpriseId(), clerk.getStoreInfoId());
oldClerk.setClerkType(0);
this.clerkService.update(clerk);
this.clerkService.update(oldClerk);
return EnterpriseServiceResponse.success();
}
private static ServiceResponse<String> responseErrorElement(ImportClerkBatchResultEnum error) {
logger.warn("批处理导购错误返回结果:{}", error.toString());
return ServiceResponse.failure(error.getCode(), error.toString());
......
......@@ -247,6 +247,9 @@
<if test="search != null and search != '' ">
and (clerk_code like concat('%', #{search} ,'%') or clerk_name like concat('%', #{search} ,'%') )
</if>
<if test="clerkType != null ">
and clerk_type = #{clerkType}
</if>
</select>
<select id="getTotalClerk" resultType="int">
select
......@@ -329,4 +332,13 @@
and store_info_id = #{storeInfoId}
and clerk_code = #{clerkCode}
</select>
<!-- getClerkLeaderByStoreInfoId-->
<select id="getClerkLeaderByStoreInfoId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
where enterprise_id = #{enterpriseId}
and store_info_id = #{storeInfoId}
and clerk_type = 1
limit 1
</select>
</mapper>
\ No newline at end of file
......@@ -272,6 +272,12 @@ public class ClerkController extends DownloadUtils {
}
}
@RequestMapping("/update-clerk-leader")
public RestResponse updateClerkLeader(Integer clerkId) {
ServiceResponse serviceResponse = clerkApiService.updateClerkLeader(clerkId);
return ResultControllerUtils.commonResult(serviceResponse);
}
@RequestMapping("/list-clerk-log")
public RestResponse listClerkLog(PageQO pageQO, String content, Integer reason, Integer logType, Integer clerkId) {
ClerkLogDTO clerkLogDTO = new ClerkLogDTO();
......
......@@ -232,7 +232,7 @@ public class ClerkImportController {
fileName = sdf.format(listErrorData.get(0).getUpdateTime()) + fileName;
List<List<String>> errorList = clerkImportApiService.listError(enterpriseId).getResult();
List<String> titleList = new ArrayList<>();
Collections.addAll(titleList, "序号", "导购名", "导购关联主键", "门店名", "门店关联主键", "职位", "性别", "区号", "手机号", "错误信息");
Collections.addAll(titleList, "序号", "导购名", "导购代码", "门店名", "门店代码", "职位", "性别", "区号", "手机号", "错误信息");
List<String> descriptionList = new ArrayList<>();
Collections.addAll(descriptionList, "", "必填,不能超过20个字", "必填,不能超过20个字,为导购的唯一识别码", "必填,不能超过20个字", "必填,不能超过20个字", "非必填,不能超过30个字", "\"男\"或\"女\"", "区号,如不填默认为 086", "必填,不能超过20个字", "");
......@@ -250,6 +250,7 @@ public class ClerkImportController {
}
}
private ClerkTmpDTO validateData(Map<Integer, String> row, Integer enterpriseId) {
boolean validate = true;
ClerkTmpDTO bean = new ClerkTmpDTO();
......@@ -275,7 +276,7 @@ public class ClerkImportController {
String clerkCode = row.get(2);
if (validate) {
if (StringUtils.isBlank(clerkCode)) {
bean.setErrorMessage("导购关联主键不能为空");
bean.setErrorMessage("导购代码不能为空");
validate = false;
}
}
......@@ -283,7 +284,7 @@ public class ClerkImportController {
bean.setClerkCode(clerkCode);
if (validate) {
if (this.lengthValidate(clerkCode, 20)) {
bean.setErrorMessage("导购关联主键超过20个字");
bean.setErrorMessage("导购代码超过20个字");
validate = false;
}
}
......@@ -307,7 +308,7 @@ public class ClerkImportController {
String storeCode = row.get(4);
if (validate) {
if (StringUtils.isBlank(storeCode)) {
bean.setErrorMessage("门店关联主键不能为空");
bean.setErrorMessage("门店代码不能为空");
validate = false;
}
}
......@@ -315,7 +316,7 @@ public class ClerkImportController {
bean.setStoreCode(storeCode);
if (validate) {
if (this.lengthValidate(storeCode, 20)) {
bean.setErrorMessage("门店关联主键超过20个字");
bean.setErrorMessage("门店代码超过20个字");
validate = false;
}
}
......
......@@ -340,13 +340,13 @@ public class StoreImportController {
// 验证门店代码
String storeCode = row.get(2);
if (StringUtils.isBlank(storeCode)) {
errorMessage.append("门店关联主键不能为空,");
errorMessage.append("门店代码不能为空,");
} else {
storeCode = storeCode.trim();
bean.setStoreCode(storeCode);
if (this.lengthValidate(storeCode, 20)) {
errorMessage.append("门店关联主键长度超过20个字,");
errorMessage.append("门店代码长度超过20个字,");
}
if (!isNeedReplaceStoreCode) {
// 验证门店code唯一
......
......@@ -32,7 +32,7 @@ public class ClerkQO implements Serializable {
/**
* 店员编码
*/
@NotNull(message = "导购关联主键不能为空", groups = {SaveValidView.class, EditValidView.class})
@NotNull(message = "导购代码不能为空", groups = {SaveValidView.class, EditValidView.class})
private String clerkCode;
/**
* 门店id
......
......@@ -33,7 +33,7 @@ public class StoreQO implements Serializable {
/**
* 门店code
*/
@NotNull(message = "门店关联主键不能为空", groups = {SaveValidView.class})
@NotNull(message = "门店代码不能为空", groups = {SaveValidView.class})
private String storeCode;
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment