From 14b0417bca9050a11792248f5c5c7e7c86e4744f Mon Sep 17 00:00:00 2001 From: 刘小明 <liuxm_a@163.com> Date: 星期三, 21 八月 2024 16:47:45 +0800 Subject: [PATCH] 排班功能 --- pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrScheduleMapper.java | 29 ++ pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleCtrl.java | 126 +++++++++ pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrSchedule.java | 62 ++++ pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrAssemblyPlanMapper.java | 3 pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrScheduleRelMapper.java | 25 + pms-parent/pms-global/src/main/resources/mapper/PrScheduleRelMapper.xml | 129 +++++++++ pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ExcelVo.java | 94 ++++++ pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/QueryVo.java | 16 + pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleSv.java | 111 +++++++ pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrScheduleRel.java | 61 ++++ pms-parent/pms-global/src/main/resources/mapper/PrAssemblyPlanMapper.xml | 30 ++ pms-parent/pms-global/src/main/resources/mapper/PrScheduleMapper.xml | 140 ++++++++++ 12 files changed, 826 insertions(+), 0 deletions(-) diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrAssemblyPlanMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrAssemblyPlanMapper.java index 07d5ee1..f14d6d1 100644 --- a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrAssemblyPlanMapper.java +++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrAssemblyPlanMapper.java @@ -38,6 +38,9 @@ PrAssemblyPlan selectByDeviceNo(@Param("proCode") String proCode,@Param("batchNumber") String batchNumber); + Long countByPlanIdAndNodeId(@Param("planId") Long planId,@Param("nodeId") Long nodeId); + List<Map<String,Object>> selectByPlanName(@Param("planName") String planName); + List<PrAssemblyPlan> selectAssyPlanList(PrAssemblyPlan params); List<PrAssemblyPlan> selectAssyPlanSimplify(PrAssemblyPlan params); diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrScheduleMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrScheduleMapper.java new file mode 100644 index 0000000..333339e --- /dev/null +++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrScheduleMapper.java @@ -0,0 +1,29 @@ +package com.dy.pmsGlobal.daoPr; + +import com.dy.pmsGlobal.pojoPr.PrSchedule; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +@Mapper +public interface PrScheduleMapper { + int deleteByPrimaryKey(Long id); + + int insert(PrSchedule record); + + int insertSelective(PrSchedule record); + + PrSchedule selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(PrSchedule record); + + int updateByPrimaryKey(PrSchedule record); + + Long selectSomeCount(Map<String, Object> params); + + List<PrSchedule> selectSome(Map<String, Object> params); + + List<PrSchedule> selectAll(@Param("scheduleDate") String scheduleDate,@Param("userId") String userId); +} \ No newline at end of file diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrScheduleRelMapper.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrScheduleRelMapper.java new file mode 100644 index 0000000..39efb3a --- /dev/null +++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/daoPr/PrScheduleRelMapper.java @@ -0,0 +1,25 @@ +package com.dy.pmsGlobal.daoPr; + +import com.dy.pmsGlobal.pojoPr.PrScheduleRel; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface PrScheduleRelMapper { + int deleteByPrimaryKey(Long id); + + int insert(PrScheduleRel record); + + int insertSelective(PrScheduleRel record); + + PrScheduleRel selectByPrimaryKey(Long id); + + int updateByPrimaryKeySelective(PrScheduleRel record); + + int updateByPrimaryKey(PrScheduleRel record); + + void deleteByScheduleId(Long scheduleId); + + List<PrScheduleRel> selectByScheduleId(Long scheduleId); +} \ No newline at end of file diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrSchedule.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrSchedule.java new file mode 100644 index 0000000..d5c11e3 --- /dev/null +++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrSchedule.java @@ -0,0 +1,62 @@ +package com.dy.pmsGlobal.pojoPr; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.dy.common.po.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.*; + +import java.util.Date; +import java.util.List; + +/** + * 鎺掔彮琛� + */ +@TableName(value="pr_schedule", autoResultMap = true) +@Data +@Builder +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class PrSchedule implements BaseEntity { + + @JSONField(serializeUsing= ObjectWriterImplToString.class) + public Long id; + + /** + * 鐢ㄦ埛id + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + @NotNull(message="鐢ㄦ埛id涓嶈兘涓虹┖") + public Long userId; + @TableField(exist = false) + public String userName; + + + /** + * 鎺掔彮鏃ユ湡 + */ + @NotEmpty(message="鎺掔彮鏃ユ湡涓嶈兘涓虹┖") + public String scheduleDate; + + /** + * 鏄惁鍒犻櫎锛�1鏄紝0鍚� + */ + @JSONField(serialize = false) + public Byte deleted; + + /** + * 鍒涘缓鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + public Date dt; + + @Valid + @NotEmpty(message = "鎺掔彮鍐呭涓嶈兘涓虹┖") + public List<PrScheduleRel> relList; +} \ No newline at end of file diff --git a/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrScheduleRel.java b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrScheduleRel.java new file mode 100644 index 0000000..ea72fab --- /dev/null +++ b/pms-parent/pms-global/src/main/java/com/dy/pmsGlobal/pojoPr/PrScheduleRel.java @@ -0,0 +1,61 @@ +package com.dy.pmsGlobal.pojoPr; + +import com.alibaba.fastjson2.annotation.JSONField; +import com.alibaba.fastjson2.writer.ObjectWriterImplToString; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.dy.common.po.BaseEntity; +import jakarta.validation.constraints.NotEmpty; +import lombok.*; + +/** + * 鎺掔彮瀛愯〃 + */ +@TableName(value="pr_schedule_rel", autoResultMap = true) +@Data +@Builder +@ToString +@NoArgsConstructor +@AllArgsConstructor +public class PrScheduleRel implements BaseEntity { + + @JSONField(serializeUsing= ObjectWriterImplToString.class) + public Long id; + + /** + * 鎺掔彮id + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + public Long scheduleId; + + /** + * 浠诲姟璁″垝id + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + public Long planId; + @TableField(exist = false) + public String planName; + + /** + * 鑺傜偣id + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + public Long nodeId; + @TableField(exist = false) + public String nodeName; + + /** + * 宸ョ珯id + */ + @JSONField(serializeUsing= ObjectWriterImplToString.class) + public Long stationId; + @TableField(exist = false) + public String stationName; + + /** + * 宸ヤ綔鍐呭 + */ + @NotEmpty(message="宸ヤ綔鍐呭涓嶈兘涓虹┖") + public String workDetails; + +} \ No newline at end of file diff --git a/pms-parent/pms-global/src/main/resources/mapper/PrAssemblyPlanMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/PrAssemblyPlanMapper.xml index bb7f745..8a0a22c 100644 --- a/pms-parent/pms-global/src/main/resources/mapper/PrAssemblyPlanMapper.xml +++ b/pms-parent/pms-global/src/main/resources/mapper/PrAssemblyPlanMapper.xml @@ -56,6 +56,7 @@ column="process_id"/> </resultMap> + <sql id="Base_Column_List"> id,order_id ,pro_id,batch_id, @@ -404,4 +405,33 @@ set deleted = 1 where id = #{id} </update> + + <select id="countByPlanIdAndNodeId" resultType="java.lang.Long"> + select count(1) from pr_assembly_plan ap + left join pr_production_node pn on ap.process_id = pn.process_id + where ap.id = #{planId} and pn.id= #{nodeId} + </select> + + + <resultMap id="jsonResultMap" type="java.util.HashMap"> + <id column="planId" property="planId"/> + <result column="planName" property="planName"/> + <result column="status" property="status"/> + + <collection property="nodes" javaType="java.util.HashMap"> + <result column="content" property="content"/> + <result column="nodeId" property="nodeId"/> + </collection> + </resultMap> + <select id="selectByPlanName" resultMap="jsonResultMap"> + select ap.id planId,ap.name planName,ap.`status`,pn.id nodeId,pn.content from pr_assembly_plan ap + left join pr_production_node pn on ap.process_id = pn.process_id + where status != -1 + <if test="planName != null and planName!= null"> + and ap.name like concat('%', #{planName}, '%') + </if> + </select> + + + </mapper> diff --git a/pms-parent/pms-global/src/main/resources/mapper/PrScheduleMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/PrScheduleMapper.xml new file mode 100644 index 0000000..a225d6d --- /dev/null +++ b/pms-parent/pms-global/src/main/resources/mapper/PrScheduleMapper.xml @@ -0,0 +1,140 @@ +<?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.dy.pmsGlobal.daoPr.PrScheduleMapper"> + <resultMap id="BaseResultMap" type="com.dy.pmsGlobal.pojoPr.PrSchedule"> + <!--@mbg.generated--> + <!--@Table pr_schedule--> + <id column="id" jdbcType="BIGINT" property="id" /> + <result column="user_id" jdbcType="BIGINT" property="userId" /> + <result column="schedule_date" jdbcType="VARCHAR" property="scheduleDate" /> + <result column="deleted" jdbcType="TINYINT" property="deleted" /> + <result column="dt" jdbcType="TIMESTAMP" property="dt" /> + <association property="userName" column="user_id" javaType="java.lang.Long" + select="com.dy.pmsGlobal.daoBa.BaUserMapper.selectNameByUserId" fetchType="eager"/> + <collection column="id" ofType="com.dy.pmsGlobal.pojoPr.PrScheduleRel" property="relList" + select="com.dy.pmsGlobal.daoPr.PrScheduleRelMapper.selectByScheduleId" fetchType="eager" /> + </resultMap> + <sql id="Base_Column_List"> + <!--@mbg.generated--> + id, user_id, schedule_date, deleted,dt + </sql> + <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> + <!--@mbg.generated--> + select + <include refid="Base_Column_List" /> + from pr_schedule + where id = #{id,jdbcType=BIGINT} + </select> + <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> + <!--@mbg.generated--> + delete from pr_schedule + where id = #{id,jdbcType=BIGINT} + </delete> + <insert id="insert" parameterType="com.dy.pmsGlobal.pojoPr.PrSchedule"> + <!--@mbg.generated--> + insert into pr_schedule (id, user_id, schedule_date, + deleted,dt) + values (#{id,jdbcType=BIGINT}, #{userId,jdbcType=BIGINT}, #{scheduleDate,jdbcType=VARCHAR}, + #{deleted,jdbcType=TINYINT},now()) + </insert> + <insert id="insertSelective" parameterType="com.dy.pmsGlobal.pojoPr.PrSchedule"> + <!--@mbg.generated--> + insert into pr_schedule + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null"> + id, + </if> + <if test="userId != null"> + user_id, + </if> + <if test="scheduleDate != null"> + schedule_date, + </if> + <if test="deleted != null"> + deleted, + </if> + <if test="dt != null"> + dt, + </if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null"> + #{id,jdbcType=BIGINT}, + </if> + <if test="userId != null"> + #{userId,jdbcType=BIGINT}, + </if> + <if test="scheduleDate != null"> + #{scheduleDate,jdbcType=VARCHAR}, + </if> + <if test="deleted != null"> + #{deleted,jdbcType=TINYINT}, + </if> + <if test="dt != null"> + #{dt,jdbcType=TIMESTAMP}, + </if> + </trim> + </insert> + <update id="updateByPrimaryKeySelective" parameterType="com.dy.pmsGlobal.pojoPr.PrSchedule"> + <!--@mbg.generated--> + update pr_schedule + <set> + <if test="userId != null"> + user_id = #{userId,jdbcType=BIGINT}, + </if> + <if test="scheduleDate != null"> + schedule_date = #{scheduleDate,jdbcType=VARCHAR}, + </if> + <if test="deleted != null"> + deleted = #{deleted,jdbcType=TINYINT}, + </if> + </set> + where id = #{id,jdbcType=BIGINT} + </update> + <update id="updateByPrimaryKey" parameterType="com.dy.pmsGlobal.pojoPr.PrSchedule"> + <!--@mbg.generated--> + update pr_schedule + set user_id = #{userId,jdbcType=BIGINT}, + schedule_date = #{scheduleDate,jdbcType=VARCHAR}, + deleted = #{deleted,jdbcType=TINYINT} + where id = #{id,jdbcType=BIGINT} + </update> + + <select id="selectSomeCount" resultType="java.lang.Long"> + select count(1) + from pr_schedule + where deleted = 0 + <if test="userId != null"> + and user_id = #{userId,jdbcType=BIGINT} + </if> + <if test="scheduleDate != null"> + and schedule_date = #{scheduleDate,jdbcType=VARCHAR} + </if> + </select> + + <select id="selectSome" resultMap="BaseResultMap"> + select + <include refid="Base_Column_List" /> + from pr_schedule + where deleted = 0 + <if test="userId != null"> + and user_id = #{userId} + </if> + <if test="scheduleDate != null"> + and schedule_date = #{scheduleDate} + </if> + </select> + + <select id="selectAll" resultMap="BaseResultMap"> + select + <include refid="Base_Column_List" /> + from pr_schedule + where deleted = 0 + <if test="userId != null"> + and user_id = #{userId} + </if> + <if test="scheduleDate != null"> + and schedule_date = #{scheduleDate} + </if> + </select> +</mapper> \ No newline at end of file diff --git a/pms-parent/pms-global/src/main/resources/mapper/PrScheduleRelMapper.xml b/pms-parent/pms-global/src/main/resources/mapper/PrScheduleRelMapper.xml new file mode 100644 index 0000000..ef2a29f --- /dev/null +++ b/pms-parent/pms-global/src/main/resources/mapper/PrScheduleRelMapper.xml @@ -0,0 +1,129 @@ +<?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.dy.pmsGlobal.daoPr.PrScheduleRelMapper"> + <resultMap id="BaseResultMap" type="com.dy.pmsGlobal.pojoPr.PrScheduleRel"> + <!--@mbg.generated--> + <!--@Table pr_schedule_rel--> + <id column="id" jdbcType="BIGINT" property="id" /> + <result column="schedule_id" jdbcType="BIGINT" property="scheduleId" /> + <result column="plan_id" jdbcType="BIGINT" property="planId" /> + <result column="node_id" jdbcType="BIGINT" property="nodeId" /> + <result column="station_id" jdbcType="BIGINT" property="stationId" /> + <result column="work_details" jdbcType="VARCHAR" property="workDetails" /> + <association property="nodeName" column="node_id" javaType="java.lang.String" + select="com.dy.pmsGlobal.daoPr.PrProductionNodeMapper.selectNameByNodeId" fetchType="eager"/> + <association property="planName" column="plan_id" javaType="java.lang.String" + select="com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper.selectNameByPlanId" fetchType="eager"/> + <association property="stationName" column="station_id" javaType="java.lang.String" + select="com.dy.pmsGlobal.daoPlt.PltStationMapper.selectNameByStationId" fetchType="eager"/> + </resultMap> + <sql id="Base_Column_List"> + <!--@mbg.generated--> + id, schedule_id, plan_id, node_id, station_id, work_details + </sql> + <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="BaseResultMap"> + <!--@mbg.generated--> + select + <include refid="Base_Column_List" /> + from pr_schedule_rel + where id = #{id,jdbcType=BIGINT} + </select> + <delete id="deleteByPrimaryKey" parameterType="java.lang.Long"> + <!--@mbg.generated--> + delete from pr_schedule_rel + where id = #{id,jdbcType=BIGINT} + </delete> + <insert id="insert" parameterType="com.dy.pmsGlobal.pojoPr.PrScheduleRel"> + <!--@mbg.generated--> + insert into pr_schedule_rel (id, schedule_id, plan_id, + node_id, station_id, work_details + ) + values (#{id,jdbcType=BIGINT}, #{scheduleId,jdbcType=BIGINT}, #{planId,jdbcType=BIGINT}, + #{nodeId,jdbcType=BIGINT}, #{stationId,jdbcType=BIGINT}, #{workDetails,jdbcType=VARCHAR} + ) + </insert> + <insert id="insertSelective" parameterType="com.dy.pmsGlobal.pojoPr.PrScheduleRel"> + <!--@mbg.generated--> + insert into pr_schedule_rel + <trim prefix="(" suffix=")" suffixOverrides=","> + <if test="id != null"> + id, + </if> + <if test="scheduleId != null"> + schedule_id, + </if> + <if test="planId != null"> + plan_id, + </if> + <if test="nodeId != null"> + node_id, + </if> + <if test="stationId != null"> + station_id, + </if> + <if test="workDetails != null"> + work_details, + </if> + </trim> + <trim prefix="values (" suffix=")" suffixOverrides=","> + <if test="id != null"> + #{id,jdbcType=BIGINT}, + </if> + <if test="scheduleId != null"> + #{scheduleId,jdbcType=BIGINT}, + </if> + <if test="planId != null"> + #{planId,jdbcType=BIGINT}, + </if> + <if test="nodeId != null"> + #{nodeId,jdbcType=BIGINT}, + </if> + <if test="stationId != null"> + #{stationId,jdbcType=BIGINT}, + </if> + <if test="workDetails != null"> + #{workDetails,jdbcType=VARCHAR}, + </if> + </trim> + </insert> + <update id="updateByPrimaryKeySelective" parameterType="com.dy.pmsGlobal.pojoPr.PrScheduleRel"> + <!--@mbg.generated--> + update pr_schedule_rel + <set> + <if test="scheduleId != null"> + schedule_id = #{scheduleId,jdbcType=BIGINT}, + </if> + <if test="planId != null"> + plan_id = #{planId,jdbcType=BIGINT}, + </if> + <if test="nodeId != null"> + node_id = #{nodeId,jdbcType=BIGINT}, + </if> + <if test="stationId != null"> + station_id = #{stationId,jdbcType=BIGINT}, + </if> + <if test="workDetails != null"> + work_details = #{workDetails,jdbcType=VARCHAR}, + </if> + </set> + where id = #{id,jdbcType=BIGINT} + </update> + <update id="updateByPrimaryKey" parameterType="com.dy.pmsGlobal.pojoPr.PrScheduleRel"> + <!--@mbg.generated--> + update pr_schedule_rel + set schedule_id = #{scheduleId,jdbcType=BIGINT}, + plan_id = #{planId,jdbcType=BIGINT}, + node_id = #{nodeId,jdbcType=BIGINT}, + station_id = #{stationId,jdbcType=BIGINT}, + work_details = #{workDetails,jdbcType=VARCHAR} + where id = #{id,jdbcType=BIGINT} + </update> + + <delete id="deleteByScheduleId"> + delete from pr_schedule_rel where schedule_id=#{scheduleId} + </delete> + + <select id="selectByScheduleId" resultMap="BaseResultMap"> + select * from pr_schedule_rel where schedule_id=#{scheduleId} + </select> +</mapper> \ No newline at end of file diff --git a/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ExcelVo.java b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ExcelVo.java new file mode 100644 index 0000000..b4f23b8 --- /dev/null +++ b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ExcelVo.java @@ -0,0 +1,94 @@ +package com.dy.pmsProduct.schedule; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.*; +import com.alibaba.excel.converters.Converter; +import com.alibaba.excel.converters.WriteConverterContext; +import com.alibaba.excel.enums.BooleanEnum; +import com.alibaba.excel.enums.CellDataTypeEnum; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.alibaba.excel.enums.poi.HorizontalAlignmentEnum; +import com.alibaba.excel.enums.poi.VerticalAlignmentEnum; +import com.alibaba.excel.metadata.GlobalConfiguration; +import com.alibaba.excel.metadata.data.ImageData; +import com.alibaba.excel.metadata.data.WriteCellData; +import com.alibaba.excel.metadata.property.ExcelContentProperty; +import lombok.Data; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +//鍙傝�冿細 https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write +@Data +@HeadRowHeight(40) //璁剧疆鏍囬楂樺害 +@HeadFontStyle(fontName="瀹嬩綋", fontHeightInPoints = 16) +@HeadStyle(wrapped = BooleanEnum.TRUE, shrinkToFit = BooleanEnum.TRUE, + horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER, + borderLeft = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, + leftBorderColor = 8, rightBorderColor = 8, topBorderColor = 8, bottomBorderColor = 8) //IndexedColors.BLACK +@ContentRowHeight(100) //璁剧疆鍐呭楂樺害 +@ContentFontStyle(fontName="瀹嬩綋", fontHeightInPoints = 14) +@ContentStyle(wrapped = BooleanEnum.TRUE, shrinkToFit = BooleanEnum.TRUE, + horizontalAlignment = HorizontalAlignmentEnum.CENTER, verticalAlignment = VerticalAlignmentEnum.CENTER, + borderLeft = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, + leftBorderColor = 8, rightBorderColor = 8, topBorderColor = 8, bottomBorderColor = 8) //IndexedColors.BLACK +@ColumnWidth(16) //璁剧疆鍒楀 +public class ExcelVo implements Converter<byte[]> { + @ColumnWidth(40) +// @ContentLoopMerge(eachRow=2) + @ExcelProperty("鐢ㄦ埛鍚�") + public String userName ; + + @ColumnWidth(40) + @ExcelProperty("鎺掔彮鏃ユ湡") +// @ContentLoopMerge(eachRow=2) + public String scheduleDate ; + + @ColumnWidth(40) + @ExcelProperty("鍒涘缓鏃堕棿") +// @ContentLoopMerge(eachRow=2) + public Date dt ; + + @ColumnWidth(40) + @ExcelProperty({"鎺掔彮鍐呭","浠诲姟璁″垝"}) + public String planName ; + + @ColumnWidth(40) + @ExcelProperty({"鎺掔彮鍐呭","鑺傜偣"}) + public String nodeName ; + + @ColumnWidth(40) + @ExcelProperty({"鎺掔彮鍐呭","宸ョ珯"}) + public String stationName ; + + @ColumnWidth(40) + @ExcelProperty({"鎺掔彮鍐呭","宸ヤ綔鍐呭"}) + public String workDetails ; + + public WriteCellData<?> convertToExcelData(byte[] value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception { + WriteCellData cellData = new WriteCellData() ; + if(value != null && value.length >0){ + List<ImageData> list = new ArrayList<>(); + ImageData imd = new ImageData(); + imd.setImage(value); + imd.setImageType(ImageData.ImageType.PICTURE_TYPE_PICT); + imd.setLeft(10); + imd.setTop(10); + imd.setRight(10); + imd.setBottom(10); + list.add(imd) ; + cellData.setImageDataList(list); + cellData.setType(CellDataTypeEnum.EMPTY); + }else{ + cellData.setStringValue(""); + cellData.setType(CellDataTypeEnum.STRING); + } + return cellData; + } + + public WriteCellData<?> convertToExcelData(WriteConverterContext<byte[]> context) throws Exception { + return this.convertToExcelData(context.getValue(), context.getContentProperty(), context.getWriteContext().currentWriteHolder().globalConfiguration()); + } + +} diff --git a/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/QueryVo.java b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/QueryVo.java new file mode 100644 index 0000000..823ef81 --- /dev/null +++ b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/QueryVo.java @@ -0,0 +1,16 @@ +package com.dy.pmsProduct.schedule; + +import com.dy.common.webUtil.QueryConditionVo; +import lombok.*; + +@Data +@EqualsAndHashCode(callSuper = false) +@ToString(callSuper = true) +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class QueryVo extends QueryConditionVo { + public String planName; + public String scheduleDate; + public String userId; +} diff --git a/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleCtrl.java b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleCtrl.java new file mode 100644 index 0000000..d583cb9 --- /dev/null +++ b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleCtrl.java @@ -0,0 +1,126 @@ +package com.dy.pmsProduct.schedule; + +import com.alibaba.excel.converters.Converter; +import com.dy.common.aop.SsoPowerAop; +import com.dy.common.webUtil.BaseResponse; +import com.dy.common.webUtil.BaseResponseUtils; +import com.dy.common.webUtil.QueryResultVo; +import com.dy.pmsGlobal.aop.Log; +import com.dy.pmsGlobal.pojoPr.PrSchedule; +import com.dy.pmsGlobal.util.QrCodeUtil; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * 鎺掔彮 + */ +@Slf4j +@RestController +@RequestMapping(path="schedule") +public class ScheduleCtrl { + private static final String fileName = "鎺掔彮淇℃伅" ; + private static final String sheetName = "鎺掔彮淇℃伅" ; + private ScheduleSv sv; + @Autowired + public void setScheduleSv(ScheduleSv scheduleSv) { + this.sv = scheduleSv; + } + + @PostMapping(path="save") + @SsoPowerAop(power = "-1") + @Log("淇濆瓨鎺掔彮") + public BaseResponse<Boolean> save(@RequestBody @Valid PrSchedule schedule){ + int count = sv.save(schedule); + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(true); + } + } + + /** + * 鏇存柊 + * @param schedule + * @return + */ + @PostMapping(path="update") + @SsoPowerAop(power = "-1") + @Log("鏇存柊鎺掔彮") + public BaseResponse<Boolean> update(@RequestBody @Valid PrSchedule schedule){ + int count = sv.update(schedule); + if (count <= 0) { + return BaseResponseUtils.buildFail("鏁版嵁搴撳瓨鍌ㄥけ璐�"); + } else { + return BaseResponseUtils.buildSuccess(true); + } + } + + /** + * 鏌ヨ浠诲姟璁″垝鍒楄〃 + * @param vo + * @return + */ + @PostMapping(path="selectPlan") + @SsoPowerAop(power = "-1") + @Log("鏌ヨ浠诲姟璁″垝鍒楄〃") + public BaseResponse<List<Map<String,Object>>> selectPlan(@RequestBody QueryVo vo){ + List<Map<String,Object>> list = sv.selectPlan(vo) ; + return BaseResponseUtils.buildSuccess(list); + } + /** + * 鏍规嵁ID鏌ヨ + * @return + */ + @GetMapping(path="one") + @SsoPowerAop(power = "-1") + @Log("鏍规嵁ID鏌ヨ鎺掔彮") + public BaseResponse<PrSchedule> one(Long id){ + PrSchedule schedule=sv.selectById(id); + return BaseResponseUtils.buildSuccess(schedule); + } + + /** + * 鍒嗛〉鏌ヨ + * @param vo + * @return + */ + @PostMapping(path="some") + @SsoPowerAop(power = "-1") + @Log("鍒嗛〉鏌ヨ鎺掔彮") + public BaseResponse<QueryResultVo<List<PrSchedule>>> some(@RequestBody com.dy.pmsProduct.schedule.QueryVo vo){ + QueryResultVo<List<PrSchedule>> list = sv.selectSome(vo) ; + return BaseResponseUtils.buildSuccess(list); + } + + + @PostMapping(path="export") + @SsoPowerAop(power = "-1") + @Log("瀵煎嚭鎺掔彮") + public void exportSchedule(@RequestBody QueryVo queryVo, HttpServletResponse response){ + List<Converter> list = new ArrayList<>() ; + + List<PrSchedule> schList = sv.selectAll(queryVo); + // 浣跨敤骞惰娴佹彁楂樻�ц兘 + schList.parallelStream().forEach(sch -> { + sch.relList.forEach(rel -> { + ExcelVo vo = new ExcelVo(); + vo.userName = sch.userName; + vo.scheduleDate = sch.scheduleDate; + vo.dt = sch.dt; + vo.planName = rel.planName; + vo.nodeName = rel.nodeName; + vo.stationName = rel.stationName; + vo.workDetails = rel.workDetails; + list.add(vo); + }); + }); + QrCodeUtil.downloadExcel(response, fileName,sheetName,list); + } +} diff --git a/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleSv.java b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleSv.java new file mode 100644 index 0000000..a7c5ec4 --- /dev/null +++ b/pms-parent/pms-web-product/src/main/java/com/dy/pmsProduct/schedule/ScheduleSv.java @@ -0,0 +1,111 @@ +package com.dy.pmsProduct.schedule; + +import com.dy.common.webUtil.QueryResultVo; +import com.dy.pmsGlobal.daoPlt.PltStationMapper; +import com.dy.pmsGlobal.daoPr.PrAssemblyPlanMapper; +import com.dy.pmsGlobal.daoPr.PrScheduleMapper; +import com.dy.pmsGlobal.daoPr.PrScheduleRelMapper; +import com.dy.pmsGlobal.pojoPlt.PltStation; +import com.dy.pmsGlobal.pojoPr.PrSchedule; +import com.dy.pmsGlobal.pojoPr.PrScheduleRel; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.common.utils.PojoUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; +import java.util.Optional; + +@Slf4j +@Service +public class ScheduleSv { + private PrScheduleMapper scheduleDao; + private PrScheduleRelMapper scheduleRelDao; + private PrAssemblyPlanMapper assemblyPlanDao; + private PltStationMapper stationDao; + @Autowired + public void setStationDao(PltStationMapper stationDao) { + this.stationDao = stationDao; + } + @Autowired + public void setScheduleRelDao(PrScheduleRelMapper scheduleRelDao) { + this.scheduleRelDao = scheduleRelDao; + } + @Autowired + public void setAssemblyPlanDao(PrAssemblyPlanMapper assemblyPlanDao) { + this.assemblyPlanDao = assemblyPlanDao; + } + @Autowired + public void setScheduleDao(PrScheduleMapper scheduleDao) { + this.scheduleDao = scheduleDao; + } + @Transactional + public int save(PrSchedule schedule) { + int count = scheduleDao.insertSelective(schedule); + saveRel(schedule); + return count; + } + @Transactional + public int update(PrSchedule schedule) { + scheduleRelDao.deleteByScheduleId(schedule.id); + saveRel(schedule); + return scheduleDao.updateByPrimaryKeySelective(schedule); + } + private void saveRel(PrSchedule schedule) { + schedule.relList.forEach(rel ->validateRelData(rel, schedule)); + schedule.relList.forEach(rel -> scheduleRelDao.insertSelective(rel)); + } + private void validateRelData(PrScheduleRel rel,PrSchedule schedule) { + validatePlan(rel); + validateStation(rel); + rel.scheduleId = schedule.id; + } + + private void validatePlan(PrScheduleRel rel) { + if (rel.planId != null && rel.nodeId != null) { + long countPlan = assemblyPlanDao.countByPlanIdAndNodeId(rel.planId, rel.nodeId); + if (countPlan == 0) { + log.error("鎺掔彮鏁版嵁涓嶅尮閰�, planId:{}, nodeId:{}", rel.planId, rel.nodeId); + throw new RuntimeException("鎺掔彮鏁版嵁涓嶅尮閰�, planId:" + rel.planId + ", nodeId:" + rel.nodeId); + } + } + } + + private void validateStation(PrScheduleRel rel) { + if (rel.stationId != null) { + Optional<PltStation> stationOpt = Optional.ofNullable(stationDao.selectByPrimaryKey(rel.stationId)); + stationOpt.orElseThrow(() -> { + log.error("宸ョ珯淇℃伅涓嶅瓨鍦�, stationId:{}", rel.stationId); + return new RuntimeException("宸ョ珯淇℃伅涓嶅瓨鍦�, stationId:" + rel.stationId); + }); + } + } + + public PrSchedule selectById(Long id) { + return scheduleDao.selectByPrimaryKey(id); + } + + public QueryResultVo<List<PrSchedule>> selectSome(QueryVo vo) { + Map<String, Object> params = (Map<String, Object>) PojoUtils.generalize(vo); + //鏌ヨ绗﹀悎鏉′欢鐨勮褰曟�绘暟 + Long itemTotal = scheduleDao.selectSomeCount(params); + QueryResultVo<List<PrSchedule>> rsVo = new QueryResultVo<>(vo.pageSize, vo.pageCurr) ; + //璁$畻鍒嗛〉绛変俊鎭� + rsVo.calculateAndSet(itemTotal, params); + //鏌ヨ绗﹀悎鏉′欢鐨勮褰� + rsVo.obj = scheduleDao.selectSome(params); + return rsVo; + } + + public List<Map<String, Object>> selectPlan(QueryVo vo) { + List<Map<String,Object>> list = assemblyPlanDao.selectByPlanName(vo.planName); + + return list; + } + + public List<PrSchedule> selectAll(QueryVo queryVo) { + return scheduleDao.selectAll(queryVo.scheduleDate, queryVo.userId); + } +} -- Gitblit v1.8.0