Browse Source

1.维修反馈:新增功能:人员选择增加排班过滤

2.增加班次、排班功能
java8
赵宏斌 1 year ago
parent
commit
17b08893d1
  1. 21
      src/main/java/com/xujie/sys/modules/pms/data/EamAdminData.java
  2. 98
      src/main/java/com/xujie/sys/modules/scheduling/controller/SchedulingController.java
  3. 15
      src/main/java/com/xujie/sys/modules/scheduling/entity/ClassesData.java
  4. 39
      src/main/java/com/xujie/sys/modules/scheduling/entity/SchedulingData.java
  5. 14
      src/main/java/com/xujie/sys/modules/scheduling/entity/SchedulingRecordData.java
  6. 37
      src/main/java/com/xujie/sys/modules/scheduling/mapper/SchedulingMapper.java
  7. 29
      src/main/java/com/xujie/sys/modules/scheduling/service/SchedulingService.java
  8. 157
      src/main/java/com/xujie/sys/modules/scheduling/service/impl/SchedulingServiceImpl.java
  9. 16
      src/main/resources/mapper/pms/EamMapper.xml
  10. 85
      src/main/resources/mapper/scheduling/SchedulingMapper.xml

21
src/main/java/com/xujie/sys/modules/pms/data/EamAdminData.java

@ -29,6 +29,27 @@ public class EamAdminData extends QueryPage {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
private Date updateDate;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date date;
private String classesCode;
public String getClassesCode() {
return classesCode;
}
public void setClassesCode(String classesCode) {
this.classesCode = classesCode;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
// 更新人
private String updateBy;
/**

98
src/main/java/com/xujie/sys/modules/scheduling/controller/SchedulingController.java

@ -0,0 +1,98 @@
package com.xujie.sys.modules.scheduling.controller;
import com.xujie.sys.common.utils.R;
import com.xujie.sys.modules.scheduling.entity.ClassesData;
import com.xujie.sys.modules.scheduling.entity.SchedulingData;
import com.xujie.sys.modules.scheduling.entity.SchedulingRecordData;
import com.xujie.sys.modules.scheduling.service.SchedulingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/scheduling/Scheduling1")
public class SchedulingController {
@Autowired
SchedulingService schedulingService;
/**
* @Description TODO
* @Title eamFamilySave
* @param data
* @author rq
* @date 2023/1/29 15:13
* @return Object
* @throw
*/
@PostMapping(value="/saveClassesData")
@ResponseBody
public R saveClassesData(@RequestBody ClassesData data){
System.out.println(data.toString());
R r = schedulingService.saveClassesData(data);
return r;
}
@PostMapping(value="/getSchedulingDataList")
@ResponseBody
public R getSchedulingDataList(@RequestBody ClassesData data){
System.out.println(data.toString());
List<ClassesData> list = schedulingService.getSchedulingDataList(data);
return R.ok().put("rows", list);
}
@PostMapping(value="/delScheduling")
@ResponseBody
public R delScheduling(@RequestBody ClassesData data){
System.out.println(data.toString());
int i = schedulingService.delScheduling(data);
return R.ok();
}
@PostMapping(value="/getClassesList")
@ResponseBody
public R getClassesList(){
List<ClassesData> list = schedulingService.getClassesList();
return R.ok().put("rows",list);
}
@PostMapping(value="/querySchedulingList")
@ResponseBody
public R querySchedulingList(@RequestBody SchedulingData data){
List<SchedulingData> list = schedulingService.querySchedulingList(data);
return R.ok().put("rows",list);
}
@PostMapping(value="/saveSchedulingHeader")
@ResponseBody
public R saveSchedulingHeader(@RequestBody SchedulingData data){
System.out.println(data.toString());
R r = schedulingService.saveSchedulingHeader(data);
return r;
}
@PostMapping(value="/querySaveSchedulingRecord")
@ResponseBody
public R querySaveSchedulingRecord(@RequestBody SchedulingData data){
List<SchedulingRecordData> list = schedulingService.querySaveSchedulingRecord(data);
return R.ok().put("rows", list);
}
@PostMapping(value="/deleteSchedulingRecord")
@ResponseBody
public R deleteSchedulingRecord(@RequestBody SchedulingRecordData data){
R r = schedulingService.deleteSchedulingRecord(data);
return r;
}
@PostMapping(value="/editSaveSchedulingRecord")
@ResponseBody
public R editSaveSchedulingRecord(@RequestBody SchedulingRecordData data){
R r = schedulingService.editSaveSchedulingRecord(data);
return r;
}
}

15
src/main/java/com/xujie/sys/modules/scheduling/entity/ClassesData.java

@ -0,0 +1,15 @@
package com.xujie.sys.modules.scheduling.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.Data;
@Data
public class ClassesData {
private String code;
private String description;
private String site;
private String bu;
private String buNo;
@TableField(exist = false)
private Integer id;
}

39
src/main/java/com/xujie/sys/modules/scheduling/entity/SchedulingData.java

@ -0,0 +1,39 @@
package com.xujie.sys.modules.scheduling.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xujie.sys.modules.pms.data.EamAdminData;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@Data
public class SchedulingData {
private Integer id;
private String classesCode;
private String classesDescription;
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date date;
@TableField(exist = false)
private String bu;
private String site;
private String buNo;
@TableField(exist = false)
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date startDate;
@TableField(exist = false)
@DateTimeFormat(pattern = "yyyy-MM-dd")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private Date endDate;
@TableField(exist = false)
private Object checkbox1;
@TableField(exist = false)
private Object checkbox2;
@TableField(exist = false)
private List<EamAdminData> peopleList;
}

14
src/main/java/com/xujie/sys/modules/scheduling/entity/SchedulingRecordData.java

@ -0,0 +1,14 @@
package com.xujie.sys.modules.scheduling.entity;
import lombok.Data;
@Data
public class SchedulingRecordData {
private Integer id;
private String adminId;
private String adminName;
private Integer headId;
private String isHoliday;
private Integer editId;
}

37
src/main/java/com/xujie/sys/modules/scheduling/mapper/SchedulingMapper.java

@ -0,0 +1,37 @@
package com.xujie.sys.modules.scheduling.mapper;
import com.xujie.sys.modules.scheduling.entity.ClassesData;
import com.xujie.sys.modules.scheduling.entity.SchedulingData;
import com.xujie.sys.modules.scheduling.entity.SchedulingRecordData;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface SchedulingMapper {
int insertClassesData(ClassesData data);
List<ClassesData> getSchedulingDataList(ClassesData data);
int delScheduling(ClassesData data);
int updateClassesData(ClassesData data);
int getSchedulingDataCount(ClassesData data);
List<ClassesData> getClassesList();
List<SchedulingData> querySchedulingList(SchedulingData data);
void saveSchedulingHeader(SchedulingData data);
void saveSchedulingRecord(SchedulingRecordData schedulingRecordData);
List<SchedulingRecordData> querySaveSchedulingRecord(SchedulingData data);
int deleteSchedulingRecord(SchedulingRecordData data);
int editSaveSchedulingRecord(SchedulingRecordData data);
}

29
src/main/java/com/xujie/sys/modules/scheduling/service/SchedulingService.java

@ -0,0 +1,29 @@
package com.xujie.sys.modules.scheduling.service;
import com.xujie.sys.common.utils.R;
import com.xujie.sys.modules.scheduling.entity.ClassesData;
import com.xujie.sys.modules.scheduling.entity.SchedulingData;
import com.xujie.sys.modules.scheduling.entity.SchedulingRecordData;
import java.util.List;
public interface SchedulingService {
R saveClassesData(ClassesData data);
List<ClassesData> getSchedulingDataList(ClassesData data);
int delScheduling(ClassesData data);
List<ClassesData> getClassesList();
List<SchedulingData> querySchedulingList(SchedulingData data);
R saveSchedulingHeader(SchedulingData data);
List<SchedulingRecordData> querySaveSchedulingRecord(SchedulingData data);
R deleteSchedulingRecord(SchedulingRecordData data);
R editSaveSchedulingRecord(SchedulingRecordData data);
}

157
src/main/java/com/xujie/sys/modules/scheduling/service/impl/SchedulingServiceImpl.java

@ -0,0 +1,157 @@
package com.xujie.sys.modules.scheduling.service.impl;
import com.xujie.sys.common.utils.R;
import com.xujie.sys.modules.pms.data.EamAdminData;
import com.xujie.sys.modules.scheduling.entity.ClassesData;
import com.xujie.sys.modules.scheduling.entity.SchedulingData;
import com.xujie.sys.modules.scheduling.entity.SchedulingRecordData;
import com.xujie.sys.modules.scheduling.mapper.SchedulingMapper;
import com.xujie.sys.modules.scheduling.service.SchedulingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
@Service
public class SchedulingServiceImpl implements SchedulingService {
@Autowired
SchedulingMapper schedulingMapper;
@Override
public R saveClassesData(ClassesData data) {
if (!data.getBu().isEmpty()){
String[] split = data.getBu().split("_");
data.setSite(split[0]);
data.setBuNo(split[1]);
}
//判断请求 新增||更新
if (data.getId()>0){
int i = schedulingMapper.updateClassesData(data);
return R.ok();
}else {
int count = schedulingMapper.getSchedulingDataCount(data);
if (count > 0) {
return R.error("该班次编码已存在,请勿重复添加");
}
int i = schedulingMapper.insertClassesData(data);
return R.ok();
}
}
@Override
public List<ClassesData> getSchedulingDataList(ClassesData data) {
if (!data.getBu().isEmpty()){
String[] split = data.getBu().split("_");
data.setSite(split[0]);
data.setBuNo(split[1]);
}
List<ClassesData> list = schedulingMapper.getSchedulingDataList(data);
return list;
}
@Override
public int delScheduling(ClassesData data) {
int i = schedulingMapper.delScheduling(data);
return i;
}
@Override
public List<ClassesData> getClassesList() {
List<ClassesData> list = schedulingMapper.getClassesList();
return list;
}
@Override
public List<SchedulingData> querySchedulingList(SchedulingData data) {
if (!Objects.isNull(data.getBu())&&!data.getBu().equals("")){
data.setSite(data.getBu().split("_")[0]);
data.setBuNo(data.getBu().split("_")[1]);
}
List<SchedulingData> list = schedulingMapper.querySchedulingList(data);
return list;
}
@Override
@Transactional
public R saveSchedulingHeader(SchedulingData data) {
// 获得 site bu
if (data.getBu().split("_").length >= 2 ) {
data.setSite(data.getBu().split("_")[0]);
data.setBuNo(data.getBu().split("_")[1]);
} else {
throw new RuntimeException("工厂和部门有误!");
}
Date startDate = data.getStartDate();
Date endDate = data.getEndDate();
String checkbox1 = Objects.toString(data.getCheckbox1());
String checkbox2 = Objects.toString(data.getCheckbox2());
Calendar cal = Calendar.getInstance();
cal.setTime(startDate);
while (!cal.getTime().after(endDate)) {
int day = cal.get(Calendar.DAY_OF_WEEK);
if ((day == Calendar.SATURDAY && !"true".equals(checkbox1))){
System.out.println("进入周六判断");
cal.add(Calendar.DATE, 1);
continue;
}
if ((day == Calendar.SUNDAY && !"true".equals(checkbox2))){
System.out.println("进入周日判断");
cal.add(Calendar.DATE, 1);
continue;
}
data.setDate(cal.getTime());
try {
//新增主表信息
schedulingMapper.saveSchedulingHeader(data);
}catch (Exception e){
System.out.println("进入catch逻辑");
return R.error("保存失败,请检查是否存在重复的班次编码和日期");
}
//设置子表参数
SchedulingRecordData schedulingRecordData = new SchedulingRecordData();
schedulingRecordData.setHeadId(data.getId());
schedulingRecordData.setIsHoliday("N");
List<EamAdminData> peopleList = data.getPeopleList();
for (int i = 0;i<peopleList.size();i++){
schedulingRecordData.setAdminId(peopleList.get(i).getAdminID());
schedulingRecordData.setAdminName(peopleList.get(i).getAdminName());
schedulingMapper.saveSchedulingRecord(schedulingRecordData);
}
cal.add(Calendar.DATE, 1);
}
return R.ok();
}
@Override
public List<SchedulingRecordData> querySaveSchedulingRecord(SchedulingData data) {
List<SchedulingRecordData> list = schedulingMapper.querySaveSchedulingRecord(data);
return list;
}
@Override
public R deleteSchedulingRecord(SchedulingRecordData data) {
int i = schedulingMapper.deleteSchedulingRecord(data);
return R.ok().put("msg", "删除成功");
}
@Override
public R editSaveSchedulingRecord(SchedulingRecordData data) {
if (data.getEditId()>0){
int i = schedulingMapper.editSaveSchedulingRecord(data);
}else {
SchedulingRecordData schedulingRecordData = new SchedulingRecordData();
schedulingRecordData.setHeadId(data.getHeadId());
schedulingRecordData.setAdminId(data.getAdminId());
schedulingRecordData.setAdminName(data.getAdminName());
schedulingRecordData.setIsHoliday(data.getIsHoliday());
schedulingMapper.saveSchedulingRecord(schedulingRecordData);
}
return R.ok();
}
}

16
src/main/resources/mapper/pms/EamMapper.xml

@ -3634,6 +3634,22 @@
<if test = "roleId != null and roleId != ''">
AND d.role_id = #{roleId}
</if>
<if test = "date != null">
AND a.username IN (
SELECT tpm_scheduling_record.admin_id
FROM tpm_scheduling
join tpm_scheduling_record on tpm_scheduling.id = tpm_scheduling_record.head_id
WHERE tpm_scheduling.date= #{date} and tpm_scheduling_record.isHoliday = 'N'
)
</if>
<if test = "classesCode != null and classesCode != ''">
AND a.username IN (
SELECT tpm_scheduling_record.admin_id
FROM tpm_scheduling
join tpm_scheduling_record on tpm_scheduling.id = tpm_scheduling_record.head_id
WHERE tpm_scheduling.classes_code = #{classesCode} and tpm_scheduling_record.isHoliday = 'N'
)
</if>
</where>
order by load_rate desc
</select>

85
src/main/resources/mapper/scheduling/SchedulingMapper.xml

@ -0,0 +1,85 @@
<?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.xujie.sys.modules.scheduling.mapper.SchedulingMapper">
<insert id="insertClassesData">
insert into tpm_classes(code,description,site,bu_no)
values (#{code}, #{description}, #{site}, #{buNo})
</insert>
<insert id="saveSchedulingHeader" parameterType="com.xujie.sys.modules.scheduling.entity.SchedulingData" useGeneratedKeys="true" keyProperty="id">
insert into tpm_scheduling(site, bu_no,date,classes_code)
values (#{site},#{buNo},#{date},#{classesCode})
</insert>
<insert id="saveSchedulingRecord">
insert into tpm_scheduling_record(admin_id,admin_name,head_id,isHoliday)
values (#{adminId}, #{adminName}, #{headId},#{isHoliday})
</insert>
<update id="updateClassesData">
update tpm_classes set description = #{description}
where code = #{code} and site = #{site} and bu_no = #{buNo}
</update>
<update id="editSaveSchedulingRecord">
update tpm_scheduling_record set isHoliday = #{isHoliday}
where id = #{id}
</update>
<delete id="delScheduling">
delete from tpm_classes
where code = #{code} and site = #{site} and bu_no = #{buNo}
</delete>
<delete id="deleteSchedulingRecord">
delete from tpm_scheduling_record
where id = #{id}
</delete>
<select id="getSchedulingDataList" resultType="com.xujie.sys.modules.scheduling.entity.ClassesData">
select * from tpm_classes
<where>
<if test="code != null and code != ''">
and code like concat('%', #{code}, '%')
</if>
<if test="description != null and description != ''">
and description like concat('%', #{description}, '%')
</if>
<if test="site != null and site != ''">
and site = #{site}
</if>
<if test="buNo != null and buNo != ''">
and bu_no = #{buNo}
</if>
</where>
</select>
<select id="getSchedulingDataCount" resultType="java.lang.Integer">
select count(*) from tpm_classes
where code = #{code}
</select>
<select id="getClassesList" resultType="com.xujie.sys.modules.scheduling.entity.ClassesData">
select * from tpm_classes
</select>
<select id="querySchedulingList" resultType="com.xujie.sys.modules.scheduling.entity.SchedulingData">
select tpm_scheduling.*,
tc.description as classesDescription
from tpm_scheduling
left join tpm_classes tc on tpm_scheduling.classes_code = tc.code
<where>
<if test="site != null and site != ''">
and site = #{site}
</if>
<if test="buNo != null and buNo != ''">
and bu_no = #{buNo}
</if>
<if test="classesCode != null and classesCode != ''">
and classes_code = #{classesCode}
</if>
<if test="startDate != null">
and date >= #{startDate}
</if>
<if test="endDate != null">
and date <![CDATA[<=]]> #{endDate}
</if>
</where>
</select>
<select id="querySaveSchedulingRecord" resultType="com.xujie.sys.modules.scheduling.entity.SchedulingRecordData">
select * from tpm_scheduling_record
where head_id = #{id}
</select>
</mapper>
Loading…
Cancel
Save