From 8730a49c37da739e45f80eed3699afaccfc94dc7 Mon Sep 17 00:00:00 2001 From: Paidax Date: Thu, 19 Sep 2024 16:20:46 +0800 Subject: [PATCH] commit --- .../io/v/nutz/lxy/controller/LxyHdCon.java | 38 ++- .../lxy/controller/LxyXghshController.java | 1 + .../io/v/nutz/lxy/service/LxyMefpService.java | 2 + .../lxy/service/impl/LxyMefpServiceImpl.java | 23 ++ .../controller/review/AddZbController.java | 9 + .../review/StatisticsZpController.java | 23 +- .../controller/review/ViewZbController.java | 1 + .../wakershome/model/review/CommentBz.java | 2 + .../wakershome/model/review/CommentNr.java | 2 + .../model/review/CommentUnionGrading.java | 66 ++++ .../impl/review/CommentZbServiceImpl.java | 35 +++ .../service/review/CommentZbService.java | 1 + src/main/resources/docTemplate/WakesHome.docx | Bin 11507 -> 11811 bytes .../mobile/wakeshome/review/commentator.html | 78 +++-- .../platform/wakeshome/review/doReview.html | 9 +- .../platform/wakeshome/review/statistics.html | 80 ++++- .../views/platform/zgfw/lxy/HdMange.html | 292 +++++++++++++++--- .../views/platform/zgfw/lxy/HdXghsh.html | 55 ++-- 18 files changed, 591 insertions(+), 126 deletions(-) create mode 100644 src/main/java/io/v/nutz/wakershome/model/review/CommentUnionGrading.java diff --git a/src/main/java/io/v/nutz/lxy/controller/LxyHdCon.java b/src/main/java/io/v/nutz/lxy/controller/LxyHdCon.java index 7f7d406..e6675df 100644 --- a/src/main/java/io/v/nutz/lxy/controller/LxyHdCon.java +++ b/src/main/java/io/v/nutz/lxy/controller/LxyHdCon.java @@ -1,5 +1,7 @@ package io.v.nutz.lxy.controller; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import cn.wizzer.framework.base.service.BaseService; import io.v.nutz.annontation.ViReturn; import io.v.nutz.base.utils.PageUtil; @@ -11,21 +13,25 @@ import io.v.nutz.lxy.service.LxyMefpService; import io.v.nutz.sys.models.Sys_file; import org.apache.shiro.authz.annotation.RequiresAuthentication; import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.nutz.aop.interceptor.ioc.TransAop; import org.nutz.boot.starter.ftp.FtpService; import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Sqls; import org.nutz.dao.entity.Record; import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Strings; import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.*; import org.nutz.mvc.upload.TempFile; import org.nutz.mvc.upload.UploadAdaptor; import java.io.IOException; +import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -91,19 +97,22 @@ public class LxyHdCon { @At @POST - @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) @ViReturn + @Aop(TransAop.READ_COMMITTED) @RequiresPermissions("zgfw.lxy.hdmange") - public Object doAdd(Lxy_hd hd, @Param(value = "files",required = false) TempFile[] files, Lxy_mefp[] mefp) throws IOException { + @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) + public Object doAdd(Lxy_hd hd, @Param(value = "files",required = false) TempFile[] files,@Param(value = "mefp") String jsonStr) throws IOException { hd.setHdcjsj(new Date()); hd = lxyHdService.insert(hd); - for (Lxy_mefp lxyMefp : mefp) { - lxyMefp.setHdid(hd.getId()); - lxyMefp.setNumber(lxyMefp.getNumber() == null ? 0 : lxyMefp.getNumber()); - lxyMefpService.insert(lxyMefp); - } + lxyMefpService.setMefp(jsonStr, hd.getId()); + +// for (Lxy_mefp lxyMefp : mefp) { +// lxyMefp.setHdid(hd.getId()); +// lxyMefp.setNumber(lxyMefp.getNumber() == null ? 0 : lxyMefp.getNumber()); +// lxyMefpService.insert(lxyMefp); +// } for (TempFile file : files) { String rid = R.UU32(); @@ -123,19 +132,23 @@ public class LxyHdCon { @At @ViReturn + @Aop(TransAop.READ_COMMITTED) @RequiresPermissions("zgfw.lxy.hdmange") - public Object doEditMefp(Lxy_mefp[] mefp) { - for (Lxy_mefp lxyMefp : mefp) { - baseService.dao().update("lxy_mefp", Chain.make("number", lxyMefp.getNumber()), Cnd.where("ghid", "=", lxyMefp.getGhid()).and("hdid", "=", lxyMefp.getHdid())); - } + public Object doEditMefp(@Param("mefp") String jsonStr, String hdId) { + lxyMefpService.dao().clear(Lxy_mefp.class, Cnd.where("hdid","=",hdId)); + lxyMefpService.setMefp(jsonStr, hdId); +// for (Lxy_mefp lxyMefp : mefp) { +// baseService.dao().update("lxy_mefp", Chain.make("number", lxyMefp.getNumber()), Cnd.where("ghid", "=", lxyMefp.getGhid()).and("hdid", "=", lxyMefp.getHdid())); +// } return null; } @At @POST - @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) @ViReturn + @Aop(TransAop.READ_COMMITTED) @RequiresPermissions("zgfw.lxy.hdmange") + @AdaptBy(type = UploadAdaptor.class, args = {"ioc:fileUpload"}) public Object doEdit(Lxy_hd hd, @Param(value = "files",required = false) TempFile[] files, String[] delFiles) throws IOException { lxyHdService.updateIgnoreNull(hd); @@ -163,6 +176,7 @@ public class LxyHdCon { @At @ViReturn + @Aop(TransAop.READ_COMMITTED) @RequiresPermissions("zgfw.lxy.hdmange") public Object delete(String id) { List files = baseService.dao().query("sys_file", Cnd.where("reid", "=", id)); diff --git a/src/main/java/io/v/nutz/lxy/controller/LxyXghshController.java b/src/main/java/io/v/nutz/lxy/controller/LxyXghshController.java index 2b352f8..8427ad3 100644 --- a/src/main/java/io/v/nutz/lxy/controller/LxyXghshController.java +++ b/src/main/java/io/v/nutz/lxy/controller/LxyXghshController.java @@ -235,6 +235,7 @@ public class LxyXghshController { } @At + @Ok("void") @RequiresPermissions("zgfw.lxy.xghsh") public void downLoadAll(@Param(value = "year", required = false) Integer year, @Param(value = "hdid", required = false) String hdid, diff --git a/src/main/java/io/v/nutz/lxy/service/LxyMefpService.java b/src/main/java/io/v/nutz/lxy/service/LxyMefpService.java index b99703e..09ede34 100644 --- a/src/main/java/io/v/nutz/lxy/service/LxyMefpService.java +++ b/src/main/java/io/v/nutz/lxy/service/LxyMefpService.java @@ -5,4 +5,6 @@ import io.v.nutz.lxy.model.Lxy_mefp; public interface LxyMefpService extends BaseService { + + void setMefp(String jsonStr, String hdId); } diff --git a/src/main/java/io/v/nutz/lxy/service/impl/LxyMefpServiceImpl.java b/src/main/java/io/v/nutz/lxy/service/impl/LxyMefpServiceImpl.java index e7d05ab..36aee9f 100644 --- a/src/main/java/io/v/nutz/lxy/service/impl/LxyMefpServiceImpl.java +++ b/src/main/java/io/v/nutz/lxy/service/impl/LxyMefpServiceImpl.java @@ -1,10 +1,16 @@ package io.v.nutz.lxy.service.impl; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import cn.wizzer.framework.base.service.BaseServiceImpl; import io.v.nutz.lxy.model.Lxy_mefp; import io.v.nutz.lxy.service.LxyMefpService; import org.nutz.dao.Dao; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; + +import java.util.ArrayList; +import java.util.List; /** * @Author: 1V @@ -16,4 +22,21 @@ public class LxyMefpServiceImpl extends BaseServiceImpl implements Lxy public LxyMefpServiceImpl(Dao dao) { super(dao); } + + + @Override + public void setMefp(String jsonStr, String hdId) { + if (StrUtil.isNotBlank(jsonStr)) { + List list = JSONUtil.parseArray(jsonStr).toList(NutMap.class); + List mefpList = new ArrayList<>(); + for (NutMap map : list) { + Lxy_mefp mefp = new Lxy_mefp(); + mefp.setGhid(map.getString("id")); + mefp.setHdid(hdId); + mefp.setNumber(map.getInt("limitNum")); + mefpList.add(mefp); + } + dao().insert(mefpList); + } + } } diff --git a/src/main/java/io/v/nutz/wakershome/controller/review/AddZbController.java b/src/main/java/io/v/nutz/wakershome/controller/review/AddZbController.java index 4e13442..1923b03 100644 --- a/src/main/java/io/v/nutz/wakershome/controller/review/AddZbController.java +++ b/src/main/java/io/v/nutz/wakershome/controller/review/AddZbController.java @@ -1,18 +1,26 @@ package io.v.nutz.wakershome.controller.review; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import io.v.nutz.annontation.ViReturn; +import io.v.nutz.sys.models.Sys_union; import io.v.nutz.wakershome.model.review.CommentNr; +import io.v.nutz.wakershome.model.review.CommentUnionGrading; import io.v.nutz.wakershome.model.review.CommentZb; import io.v.nutz.wakershome.service.review.CommentZbService; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.nutz.dao.Cnd; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.random.R; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; import org.nutz.trans.Trans; +import java.util.ArrayList; +import java.util.List; + /** * @ClassName addZbController * @Description TODO @@ -44,6 +52,7 @@ public class AddZbController { nr.getBzs().forEach(v->v.setZb_id(zb.getId())); commentZbService.insertWith(nr, "bzs"); } + commentZbService.setGrading(zb); }); return null; diff --git a/src/main/java/io/v/nutz/wakershome/controller/review/StatisticsZpController.java b/src/main/java/io/v/nutz/wakershome/controller/review/StatisticsZpController.java index 1e0f344..5f8a098 100644 --- a/src/main/java/io/v/nutz/wakershome/controller/review/StatisticsZpController.java +++ b/src/main/java/io/v/nutz/wakershome/controller/review/StatisticsZpController.java @@ -1,6 +1,7 @@ package io.v.nutz.wakershome.controller.review; import cn.hutool.core.convert.Convert; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.deepoove.poi.XWPFTemplate; import com.deepoove.poi.config.Configure; @@ -11,10 +12,7 @@ import io.v.nutz.base.utils.Vi; import io.v.nutz.modules.models.PageForm; import io.v.nutz.sys.models.Sys_file; import io.v.nutz.util.ShiroUtil; -import io.v.nutz.wakershome.model.review.CommentBz; -import io.v.nutz.wakershome.model.review.CommentNr; -import io.v.nutz.wakershome.model.review.CommentPeo; -import io.v.nutz.wakershome.model.review.CommentZb; +import io.v.nutz.wakershome.model.review.*; import io.v.nutz.wakershome.service.review.CommentPeoService; import io.v.nutz.wakershome.service.review.CommentStatisticsService; import io.v.nutz.wakershome.service.review.CommentZbService; @@ -24,6 +22,7 @@ import org.apache.commons.io.IOUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.ddr.poi.html.HtmlRenderPolicy; import org.nutz.boot.starter.ftp.FtpService; +import org.nutz.dao.Chain; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; @@ -91,11 +90,14 @@ public class StatisticsZpController { SELECT un.id, un.unionname unionName, + IFNULL(grading.gradingName,'未定级') AS gradingName, + grading.isGrading, count( peo.id ) num FROM sys_union un LEFT JOIN `user` u ON u.unionId = un.id LEFT JOIN comment_peo peo ON peo.userId = u.id AND peo.zbId = @zbId + LEFT JOIN comment_union_grading grading on un.id = grading.unionId AND grading.zbId = @zbId $condition """).setParam("zbId", zbId); Cnd cnd = Cnd.NEW(); @@ -413,4 +415,17 @@ public class StatisticsZpController { // Map> collect = peoList.stream().collect(Collectors.groupingBy(CommentPeo::getUnionId)); } + + + @At + @RequiresPermissions("wakeshome.review.statistics") + public Object doGrading(CommentUnionGrading grading){ + if (StrUtil.isAllBlank(grading.getZbId(),grading.getUnionId(),grading.getGradingName())) { + return Result.error("必要参数为空"); + } + commentPeoService.dao().update(CommentUnionGrading.class, + Chain.make("isGrading",true).add("gradingName",grading.getGradingName()).add("gradingTime", DateUtil.now()), + Cnd.where("zbId","=",grading.getZbId()).and("unionId","=",grading.getUnionId())); + return Result.success(); + } } diff --git a/src/main/java/io/v/nutz/wakershome/controller/review/ViewZbController.java b/src/main/java/io/v/nutz/wakershome/controller/review/ViewZbController.java index f75b3f1..ff3f83e 100644 --- a/src/main/java/io/v/nutz/wakershome/controller/review/ViewZbController.java +++ b/src/main/java/io/v/nutz/wakershome/controller/review/ViewZbController.java @@ -151,6 +151,7 @@ public class ViewZbController { }); } + commentZbService.setGrading(commentZb); /* for (CommentNr nr : commentZb.getNrs()) { nr.setZb_id(commentZb.getId()); commentNrService.insertWith(nr, "bzs"); diff --git a/src/main/java/io/v/nutz/wakershome/model/review/CommentBz.java b/src/main/java/io/v/nutz/wakershome/model/review/CommentBz.java index 179ea37..edd4ed1 100644 --- a/src/main/java/io/v/nutz/wakershome/model/review/CommentBz.java +++ b/src/main/java/io/v/nutz/wakershome/model/review/CommentBz.java @@ -2,6 +2,7 @@ package io.v.nutz.wakershome.model.review; import cn.wizzer.framework.base.model.BaseModel; import lombok.Data; +import lombok.EqualsAndHashCode; import org.nutz.dao.DB; import org.nutz.dao.entity.annotation.*; @@ -13,6 +14,7 @@ import org.nutz.dao.entity.annotation.*; */ @Data @Table +@EqualsAndHashCode(callSuper = true) public class CommentBz extends BaseModel { @Column diff --git a/src/main/java/io/v/nutz/wakershome/model/review/CommentNr.java b/src/main/java/io/v/nutz/wakershome/model/review/CommentNr.java index 65df940..49d1509 100644 --- a/src/main/java/io/v/nutz/wakershome/model/review/CommentNr.java +++ b/src/main/java/io/v/nutz/wakershome/model/review/CommentNr.java @@ -2,6 +2,7 @@ package io.v.nutz.wakershome.model.review; import cn.wizzer.framework.base.model.BaseModel; import lombok.Data; +import lombok.EqualsAndHashCode; import org.nutz.dao.DB; import org.nutz.dao.entity.annotation.*; @@ -15,6 +16,7 @@ import java.util.List; */ @Data @Table +@EqualsAndHashCode(callSuper = true) public class CommentNr extends BaseModel { diff --git a/src/main/java/io/v/nutz/wakershome/model/review/CommentUnionGrading.java b/src/main/java/io/v/nutz/wakershome/model/review/CommentUnionGrading.java new file mode 100644 index 0000000..1a4450b --- /dev/null +++ b/src/main/java/io/v/nutz/wakershome/model/review/CommentUnionGrading.java @@ -0,0 +1,66 @@ +package io.v.nutz.wakershome.model.review; + +import io.v.nutz.base.model.BaseModel; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; + +import java.util.Date; + +/** + * @version 1.0 + * @Author zzr + * @name:CommentUnionGrading + * @Date 2024/9/19 8:48 + * @注释 校工会给分工会定级 + */ +@Data +@Table +@Comment("校工会给分工会定级表") +@EqualsAndHashCode(callSuper = true) +public class CommentUnionGrading extends BaseModel { + + @Column + @Name + @Comment("id") + @ColDefine(type = ColType.VARCHAR, width = 32) + @Prev(els = {@EL("uuid()")}) + private String id; + + @Column + @Comment("考核指标id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String zbId; + + @Column + @Comment("定级的分工会id") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unionId; + + @Column + @Comment("分工会名称") + @ColDefine(type = ColType.VARCHAR, width = 50) + private String unionName; + + @Column + @Comment("分工会编码") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unionCode; + + @Column + @Comment("定级的名称") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String gradingName; + + @Column + @Default("0") + @Comment("是否定级") + @ColDefine(type = ColType.BOOLEAN) + private Boolean isGrading; + + @Column + @Comment("定级时间") + @ColDefine(type = ColType.DATETIME) + private Date gradingTime; + +} diff --git a/src/main/java/io/v/nutz/wakershome/service/impl/review/CommentZbServiceImpl.java b/src/main/java/io/v/nutz/wakershome/service/impl/review/CommentZbServiceImpl.java index 75bd5df..b4a5382 100644 --- a/src/main/java/io/v/nutz/wakershome/service/impl/review/CommentZbServiceImpl.java +++ b/src/main/java/io/v/nutz/wakershome/service/impl/review/CommentZbServiceImpl.java @@ -1,9 +1,12 @@ package io.v.nutz.wakershome.service.impl.review; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import io.v.nutz.service.impl.ViServiceImpl; +import io.v.nutz.sys.models.Sys_union; import io.v.nutz.wakershome.model.review.CommentBz; import io.v.nutz.wakershome.model.review.CommentNr; +import io.v.nutz.wakershome.model.review.CommentUnionGrading; import io.v.nutz.wakershome.model.review.CommentZb; import io.v.nutz.wakershome.service.review.CommentNrService; import io.v.nutz.wakershome.service.review.CommentZbService; @@ -11,7 +14,9 @@ import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.random.R; +import java.util.ArrayList; import java.util.List; /** @@ -44,4 +49,34 @@ public class CommentZbServiceImpl extends ViServiceImpl implements Co return zb; } + + @Override + public void setGrading(CommentZb commentZb) { + int count = dao().count(CommentUnionGrading.class, Cnd.where("zbId", "=", commentZb.getId())); + if (count > 0) { + dao().clear(CommentUnionGrading.class, Cnd.where("zbId", "=", commentZb.getId())); + } + + if (ObjectUtil.isNotNull(commentZb.getCommentTarget()) && commentZb.getCommentTarget() != 1) { + List query = new ArrayList<>(); + if (commentZb.getCommentTarget() == 2) { + query = dao().query(Sys_union.class, Cnd.NEW()); + } else if (commentZb.getCommentTarget() == 3) { + query = dao().query(Sys_union.class, Cnd.where("id", "in", commentZb.getUnionIds())); + } + List commentUnionGradings = new ArrayList<>(); + for (Sys_union union : query) { + CommentUnionGrading unionGrading = new CommentUnionGrading(); + unionGrading.setId(R.UU32()); + unionGrading.setUnionId(union.getId()); + unionGrading.setZbId(commentZb.getId()); + unionGrading.setUnionName(union.getUnionname()); + unionGrading.setUnionCode(union.getUnioncode()); + unionGrading.setIsGrading(false); + unionGrading.setGradingTime(null); + commentUnionGradings.add(unionGrading); + } + dao().insert(commentUnionGradings); + } + } } diff --git a/src/main/java/io/v/nutz/wakershome/service/review/CommentZbService.java b/src/main/java/io/v/nutz/wakershome/service/review/CommentZbService.java index 19f50c9..c88453c 100644 --- a/src/main/java/io/v/nutz/wakershome/service/review/CommentZbService.java +++ b/src/main/java/io/v/nutz/wakershome/service/review/CommentZbService.java @@ -8,4 +8,5 @@ public interface CommentZbService extends ViService { CommentZb khzb(String zbid); + void setGrading(CommentZb zb); } diff --git a/src/main/resources/docTemplate/WakesHome.docx b/src/main/resources/docTemplate/WakesHome.docx index 42c097ffc46484e5bc5333b4f396841232149dbc..537073bcb2dca100b78500b16ba99bbb60a17751 100644 GIT binary patch delta 5378 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%0A9y1Uh!YZmg(zvPMJopbeERTvyDD45*Mv7Vldgt zjzU1hc^wW9z&6bzl8Q4gcuwed?vIfN?{B=ZH==}1WiWrXPcol}m_Byi1w8HIF3X`O zNzBZEyj^sH_IH13oRFO$BA2KmucaB6Mq5OEuW-5#*gRmBybn5-@R^1Im@d_z#0z9E zVvwDC{uL>iSj>AQlN9OpN%BY3#qu?-SY(jMYC0rR|9D>yU3tj$J z00QX$>}?qd985HSV*q@{ImYabD(CZqmpH8b3lO68MvJMD7-8glAOXQ zhAbKWoZQs^+uQ&9Fe9U%lZocPZR7uR|6f>%;g5+hQU41g{uvJb6==wi;*tQ?WWc$^ Wfm|8gTp~cdjB74741D&#@B9ap9zBi# diff --git a/src/main/resources/views/mobile/wakeshome/review/commentator.html b/src/main/resources/views/mobile/wakeshome/review/commentator.html index 4043069..fecd31f 100644 --- a/src/main/resources/views/mobile/wakeshome/review/commentator.html +++ b/src/main/resources/views/mobile/wakeshome/review/commentator.html @@ -3,7 +3,7 @@ layout("/mobile/platform.html"){ #-->