Commit 475b32e6 by zhiwj

Merge branch 'developer' into 'master'

Developer

See merge request !10
parents a55ba9c6 ed5d3ca1
......@@ -19,6 +19,7 @@ public enum ImportClerkBatchResultEnum {
D2("D2", "导购属性", "标记不导入", "性别", "导购性别错误"),
D3("D3", "导购属性", "标记不导入", "手机号", "导购手机号重复"),
D4("D4", "导购属性", "标记不导入", "手机号", "导购手机号为空"),
D5("D5", "导购属性", "标记不导入", "店长", "是否店长字段为空"),
E1("E1", "商户信息", "标记不导入", "商户", "商户ID非法");
/**
......
......@@ -82,6 +82,7 @@ public class ClerkDTO implements Serializable {
private String operatorName;
private String storeName;
private String haobanStatusName;
private String clerkTypeName;
public Integer getClerkId() {
......@@ -235,4 +236,12 @@ public class ClerkDTO implements Serializable {
public void setHeadImg(String headImg) {
this.headImg = headImg;
}
public void setClerkTypeName(String clerkTypeName) {
this.clerkTypeName = clerkTypeName;
}
public String getClerkTypeName() {
return clerkTypeName;
}
}
......@@ -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;
}
}
......@@ -81,6 +81,7 @@ public class ClerkTmpDTO implements Serializable {
*
*/
private String operatorName;
private String clerkType;
public Integer getClerkTmpId() {
return clerkTmpId;
......@@ -201,4 +202,12 @@ public class ClerkTmpDTO implements Serializable {
public void setOperatorName(String operatorName) {
this.operatorName = operatorName;
}
public String getClerkType() {
return clerkType;
}
public void setClerkType(String clerkType) {
this.clerkType = clerkType;
}
}
package com.gic.store.dto.clerk;
import java.io.Serializable;
import java.util.Date;
/**
* @author zhiwj
* @Description:
* @date 2020-05-15 11:08
*/
public class OrderAddClerkDTO implements Serializable {
private static final long serialVersionUID = -8396198930481002753L;
private String clerkName;
private String clerkCode;
private Integer storeInfoId;
private Integer enterpriseId;
private String orderNum;
private Date orderTime;
public String getClerkName() {
return clerkName;
}
public void setClerkName(String clerkName) {
this.clerkName = clerkName;
}
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public Integer getStoreInfoId() {
return storeInfoId;
}
public void setStoreInfoId(Integer storeInfoId) {
this.storeInfoId = storeInfoId;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getOrderNum() {
return orderNum;
}
public void setOrderNum(String orderNum) {
this.orderNum = orderNum;
}
public Date getOrderTime() {
return orderTime;
}
public void setOrderTime(Date orderTime) {
this.orderTime = orderTime;
}
}
package com.gic.store.dto.clerk;
import java.io.Serializable;
import java.util.Date;
/**
* @author zhiwj
* @Description:
* @date 2020-05-15 11:10
*/
public class PosAddClerkDTO implements Serializable {
private static final long serialVersionUID = -3783721136741569586L;
private String clerkName;
private String clerkCode;
private Integer storeInfoId;
private Integer enterpriseId;
private String cardNO;
private Date openCardTime;
public String getClerkName() {
return clerkName;
}
public void setClerkName(String clerkName) {
this.clerkName = clerkName;
}
public String getClerkCode() {
return clerkCode;
}
public void setClerkCode(String clerkCode) {
this.clerkCode = clerkCode;
}
public Integer getStoreInfoId() {
return storeInfoId;
}
public void setStoreInfoId(Integer storeInfoId) {
this.storeInfoId = storeInfoId;
}
public Integer getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(Integer enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getCardNO() {
return cardNO;
}
public void setCardNO(String cardNO) {
this.cardNO = cardNO;
}
public Date getOpenCardTime() {
return openCardTime;
}
public void setOpenCardTime(Date openCardTime) {
this.openCardTime = openCardTime;
}
}
......@@ -62,6 +62,7 @@ public class ProcessBatchClerkDTO implements Serializable{
*/
private Integer regionId;
private Integer clerkType;
/********************操作日志**********************/
/**
* 事由 1:web后台操作 2:外部触发 3:订单同步 4:会员同步 5:系统配置触发 6 etl同步
......@@ -192,4 +193,12 @@ public class ProcessBatchClerkDTO implements Serializable{
public void setOperatorName(String operatorName) {
this.operatorName = operatorName;
}
public Integer getClerkType() {
return clerkType;
}
public void setClerkType(Integer clerkType) {
this.clerkType = clerkType;
}
}
......@@ -5,6 +5,8 @@ import com.gic.api.base.commons.ServiceResponse;
import com.gic.store.dto.ClerkDTO;
import com.gic.store.dto.ClerkSearchDTO;
import com.gic.store.dto.ClerkStoreListDTO;
import com.gic.store.dto.clerk.OrderAddClerkDTO;
import com.gic.store.dto.clerk.PosAddClerkDTO;
import com.gic.store.dto.clerk.ProcessBatchClerkDTO;
import java.util.List;
......@@ -42,8 +44,10 @@ public interface ClerkApiService {
* @return
*/
ServiceResponse<Integer> saveClerkForPosMember(String clerkName, String clerkCode, Integer storeInfoId, Integer enterpriseId, String cardNO);
ServiceResponse<Integer> saveClerkForPosMember(PosAddClerkDTO posAddClerkDTO);
ServiceResponse<Integer> saveClerkByStoreInfoIdForOrder(String clerkName, String clerkCode, Integer storeInfoId, Integer enterpriseId, String orderNum);
ServiceResponse<Integer> saveClerkByStoreInfoIdForOrder(OrderAddClerkDTO orderAddClerkDTO);
/** @Description: 通过导购code查询导购
......@@ -157,4 +161,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
......@@ -57,6 +57,11 @@ public class TabClerkTmp {
private String phoneNumber;
/**
* 是否店长
*/
private String clerkType;
/**
*
*/
private Date createTime;
......@@ -166,6 +171,14 @@ public class TabClerkTmp {
this.phoneNumber = phoneNumber;
}
public String getClerkType() {
return clerkType;
}
public void setClerkType(String clerkType) {
this.clerkType = clerkType;
}
public Date getCreateTime() {
return createTime;
}
......
......@@ -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);
}
}
......@@ -14,6 +14,8 @@ import com.gic.store.constant.ImportClerkBatchResultEnum;
import com.gic.store.constant.StoreLogTypeEnum;
import com.gic.store.constant.StoreOwnTypeEnum;
import com.gic.store.dto.*;
import com.gic.store.dto.clerk.OrderAddClerkDTO;
import com.gic.store.dto.clerk.PosAddClerkDTO;
import com.gic.store.dto.clerk.ProcessBatchClerkDTO;
import com.gic.store.entity.TabClerk;
import com.gic.store.entity.TabStoreGroup;
......@@ -63,7 +65,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,13 +80,25 @@ 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);
Integer id = clerkService.save(clerkDTO);
......@@ -146,6 +160,30 @@ public class ClerkApiServiceImpl implements ClerkApiService {
}
@Override
public ServiceResponse<Integer> saveClerkForPosMember(PosAddClerkDTO posAddClerkDTO) {
ServiceResponse<StoreDTO> storeResponse = storeApiService.getStoreById(posAddClerkDTO.getEnterpriseId(), posAddClerkDTO.getStoreInfoId());
if (storeResponse.getResult() != null) {
StoreDTO store = storeResponse.getResult();
ClerkDTO clerkDTO = new ClerkDTO();
clerkDTO.setClerkName(posAddClerkDTO.getClerkName());
clerkDTO.setClerkCode(posAddClerkDTO.getClerkCode());
clerkDTO.setEnterpriseId(posAddClerkDTO.getEnterpriseId());
clerkDTO.setStoreInfoId(store.getStoreInfoId());
clerkDTO.setReason(ClerkLogReasonEnum.MEMBER.getCode());
clerkDTO.setRemark("卡号:" + posAddClerkDTO.getCardNO());
clerkDTO.setStoreName(store.getStoreName());
clerkDTO.setStatus((posAddClerkDTO.getOpenCardTime().getTime() + 15552000000L) > new Date().getTime() ? 1 : 0);
ServiceResponse serviceResponse = this.saveOrUpdate(clerkDTO);
return serviceResponse;
} else {
logger.warn("门店不存在 enterpriseId:{}, storeInfoId:{}", posAddClerkDTO.getEnterpriseId(), posAddClerkDTO.getStoreInfoId());
return EnterpriseServiceResponse.failure(ErrorCode.NOTEXISTS.getCode(), "门店不存在");
}
}
@Override
public ServiceResponse<Integer> saveClerkByStoreInfoIdForOrder(String clerkName, String clerkCode, Integer storeInfoId, Integer enterpriseId, String orderNum) {
// Integer storeId = this.storeService.getStoreIdByStoreInfoId(enterpriseId, storeInfoId);
// if (storeId != null) {
......@@ -156,6 +194,7 @@ public class ClerkApiServiceImpl implements ClerkApiService {
clerkDTO.setStoreInfoId(storeInfoId);
clerkDTO.setReason(ClerkLogReasonEnum.ORDER.getCode());
clerkDTO.setRemark("订单号:" + orderNum);
ServiceResponse serviceResponse = this.saveOrUpdate(clerkDTO);
return serviceResponse;
// } else {
......@@ -165,6 +204,21 @@ public class ClerkApiServiceImpl implements ClerkApiService {
}
@Override
public ServiceResponse<Integer> saveClerkByStoreInfoIdForOrder(OrderAddClerkDTO orderAddClerkDTO) {
ClerkDTO clerkDTO = new ClerkDTO();
clerkDTO.setClerkName(orderAddClerkDTO.getClerkName());
clerkDTO.setClerkCode(orderAddClerkDTO.getClerkCode());
clerkDTO.setEnterpriseId(orderAddClerkDTO.getEnterpriseId());
clerkDTO.setStoreInfoId(orderAddClerkDTO.getStoreInfoId());
clerkDTO.setReason(ClerkLogReasonEnum.ORDER.getCode());
clerkDTO.setRemark("订单号:" + orderAddClerkDTO.getOrderNum());
clerkDTO.setStatus((orderAddClerkDTO.getOrderTime().getTime() + 15552000000L) > new Date().getTime() ? 1 : 0);
ServiceResponse serviceResponse = this.saveOrUpdate(clerkDTO);
return serviceResponse;
}
@Override
public ServiceResponse<ClerkDTO> getClerkByCode(Integer enterpriseId, String clerkCode, Integer storeId) {
ServiceResponse<StoreDTO> storeResponse = storeApiService.getStoreById(enterpriseId, storeId);
if (storeResponse.getResult() != null) {
......@@ -260,7 +314,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());
......@@ -452,22 +514,28 @@ public class ClerkApiServiceImpl implements ClerkApiService {
if (StringUtils.isBlank(phone)) {
return responseErrorElement(ImportClerkBatchResultEnum.D4);
}
if (clerkInfo.getClerkType() == null) {
return responseErrorElement(ImportClerkBatchResultEnum.D5);
}
if (clerkService.isRepeatByPhoneNumber(storeInfoId, phone, null, nationcode)) {
return responseErrorElement(ImportClerkBatchResultEnum.D3);
}
ClerkDTO clerkDTO = EntityUtil.changeEntityNew(ClerkDTO.class, clerkInfo);
clerkDTO.setStoreInfoId(storeInfoId);
clerkDTO.setStoreName(storeDTO.getStoreName());
Integer id;
ServiceResponse serviceResponse = saveOrUpdate(clerkDTO);
if (!serviceResponse.isSuccess()) {
return serviceResponse;
}
Integer id = (Integer) serviceResponse.getResult();
if (isAdd) {
id = clerkService.save(clerkDTO);
clerkLogService.saveClerkLogBySaveClerk(enterpriseId, id, clerkDTO.getReason(),
clerkDTO.getRemark(), clerkDTO.getOperatorId(), clerkDTO.getOperatorName());
storeLogByAddClerk(clerkDTO);
} else {
id = clerk.getClerkId();
clerkDTO.setClerkId(id);
clerkService.update(clerkDTO);
clerkLogService.saveClerkLogByUpdateClerk(clerk, clerkDTO, clerkDTO.getEnterpriseId(),
clerkDTO.getClerkId(), clerkDTO.getReason(), clerkDTO.getRemark(), clerkDTO.getOperatorId(),
clerkDTO.getOperatorName());
......@@ -524,6 +592,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());
......
......@@ -110,6 +110,7 @@ public class ClerkImportApiServiceImpl implements ClerkImportApiService {
list.add(clerkTmpDTO.getClerkGender());
list.add(clerkTmpDTO.getNationcode());
list.add(clerkTmpDTO.getPhoneNumber());
list.add(clerkTmpDTO.getClerkType());
list.add(clerkTmpDTO.getErrorMessage());
resultList.add(list);
}
......
......@@ -15,6 +15,7 @@ import com.task.allocation.api.AbstractTaskAllocationOperation;
import com.task.allocation.exception.TaskAllocationException;
import com.task.allocation.qo.InitTaskQO;
import com.task.allocation.util.TaskAllocationSdkClient;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -106,6 +107,7 @@ public class ClerkTaskServiceImpl extends AbstractTaskAllocationOperation implem
clerkDTO.setNationcode(t.getNationcode().trim());
clerkDTO.setPhoneNumber(t.getPhoneNumber().trim());
clerkDTO.setPositionName(t.getPositionName().trim());
clerkDTO.setClerkType(StringUtils.equals(t.getClerkType(), "是")? 1 : 0);
clerkDTO.setReason(ClerkLogReasonEnum.WEB.getCode());
clerkDTO.setRemark("批量导入");
......
......@@ -526,7 +526,7 @@ public class StoreApiServiceImpl implements StoreApiService {
@Override
public ServiceResponse<Long> queryStoreCountFromES(StoreSearchDTO storeSearchDTO){
JSONObject json = this.buildSearchJSON(storeSearchDTO);
logger.info("es查询门店数量json:{}", json.toJSONString());
logger.info("es查询门店数量json:{}", JSON.toJSONString(json));
DynamicSearchDTO dynamicSearchDTO = new DynamicSearchDTO();
dynamicSearchDTO.setSearchJson(json);
dynamicSearchDTO.setEnterpriseId(com.gic.enterprise.constants.Constants.INDEX_ENTERPRISEID);
......@@ -884,6 +884,7 @@ public class StoreApiServiceImpl implements StoreApiService {
@Override
public ServiceResponse<Void> saveStoreAndClerkForBulkOrder(String params) {
logger.info("saveStoreAndClerkForBulkOrder:{}", params);
StoreBulkOrderDTO dto = JSON.parseObject(params, StoreBulkOrderDTO.class);
List<StoreOrderDTO> data = dto.getData();
if(CollectionUtils.isNotEmpty(data)){
......
......@@ -6,6 +6,7 @@ import java.util.List;
import java.util.Stack;
import java.util.concurrent.TimeUnit;
import com.alibaba.fastjson.JSON;
import com.gic.store.service.StoreApiService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -159,6 +160,7 @@ public class StoreGroupApiServiceImpl implements StoreGroupApiService {
//刷新缓存
refreshRedisCache(storeGroupId);
List<StoreGroupDTO> listChidrend = this.listStoreGroupAndChildren(storeGroupParentId).getResult();
logger.info("当前节点下的所有子节点", JSON.toJSONString(listChidrend));
for(StoreGroupDTO dto : listChidrend){
this.storeApiService.refreshStoreIndex(storeGroupDTO.getEnterpriseId(), dto.getStoreGroupId());
}
......
......@@ -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
......@@ -311,6 +314,7 @@
select
<include refid="Base_Column_List" />
from tab_clerk
<where>
<if test="enterpriseId != null ">
and enterprise_id = #{enterpriseId}
</if>
......@@ -320,6 +324,7 @@
#{item}
</foreach>
</if>
</where>
</select>
<select id="getClerkByCode" resultMap="BaseResultMap">
select
......@@ -329,4 +334,14 @@
and store_info_id = #{storeInfoId}
and clerk_code = #{clerkCode}
</select>
<!-- getClerkLeaderByStoreInfoId-->
<select id="getClerkLeaderByStoreInfoId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
from tab_clerk
where enterprise_id = #{enterpriseId}
and store_info_id = #{storeInfoId}
and clerk_type = 1
limit 1
</select>
</mapper>
\ No newline at end of file
......@@ -12,6 +12,7 @@
<result column="clerk_gender" jdbcType="VARCHAR" property="clerkGender" />
<result column="nationcode" jdbcType="VARCHAR" property="nationcode" />
<result column="phone_number" jdbcType="VARCHAR" property="phoneNumber" />
<result column="clerk_type" jdbcType="VARCHAR" property="clerkType" />
<result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
<result column="error_message" jdbcType="VARCHAR" property="errorMessage" />
......@@ -21,7 +22,7 @@
</resultMap>
<sql id="Base_Column_List">
clerk_tmp_id, enterprise_id, clerk_name, clerk_code, store_name, store_code, position_name,
clerk_gender, nationcode, phone_number, create_time, update_time, error_message,
clerk_gender, nationcode, phone_number, clerk_type, create_time, update_time, error_message,
sign_key, operator_id, operator_name
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
......@@ -38,15 +39,15 @@
insert into tab_clerk_tmp (clerk_tmp_id, enterprise_id, clerk_name,
clerk_code, store_name, store_code,
position_name, clerk_gender, nationcode,
phone_number, create_time, update_time,
error_message, sign_key, operator_id,
operator_name)
phone_number, clerk_type, create_time,
update_time, error_message, sign_key,
operator_id, operator_name)
values (#{clerkTmpId,jdbcType=INTEGER}, #{enterpriseId,jdbcType=INTEGER}, #{clerkName,jdbcType=VARCHAR},
#{clerkCode,jdbcType=VARCHAR}, #{storeName,jdbcType=VARCHAR}, #{storeCode,jdbcType=VARCHAR},
#{positionName,jdbcType=VARCHAR}, #{clerkGender,jdbcType=VARCHAR}, #{nationcode,jdbcType=VARCHAR},
#{phoneNumber,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP},
#{errorMessage,jdbcType=VARCHAR}, #{signKey,jdbcType=VARCHAR}, #{operatorId,jdbcType=INTEGER},
#{operatorName,jdbcType=VARCHAR})
#{phoneNumber,jdbcType=VARCHAR}, #{clerkType,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{updateTime,jdbcType=TIMESTAMP}, #{errorMessage,jdbcType=VARCHAR}, #{signKey,jdbcType=VARCHAR},
#{operatorId,jdbcType=INTEGER}, #{operatorName,jdbcType=VARCHAR})
</insert>
<insert id="insertSelective" parameterType="com.gic.store.entity.TabClerkTmp">
insert into tab_clerk_tmp
......@@ -81,6 +82,9 @@
<if test="phoneNumber != null">
phone_number,
</if>
<if test="clerkType != null">
clerk_type,
</if>
<if test="createTime != null">
create_time,
</if>
......@@ -131,6 +135,9 @@
<if test="phoneNumber != null">
#{phoneNumber,jdbcType=VARCHAR},
</if>
<if test="clerkType != null">
#{clerkType,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
......@@ -181,6 +188,9 @@
<if test="phoneNumber != null">
phone_number = #{phoneNumber,jdbcType=VARCHAR},
</if>
<if test="clerkType != null">
clerk_type = #{clerkType,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
......@@ -213,6 +223,7 @@
clerk_gender = #{clerkGender,jdbcType=VARCHAR},
nationcode = #{nationcode,jdbcType=VARCHAR},
phone_number = #{phoneNumber,jdbcType=VARCHAR},
clerk_type = #{clerkType,jdbcType=VARCHAR},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP},
error_message = #{errorMessage,jdbcType=VARCHAR},
......
......@@ -244,7 +244,7 @@
and t1.store_info_id=t2.store_info_id
</update>
<update id="refreshStoreIndexByStoreGroup">
update tab_store t1,tab_store_info t2 set t2.index_id=t2.index_id + 1,t2.update_time=t2.update_time
update tab_store t1,tab_store_info t2 set t2.index_id=IFNULL(t2.index_id,0) + 1,t2.update_time=t2.update_time
where t1.enterprise_id=#{enterpriseId}
and t1.store_group_id=#{storeGroupId}
and t1.store_info_id=t2.store_info_id
......
......@@ -134,6 +134,7 @@ public class ClerkController extends DownloadUtils {
for (ClerkDTO clerkDTO : clerkList) {
clerkDTO.setStoreName(clerkStoreListDTO.getStoreName());
clerkDTO.setHaobanStatusName(clerkDTO.getHaobanStatus() == null ? null : (clerkDTO.getHaobanStatus() == 1 ? "已绑定" : "未绑定"));
clerkDTO.setClerkTypeName(clerkDTO.getClerkType() == null ? null : (clerkDTO.getClerkType() == 1 ? "是" : "否"));
}
clerkDTOS.addAll(clerkList);
}
......@@ -272,6 +273,18 @@ 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-in-store")
public RestResponse listClerkInStore(Integer storeId, String search) {
ServiceResponse<List<ClerkDTO>> serviceResponse = clerkApiService.listClerkByStoreId(UserDetailUtils.getUserDetail().getEnterpriseId(), storeId, search);
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();
......
......@@ -121,7 +121,7 @@ public class ClerkImportController {
try {
Workbook workbook = ExcelUtils.getWorkbookFromUpload(file.getInputStream(), fileName);
List<Map<Integer, String>> data = ExcelUtils.readExcel(6, fileName.substring(fileName.lastIndexOf(".") + 1), workbook, null);
if (CollectionUtils.isNotEmpty(data) && data.get(0).size() != 9) {
if (CollectionUtils.isNotEmpty(data) && data.get(0).size() != 10) {
return RestResponse.failure(ErrorCode.OPERATION_FAILED.getCode(), "总列数与模板不一致");
}
clerkImportApiService.delClerkTmp(enterpriseId);
......@@ -232,9 +232,9 @@ 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个字", "");
Collections.addAll(descriptionList, "", "必填,不能超过20个字", "必填,不能超过20个字,为导购的唯一识别码", "必填,不能超过20个字", "必填,不能超过20个字", "非必填,不能超过30个字", "\"男\"或\"女\"", "区号,如不填默认为 +86", "必填,不能超过20个字", "必填, 是或否", "");
Workbook workbook = ExcelUtils.getWorkbook("导购导入错误记录", titleList, descriptionList, errorList, null);
byte[] bytesName = fileName.getBytes("UTF-8");
......@@ -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;
}
}
......@@ -388,6 +389,23 @@ public class ClerkImportController {
bean.setErrorMessage("手机号不能为空");
}
}
bean.setPhoneNumber(phoneNumber.trim());
// 验证是否店长
String clerkType = row.get(9);
bean.setClerkType(clerkType);
if (validate) {
if (StringUtils.isBlank(clerkType)) {
bean.setErrorMessage("是否店长不能为空");
validate = false;
}
}
if (validate) {
if (StringUtils.equals("是", clerkType) && StringUtils.equals("否", clerkType)) {
bean.setErrorMessage("是否店长类型不存在");
validate = false;
}
}
return bean;
}
......
......@@ -296,18 +296,34 @@ public class StoreController extends DownloadUtils {
}
@RequestMapping("bulk-update-store")
public RestResponse bulkUpdateStatus(String storeIds, String value, int type, String toStoreId) {
public RestResponse bulkUpdateStatus(String storeIds, String value, int type, Integer toStoreId) {
Integer enterpriseId = UserDetailUtils.getUserDetail().getEnterpriseId();
if (StringUtils.isBlank(storeIds) || StringUtils.isBlank(value)) {
return EnterpriseRestResponse.failure(ErrorCode.MISS_PARAMETER);
}
ServiceResponse response = this.storeApiService.bulkUpdateStore(storeIds, value, enterpriseId, type, UserDetailUtils.getUserDetail().getUserId(), UserDetailUtils.getUserDetail().getUserInfo().getUserName());
if (response.isSuccess()) {
if (type == 1 && toStoreId != null) {
// 如果是批量修改状态 要转移门店
StoreSearchDTO storeSearchDTO = new StoreSearchDTO();
storeSearchDTO.setStoreIds(storeIds.replace(',', ' '));
List<String> list = this.storeApiService.listStore(storeSearchDTO, 1, 1000, "storeInfoId").getResult().getResult()
.stream().map(e -> e.getStoreInfoId().toString()).collect(Collectors.toList());
Integer storeInfoId = storeApiService.getStoreById(UserDetailUtils.getUserDetail().getEnterpriseId(), toStoreId).getResult().getStoreInfoId();
StoreBatchUpdateDTO storeBatchUpdateDTO = new StoreBatchUpdateDTO();
storeBatchUpdateDTO.setEnterpriseId(UserDetailUtils.getUserDetail().getEnterpriseId());
storeBatchUpdateDTO.setSourceStoreInfoIdList(list);
storeBatchUpdateDTO.setTargetStoreInfoId(storeInfoId + "");
storeBatchUpdateDTO.setUserId(UserDetailUtils.getUserDetail().getUserId());
logger.info("transfer-store-member:{}", JSON.toJSONString(storeBatchUpdateDTO));
this.storeUpdateApiService.storeBatchUpdate(storeBatchUpdateDTO);
}
// 写日志
String[] storeArr = storeIds.split(",");
StoreSearchDTO storeSearchDTO = new StoreSearchDTO();
storeSearchDTO.setEnterpriseId(enterpriseId);
storeSearchDTO.setStoreIds(Joiner.on(" ").join(storeArr));
Page<StoreDTO> page = this.storeApiService.listStore(storeSearchDTO, 1, 3).getResult();
Page<StoreDTO> page = this.storeApiService.listStore(storeSearchDTO, 1, 3, "storeName").getResult();
if (page != null && CollectionUtils.isNotEmpty(page.getResult())) {
List<StoreDTO> storeList = page.getResult();
if (CollectionUtils.isNotEmpty(storeList)) {
......@@ -471,9 +487,15 @@ public class StoreController extends DownloadUtils {
public RestResponse transferStoreMember(String storeId, Integer toStoreId){
// 把参数改成storeInfoId
StoreSearchDTO storeSearchDTO = new StoreSearchDTO();
storeSearchDTO.setStoreIds(storeId.replace(',', ' '));
List<String> list = this.storeApiService.listStore(storeSearchDTO, 1, 1000, "storeInfoId").getResult().getResult()
.stream().map(e -> e.getStoreInfoId().toString()).collect(Collectors.toList());
List<StoreDTO> storeInfoList;
if (StringUtils.equals(storeId, "all")) {
storeInfoList = this.storeApiService.listStore(storeSearchDTO, 1, 10000, "storeInfoId").getResult().getResult();
} else {
storeSearchDTO.setStoreIds(storeId.replace(',', ' '));
storeInfoList = this.storeApiService.listStore(storeSearchDTO, 1, storeId.split(" ").length, "storeInfoId").getResult().getResult();
}
List<String> list = storeInfoList.stream().map(e -> e.getStoreInfoId().toString()).collect(Collectors.toList());
Integer storeInfoId = storeApiService.getStoreById(UserDetailUtils.getUserDetail().getEnterpriseId(), toStoreId).getResult().getStoreInfoId();
// List<String> list = Arrays.asList(storeId.split(","));
......
......@@ -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
......@@ -65,6 +65,8 @@ public class ClerkQO implements Serializable {
*/
private Integer status;
private Integer clerkType;
public Integer getClerkId() {
return clerkId;
}
......@@ -136,4 +138,12 @@ public class ClerkQO implements Serializable {
public void setStatus(Integer status) {
this.status = status;
}
public Integer getClerkType() {
return clerkType;
}
public void setClerkType(Integer clerkType) {
this.clerkType = clerkType;
}
}
......@@ -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