This commit is contained in:
2025-04-03 18:25:12 +08:00
parent a1091d846a
commit 2f9ac6bc19
11 changed files with 194 additions and 102 deletions
@@ -1,17 +1,24 @@
package io.v.nutz.zhgh.activity.controller.school;
import cn.afterturn.easypoi.entity.ImageEntity;
import cn.wizzer.framework.base.Result;
import com.deepoove.poi.XWPFTemplate;
import com.deepoove.poi.config.Configure;
import com.deepoove.poi.data.PictureRenderData;
import com.deepoove.poi.policy.HackLoopTableRenderPolicy;
import io.v.nutz.base.annontation.ViReturn;
import io.v.nutz.base.dao.CndPlus;
import io.v.nutz.base.query.PageForm;
import io.v.nutz.base.service.SimpleService;
import io.v.nutz.base.service.ViService;
import io.v.nutz.base.utils.DateUtil;
import io.v.nutz.base.utils.OfficeTemplateUtil;
import io.v.nutz.base.utils.Vi;
import io.v.nutz.sys.models.Sys_file;
import io.v.nutz.sys.models.Sys_unit;
import io.v.nutz.sys.models.Sys_user;
import io.v.nutz.sys.services.SysUserService;
import io.v.nutz.web.commons.base.Globals;
import io.v.nutz.web.commons.utils.ShiroUtil;
import io.v.nutz.zhgh.activity.models.*;
import io.v.nutz.zhgh.activity.services.ActivitySchoolApplyService;
@@ -19,7 +26,9 @@ import io.v.nutz.zhgh.activity.services.ActivitySchoolService;
import io.v.nutz.zhgh.activity.services.ActivitySchoolTeamService;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.ddr.poi.html.HtmlRenderPolicy;
import org.nutz.aop.interceptor.async.Async;
import org.nutz.boot.starter.ftp.FtpService;
import org.nutz.dao.Chain;
import org.nutz.dao.Cnd;
import org.nutz.dao.Sqls;
@@ -37,6 +46,13 @@ import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.stream.Collectors;
@@ -70,6 +86,13 @@ public class ActivityApplyController {
@Inject("ActivitySchoolEvent")
private ViService<ActivitySchoolEvent> activitySchoolEventViService;
@Inject
private OfficeTemplateUtil officeTemplateUtil;
@Inject
private FtpService ftpService;
@At("")
@Ok("beetl:platform/activity/school/ActivityApply.html")
@RequiresPermissions("activity.apply")
@@ -132,11 +155,8 @@ public class ActivityApplyController {
school.personType,
school.activityLevel,
school.applyType,
school.athleteQualification,
school.registrationMethod,
school.competitionMethod,
school.rewardMethod,
school.precautions,
school.isSign,
school.eventNotification,
au.files promiseBookFiles,
(SELECT count( 1 ) FROM activity_school_apply app WHERE app.activityId = school.id AND app.`status` = 2 ) apply_num,
(SELECT count( 1 ) FROM activity_school_apply app WHERE app.activityId = school.id AND ( app.applyUser = @userid OR app.userId = @userid )) > 0 applyed,
@@ -824,14 +844,15 @@ public class ActivityApplyController {
asa.sex,
asa.identity,
asa.`status`,
asa.applyUserSign,
us.username applyUserName
FROM
`activity_school_apply` asa
LEFT JOIN sys_user us ON asa.applyUser = us.id
WHERE asa.activityId=@activityId and asa.eventId=@eventId and asa.activityUnionId=@activityUnionId
ORDER BY asa.applyUser
""").setParam("activityId",activityId).setParam("eventId", eventId).setParam("activityUnionId", getUnionId());
return activitySchoolApplyService.listMap(sql);
""").setParam("activityId", activityId).setParam("eventId", eventId).setParam("activityUnionId", getUnionId());
return activitySchoolApplyService.listMap(sql);
}
@@ -867,5 +888,43 @@ public class ActivityApplyController {
return null;
}
@At
@Ok(("void"))
@RequiresPermissions("activity.apply")
public void doExport(String activityId, HttpServletResponse response) {
try {
ActivitySchool school = simpleService.dao().fetch(ActivitySchool.class, activityId);
List<ActivitySchoolApply> schoolApplyList = simpleService.dao().query(ActivitySchoolApply.class,
Cnd.where("activityId", "=", activityId)
.and("status", "=", 2)
.and("applyUserSign", "is not", null));
List<NutMap> signList = new ArrayList<>();
for (int i = 0; i < schoolApplyList.size(); i++) {
ActivitySchoolApply apply = schoolApplyList.get(i);
ByteArrayOutputStream signOs = new ByteArrayOutputStream();
ftpService.download(apply.getApplyUserSign(), signOs);
ByteArrayInputStream bais = new ByteArrayInputStream(signOs.toByteArray());
BufferedImage bufferImg = ImageIO.read(bais);
/*byte[] bytes = Base64.getDecoder().decode(bufferImg.toByteArray());
signList.add(NutMap.NEW().addv("sign", new PictureRenderData(70, 30, ".png", bytes)));*/
}
HackLoopTableRenderPolicy policy = new HackLoopTableRenderPolicy();
Configure config = Configure.newBuilder().bind("signList", policy).build();
HashMap<String, Object> map = new HashMap<>();
map.put("activityName", school.getName());
map.put("signList", signList);
response.addHeader("Content-Type", "application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String((school.getName() + "自愿参赛责任及风险告知书").getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx");
ServletOutputStream outputStream = response.getOutputStream();
XWPFTemplate.compile(officeTemplateUtil.getPath("activity_fxtzs"), config).render(map).writeAndClose(outputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -17,4 +17,6 @@ public class ActivityMobileSignUpParam {
private List<String> userIds;
private String applyUserSign;
}
@@ -200,4 +200,10 @@ public class ActivitySchool extends BaseModel implements Serializable {
@Comment("是否开启")
@ColDefine(type = ColType.BOOLEAN)
private Boolean isDisabled;
@Column
@Comment("是否需要签字")
@Default("0")
@ColDefine(type = ColType.BOOLEAN)
private Boolean isSign;
}
@@ -173,12 +173,18 @@ public class ActivitySchoolApply implements Serializable {
@Excel(name = "姓名", width = 20)
@ColDefine(type = ColType.VARCHAR, width = 50)
private String username;
@Column
@Comment("电话")
@Excel(name = "手机号码", width = 20)
@ColDefine(type = ColType.VARCHAR, width = 50)
private String mobile;
@Column
@Comment("报名签字")
@ColDefine(type = ColType.VARCHAR, width = 100)
private String applyUserSign;
@Excel(name = "身份证号", width = 20)
private String idCard;
@@ -163,6 +163,8 @@ public class mobileActivityListController {
school.applyEndTime,
school.applyType,
school.activityGroupId,
school.isSign,
school.precautions,
eve.allName,
eve.isInterest,
eve.projectType,
@@ -262,7 +264,7 @@ public class mobileActivityListController {
@ViReturn
@RequiresAuthentication
public Object doTeamSignUp(ActivityMobileSignUpParam param) {
mobileActivityApplyService.doTeamSignUp(param.getActivityId(), param.getUserIds(), param.getEventId(), param.getTeamId(), param.getTeamName());
mobileActivityApplyService.doTeamSignUp(param.getActivityId(), param.getUserIds(), param.getEventId(), param.getTeamId(), param.getTeamName(),param.getApplyUserSign());
return null;
}
@@ -7,5 +7,5 @@ import java.util.List;
public interface MobileActivityApplyService extends BaseService<ActivitySchoolApply> {
void doDeleteApply(String activityId, String eventId);
void doTeamSignUp(String activityId, List<String> userIds, String eventId, String teamId, String teamName);
void doTeamSignUp(String activityId, List<String> userIds, String eventId, String teamId, String teamName,String applyUserSign);
}
@@ -39,16 +39,16 @@ public class MobileActivityApplyServiceImpl extends BaseServiceImpl<ActivityScho
}
@Override
public void doTeamSignUp(String activityId, List<String> userIds, String eventId, String teamId, String teamName) {
public void doTeamSignUp(String activityId, List<String> userIds, String eventId, String teamId, String teamName, String applyUserSign) {
List<ActivitySchoolApply> schoolApplyArrayList = new ArrayList<>();
userIds.forEach(i -> {
ActivitySchoolApply schoolApply = getApply(activityId, eventId, i, teamId, teamName);
ActivitySchoolApply schoolApply = getApply(activityId, eventId, i, teamId, teamName, applyUserSign);
schoolApplyArrayList.add(schoolApply);
});
insert(schoolApplyArrayList);
}
public ActivitySchoolApply getApply(String activityId, String eventId, String userId, String teamId, String teamName) {
public ActivitySchoolApply getApply(String activityId, String eventId, String userId, String teamId, String teamName, String applyUserSign) {
ActivitySchool activitySchool = dao().fetch(ActivitySchool.class, activityId);
User user = dao().fetch(User.class, Cnd.where("id", "=", userId));
ActivityBasicUnit basicUnit = dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", user.getUnitid()));
@@ -82,6 +82,7 @@ public class MobileActivityApplyServiceImpl extends BaseServiceImpl<ActivityScho
schoolApply.setUsername(user.getUsername());
schoolApply.setBirthday(user.getBirthday());
schoolApply.setApplyUnitId(basicUnit.getId());
schoolApply.setApplyUserSign(userId.equals(ShiroUtil.getUserId()) ? applyUserSign : null);
return schoolApply;
}
}