Commit 4fc7d148 by 丁伟峰

Merge branch 'feature-dingwf-0715' into develop

2 parents f633df19 ce4a6428
...@@ -9,4 +9,7 @@ public class OrderConfig { ...@@ -9,4 +9,7 @@ public class OrderConfig {
public static final String PATTERN_DATETIME = "yyyy-MM-dd HH:mm:ss"; public static final String PATTERN_DATETIME = "yyyy-MM-dd HH:mm:ss";
public static final String PATTERN_DATE = "yyyy-MM-dd"; public static final String PATTERN_DATE = "yyyy-MM-dd";
public static final Integer TEAMTYPE_BEAN = 1;
public static final Integer TEAMTYPE_PEA = 2;
} }
...@@ -4,6 +4,8 @@ import com.dituhui.pea.order.entity.OrgTeamEntity; ...@@ -4,6 +4,8 @@ import com.dituhui.pea.order.entity.OrgTeamEntity;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.List; import java.util.List;
...@@ -21,4 +23,10 @@ public interface OrgTeamDao extends JpaRepository<OrgTeamEntity, Integer> { ...@@ -21,4 +23,10 @@ public interface OrgTeamDao extends JpaRepository<OrgTeamEntity, Integer> {
Page<OrgTeamEntity> findAllByBranchId(String branchId, Pageable pageable); Page<OrgTeamEntity> findAllByBranchId(String branchId, Pageable pageable);
OrgTeamEntity getByTeamId(String teamId); OrgTeamEntity getByTeamId(String teamId);
OrgTeamEntity findByTeamName(String teamName);
@Modifying
@Query("UPDATE OrgTeamEntity tt SET tt.status = :status WHERE tt.teamId = :teamId")
void updateStatusByTeamId(String teamId, int status);
} }
...@@ -3,6 +3,8 @@ package com.dituhui.pea.order.dao; ...@@ -3,6 +3,8 @@ package com.dituhui.pea.order.dao;
import com.dituhui.pea.order.entity.OrgTeamEngineerEntity; import com.dituhui.pea.order.entity.OrgTeamEngineerEntity;
import org.hibernate.annotations.Where; import org.hibernate.annotations.Where;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.util.Collection; import java.util.Collection;
...@@ -16,4 +18,14 @@ public interface OrgTeamEngineerDao extends JpaRepository<OrgTeamEngineerEntity, ...@@ -16,4 +18,14 @@ public interface OrgTeamEngineerDao extends JpaRepository<OrgTeamEngineerEntity,
List<OrgTeamEngineerEntity> findAllByTeamId(String teamId); List<OrgTeamEngineerEntity> findAllByTeamId(String teamId);
List<OrgTeamEngineerEntity> findAllByTeamIdIn(List<String> teamIds); List<OrgTeamEngineerEntity> findAllByTeamIdIn(List<String> teamIds);
List<OrgTeamEngineerEntity> findByTeamId(String teamId);
@Modifying
@Query("UPDATE OrgTeamEngineerEntity tt SET tt.status = :status WHERE tt.teamId = :teamId")
void updateStatusAllEngineers(String teamId, int status);
@Modifying
@Query("UPDATE OrgTeamEngineerEntity tt SET tt.status = :status WHERE tt.teamId = :teamId AND tt.engineerCode IN :engineerCodes")
void updateStatusByEngineerCodes(String teamId, List<String> engineerCodes, int status);
} }
package com.dituhui.pea.order.entity; package com.dituhui.pea.order.entity;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import javax.persistence.*; import javax.persistence.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -8,6 +9,7 @@ import java.util.Date; ...@@ -8,6 +9,7 @@ import java.util.Date;
@Entity @Entity
@Data @Data
@Accessors(chain = true)
@Table(name = "org_team_engineer") @Table(name = "org_team_engineer")
public class OrgTeamEngineerEntity { public class OrgTeamEngineerEntity {
......
package com.dituhui.pea.order.entity; package com.dituhui.pea.order.entity;
import lombok.Data; import lombok.Data;
import lombok.experimental.Accessors;
import javax.persistence.*; import javax.persistence.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -8,6 +9,7 @@ import java.util.Date; ...@@ -8,6 +9,7 @@ import java.util.Date;
@Entity @Entity
@Data @Data
@Accessors(chain = true)
@Table(name = "org_team") @Table(name = "org_team")
public class OrgTeamEntity { public class OrgTeamEntity {
...@@ -82,6 +84,7 @@ public class OrgTeamEntity { ...@@ -82,6 +84,7 @@ public class OrgTeamEntity {
private Integer intervalSchedule; private Integer intervalSchedule;
private Integer intervalScheduleNext; private Integer intervalScheduleNext;
private String cuteOff; private String cuteOff;
private Integer status;
public OrgTeamEntity() { public OrgTeamEntity() {
......
package com.dituhui.pea.order.service.impl; package com.dituhui.pea.order.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.core.date.Week; import cn.hutool.core.date.Week;
import com.dituhui.pea.common.BusinessException; import cn.hutool.core.util.IdUtil;
import com.dituhui.pea.common.Result; import com.dituhui.pea.common.Result;
import com.dituhui.pea.order.dao.*; import com.dituhui.pea.order.dao.*;
import com.dituhui.pea.order.dto.*; import com.dituhui.pea.order.dto.*;
...@@ -17,12 +19,14 @@ import org.springframework.data.domain.PageRequest; ...@@ -17,12 +19,14 @@ import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.time.Duration;
import java.util.Arrays; import java.time.LocalDateTime;
import java.util.Collections; import java.time.LocalTime;
import java.util.List; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.dituhui.pea.order.config.OrderConfig.TEAMTYPE_PEA;
@Service @Service
@Slf4j @Slf4j
public class BusinessTeamServiceImpl implements BusinessTeamService { public class BusinessTeamServiceImpl implements BusinessTeamService {
...@@ -105,12 +109,94 @@ public class BusinessTeamServiceImpl implements BusinessTeamService { ...@@ -105,12 +109,94 @@ public class BusinessTeamServiceImpl implements BusinessTeamService {
@Override @Override
public Result<?> addTeam(BusinessTeamAddDTO.Request req) { public Result<?> addTeam(BusinessTeamAddDTO.Request req) {
return null; OrgTeamEntity entity = orgTeamDao.findByTeamName(req.getTeamName());
if (entity != null) {
return Result.failed("相同名称的工作队已经存在");
}
String teamId = getNewTeamId();
// team
entity = new OrgTeamEntity();
entity.setTeamId(teamId)
.setTeamName(req.getTeamName())
.setTeamType(TEAMTYPE_PEA)
.setGroupId(req.getGroupId())
.setWarehouseId(req.getWarehouseId())
.setWorkdays(String.join(",", req.getWorkdays()));
orgTeamDao.save(entity);
// 对应的技术员
List<OrgTeamEngineerEntity> engineers = req.getEngineerCodes().stream().map(code -> {
return new OrgTeamEngineerEntity()
.setTeamId(teamId)
.setEngineerCode(code)
.setStatus(1)
.setCreateTime(LocalDateTime.now())
.setUpdateTime(LocalDateTime.now());
}).collect(Collectors.toList());
orgTeamEngineerDao.saveAll(engineers);
return Result.success(null);
} }
@Override @Override
public Result<?> updateTeamBase(BusinessTeamUpdateDTO.Request req) { public Result<?> updateTeamBase(BusinessTeamUpdateDTO.Request req) {
return null; OrgTeamEntity entity = orgTeamDao.getByTeamId(req.getTeamId());
if (entity == null) {
return Result.failed("工作队不存在");
}
OrgTeamEntity other = orgTeamDao.findByTeamName(req.getTeamName());
if (other != null && !other.getTeamId().equals(req.getTeamId())) {
return Result.failed("相同名称的其他工作队已经存在");
}
entity.setTeamName(req.getTeamName())
.setWarehouseId(req.getWarehouseId())
.setWorkdays(String.join(",", req.getWorkdays()));
orgTeamDao.save(entity);
// 技术员列表
if (req.getEngineerCodes().size() > 0) {
updateTeamTechnicians(req.getTeamId(), req.getEngineerCodes());
}
return Result.success(null);
}
public void updateTeamTechnicians(String teamId, List<String> engineerCodes) {
// 获取现有的工作队和技术员之间的所有关系
List<OrgTeamEngineerEntity> existingRelations = orgTeamEngineerDao.findByTeamId(teamId);
// 构建新的关系映射
Map<String, OrgTeamEngineerEntity> newRelationsMap = new HashMap<>();
for (String engineerCode : engineerCodes) {
OrgTeamEngineerEntity relation = new OrgTeamEngineerEntity();
relation.setTeamId(teamId);
relation.setEngineerCode(engineerCode);
relation.setCreateTime(LocalDateTime.now());
relation.setUpdateTime(LocalDateTime.now());
relation.setStatus(1);
newRelationsMap.put(engineerCode, relation);
}
// 遍历现有的关系列表,更新关系的最后时间和状态
for (OrgTeamEngineerEntity relation : existingRelations) {
String engineerCode = relation.getEngineerCode();
if (newRelationsMap.containsKey(engineerCode)) {
OrgTeamEngineerEntity newRelation = newRelationsMap.get(engineerCode);
newRelation.setUpdateTime(LocalDateTime.now());
newRelationsMap.put(engineerCode, newRelation);
} else {
relation.setStatus(0);
orgTeamEngineerDao.save(relation);
}
}
// 遍历新的关系映射,创建新的关系
for (OrgTeamEngineerEntity newRelation : newRelationsMap.values()) {
if (!existingRelations.contains(newRelation)) {
orgTeamEngineerDao.save(newRelation);
}
}
} }
@Override @Override
...@@ -145,7 +231,10 @@ public class BusinessTeamServiceImpl implements BusinessTeamService { ...@@ -145,7 +231,10 @@ public class BusinessTeamServiceImpl implements BusinessTeamService {
@Override @Override
public Result<?> deleteTeam(BusinessTeamDeleteDTO.Request req) { public Result<?> deleteTeam(BusinessTeamDeleteDTO.Request req) {
return null; orgTeamDao.updateStatusByTeamId(req.getTeamId(), 0);
orgTeamEngineerDao.updateStatusAllEngineers(req.getTeamId(), 0);
return Result.success("工作队已经删除");
} }
@Override @Override
...@@ -153,6 +242,9 @@ public class BusinessTeamServiceImpl implements BusinessTeamService { ...@@ -153,6 +242,9 @@ public class BusinessTeamServiceImpl implements BusinessTeamService {
log.info(">>> getSchedulingInit({})", req); log.info(">>> getSchedulingInit({})", req);
BusinessTeamConfigInitDTO.Result rs = new BusinessTeamConfigInitDTO.Result(); BusinessTeamConfigInitDTO.Result rs = new BusinessTeamConfigInitDTO.Result();
OrgTeamEntity teamEntity = orgTeamDao.getByTeamId(req.getTeamId()); OrgTeamEntity teamEntity = orgTeamDao.getByTeamId(req.getTeamId());
if (teamEntity == null) {
return Result.failed(String.format("工作队不存在: [%s]", req.getTeamId()));
}
rs.setNextScheduleInterval(teamEntity.getIntervalScheduleNext().toString()); rs.setNextScheduleInterval(teamEntity.getIntervalScheduleNext().toString());
rs.setTodayScheduleInterval(teamEntity.getIntervalSchedule().toString()); rs.setTodayScheduleInterval(teamEntity.getIntervalSchedule().toString());
rs.setTransportMode(commonService.getSpecialParams("ScheduleConfig", "TransportMode")); rs.setTransportMode(commonService.getSpecialParams("ScheduleConfig", "TransportMode"));
...@@ -163,6 +255,33 @@ public class BusinessTeamServiceImpl implements BusinessTeamService { ...@@ -163,6 +255,33 @@ public class BusinessTeamServiceImpl implements BusinessTeamService {
@Override @Override
public Result<?> updateSchedulingConfig(BusinessTeamConfigSubmitDTO.Request req) { public Result<?> updateSchedulingConfig(BusinessTeamConfigSubmitDTO.Request req) {
return null; OrgTeamEntity entity = orgTeamDao.getByTeamId(req.getTeamId());
if (entity == null) {
return Result.failed("工作队信息不存在!");
}
entity.setCuteOff(req.getWorkOff());
entity.setIntervalSchedule(Integer.valueOf(req.getTodayScheduleInterval()));
entity.setIntervalScheduleNext(Integer.valueOf(req.getNextScheduleInterval()));
entity.setStrategyAppointment(req.getAssiginStrategy());
entity.setStrategySchedule(req.getScheduleStrategy());
entity.setTransportMode(req.getTransportMode());
entity.setWorkOn(req.getWorkOn());
entity.setWorkOff(req.getWorkOff());
entity.setWorkDuration(Math.toIntExact(getDuration(req.getWorkOn(), req.getWorkOff())));
orgTeamDao.save(entity);
return Result.success("success");
}
private String getNewTeamId() {
return IdUtil.getSnowflake().nextIdStr();
}
private Long getDuration(String workOn, String workOff) {
LocalTime startTime = LocalTime.parse(workOn);
LocalTime endTime = LocalTime.parse(workOff);
return Duration.between(startTime, endTime).toMinutes();
} }
} }
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!