use of com.bc.pmpheep.back.po.MaterialNoticeAttachment in project pmph by BCSquad.
the class MaterialNoticeAttachmentServiceTest method testDeleteMaterialNoticeAttachmentById.
@Test
@Rollback(Const.ISROLLBACK)
public void testDeleteMaterialNoticeAttachmentById() {
MaterialNoticeAttachment materialNoticeAttachment = new MaterialNoticeAttachment();
materialNoticeAttachment.setMaterialExtraId(2L);
materialNoticeAttachment.setAttachment("--");
materialNoticeAttachment.setAttachmentName("---");
materialNoticeAttachment.setDownload(1L);
materialNoticeAttachment = materialNoticeAttachmentService.addMaterialNoticeAttachment(materialNoticeAttachment);
// 删除
Integer res = materialNoticeAttachmentService.deleteMaterialNoticeAttachmentById(materialNoticeAttachment.getId());
Assert.assertTrue("deleteMaterialNoticeAttachmentsById删除失败", res > 0);
// 删除
res = materialNoticeAttachmentService.deleteMaterialNoticeAttachmentById(r.nextLong());
Assert.assertTrue("deleteMaterialNoticeAttachmentsById删除失败", res >= 0);
}
use of com.bc.pmpheep.back.po.MaterialNoticeAttachment in project pmph by BCSquad.
the class MaterialExtraServiceImpl method updateMaterialExtraAndNoticeFile.
/**
* <pre>
* 功能描述:编辑通知详情
* 使用示范:
*
* @param materialExtraVO MaterialExtraVO
* @return Map<String, Object>集合
* @throws CheckedServiceException
* </pre>
*/
@Override
public Integer updateMaterialExtraAndNoticeFile(MaterialExtraVO materialExtraVO) throws CheckedServiceException, IOException {
// 教材ID
Long materialId = materialExtraVO.getMaterialId();
if (ObjectUtil.isNull(materialId)) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL_EXTRA, CheckedExceptionResult.NULL_PARAM, "教材ID为空");
}
String materialName = materialExtraVO.getMaterialName();
if (StringUtil.isEmpty(materialName)) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL_EXTRA, CheckedExceptionResult.NULL_PARAM, "教材名称为空");
}
String content = materialExtraVO.getContent();
if (StringUtil.isEmpty(content)) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL_EXTRA, CheckedExceptionResult.NULL_PARAM, "教材通知为空");
}
// MongoDB 内容插入
Content contentObj = contentService.add(new Content(content));
if (ObjectUtil.isNull(contentObj)) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL_EXTRA, CheckedExceptionResult.OBJECT_NOT_FOUND, "教材通知保存失败");
}
Material material = materialService.getMaterialById(materialId);
if (StringUtil.isEmpty(materialExtraVO.getContent())) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL_EXTRA, CheckedExceptionResult.NULL_PARAM, "教材通知内容为空");
}
// 内容ID
Long cmsContentId = null;
CmsContent cmsContent = cmsContentService.getCmsContentByMaterialId(materialId);
if (ObjectUtil.notNull(cmsContent)) {
cmsContentId = cmsContent.getId();
String mid = null;
if (StringUtil.notEmpty(cmsContent.getMid())) {
mid = cmsContent.getMid();
}
// 存在就更新
Integer count = cmsContentService.updateCmsContent(new CmsContent(cmsContent.getId(), contentObj.getId(), DateUtil.formatTimeStamp("yyyy-MM-dd HH:mm:ss", DateUtil.getCurrentTime())));
if (count > 0) {
// 删除之前教材通知内容
contentService.delete(mid);
}
} else {
// 保存CMSContent内容
CmsContent cmsContentObj = cmsContentService.addCmsContent(new CmsContent(0L, "0", contentObj.getId(), materialName, Const.CMS_AUTHOR_TYPE_0, false, true, material.getFounderId(), DateUtil.formatTimeStamp("yyyy-MM-dd HH:mm:ss", DateUtil.getCurrentTime()), materialId, Const.CMS_CATEGORY_ID_3, Const.TRUE, "DEFAULT"));
if (ObjectUtil.isNull(cmsContentObj.getId())) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL_EXTRA, CheckedExceptionResult.NULL_PARAM, "创建教材通知公告失败");
}
cmsContentId = cmsContentObj.getId();
}
// 先删除教材通知附件
List<CmsExtra> cmsExtras = cmsExtraService.getCmsExtraByContentId(cmsContentId);
if (CollectionUtil.isNotEmpty(cmsExtras)) {
List<Long> cmsExtraIds = new ArrayList<Long>();
for (CmsExtra cmsExtra : cmsExtras) {
cmsExtraIds.add(cmsExtra.getId());
}
cmsExtraService.deleteCmsExtraByIds(cmsExtraIds);
}
// 教材通知附件
List<MaterialNoticeAttachment> materialNoticeAttachments = null;
// 教材备注附件
List<MaterialNoteAttachment> materialNoteAttachments = null;
// 教材通知备注
MaterialExtra materialExtra = this.getMaterialExtraByMaterialId(materialId);
if (ObjectUtil.notNull(materialExtra)) {
Long materialExtraId = materialExtra.getId();
if (ObjectUtil.notNull(materialExtraId)) {
// 教材通知附件
materialNoticeAttachments = materialNoticeAttachmentService.getMaterialNoticeAttachmentsByMaterialExtraId(materialExtraId);
// 教材备注附件
materialNoteAttachments = materialNoteAttachmentService.getMaterialNoteAttachmentByMaterialExtraId(materialExtraId);
// 教材通知附件保存到CMS附件表中
for (MaterialNoticeAttachment mna : materialNoticeAttachments) {
cmsExtraService.addCmsExtra(new CmsExtra(cmsContentId, mna.getAttachment(), mna.getAttachmentName(), 0L));
}
for (MaterialNoteAttachment ma : materialNoteAttachments) {
cmsExtraService.addCmsExtra(new CmsExtra(cmsContentId, ma.getAttachment(), ma.getAttachmentName(), 0L));
}
}
}
// 教材通知附件
// String[] noticeFiles = materialExtraVO.getNoticeFiles();
// if (ArrayUtil.isNotEmpty(noticeFiles)) {
// this.saveFileToMongoDB(noticeFiles, materialExtraId, NOTICE);
// }
// 教材通知附件MongoDB对应ID
String[] noticeAttachments = materialExtraVO.getNoticeAttachments();
if (ArrayUtil.isNotEmpty(noticeAttachments)) {
// 删除MaterialNoticeAttachment 表
materialNoticeAttachmentService.deleteMaterialNoticeAttachmentByAttachments(noticeAttachments);
// 删除MongoDB对应的文件
for (int i = 0; i < noticeAttachments.length; i++) {
fileService.remove(noticeAttachments[i]);
}
}
// 教材备注附件
// String[] noteFiles = materialExtraVO.getNoteFiles();
// if (ArrayUtil.isNotEmpty(noteFiles)) {
// this.saveFileToMongoDB(noteFiles, materialExtraId, NOTE);
// }
// 教材备注附件MongoDB对应ID
String[] noteAttachments = materialExtraVO.getNoteAttachments();
if (ArrayUtil.isNotEmpty(noteAttachments)) {
// 删除MaterialNoteAttachment 表
materialNoteAttachmentService.deleteMaterialNoteAttachmentByAttachments(noteAttachments);
// 删除MongoDB对应的文件
for (int i = 0; i < noteAttachments.length; i++) {
fileService.remove(noteAttachments[i]);
}
}
return 1;
}
use of com.bc.pmpheep.back.po.MaterialNoticeAttachment in project pmph by BCSquad.
the class MaterialServiceImpl method addOrUpdateMaterial.
@Override
public Long addOrUpdateMaterial(HttpServletRequest request, MaterialVO materialVO, // MultipartFile[] noteFiles,
boolean isUpdate) throws CheckedServiceException, IOException {
if (null == request.getSession(false)) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "会话过期");
}
// 获取当前用户
String sessionId = CookiesUtil.getSessionId(request);
PmphUser pmphUser = SessionUtil.getPmphUserBySessionId(sessionId);
if (null == pmphUser) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "请求用户不存在");
}
Material material = materialVO.getMaterial();
// 如果是更新教材,判断主键
if (isUpdate && (null == material.getId())) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材更新时主键为空");
}
// 教材名称的验证
if (StringUtil.isEmpty(material.getMaterialName())) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材名称为空");
}
if (material.getMaterialName().length() > 50) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.ILLEGAL_PARAM, "教材名称过长");
}
// 教材轮次验证
if (null == material.getMaterialRound()) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材轮次为空");
}
// 显示报名截止时间
if (null == material.getDeadline()) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "显示报名截止时间为空");
}
// 如果是新建教材,显示报名截止时间必须大于当前时间
if (!isUpdate && material.getDeadline().getTime() <= new Date().getTime()) {
// throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL,
// CheckedExceptionResult.ILLEGAL_PARAM,
// "显示报名截止时间必须大于当前时间");
}
// 实际报名截止日期
if (null == material.getActualDeadline()) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "实际报名截止日期为空");
}
// 如果是新建教材,实际报名截止日期必须大于当前时间
if (!isUpdate && material.getActualDeadline().getTime() <= new Date().getTime()) {
// throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL,
// CheckedExceptionResult.ILLEGAL_PARAM,
// "实际报名截止日期必须大于当前时间");
}
// 实际报名截止日期和显示报名截止时间比较
if (material.getActualDeadline().getTime() < material.getDeadline().getTime()) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.ILLEGAL_PARAM, "实际报名截止日期不能小于显示报名截止时间");
}
// 年龄计算截止日期
if (null == material.getAgeDeadline()) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.ILLEGAL_PARAM, "年龄计算截止日期为空");
}
// 邮寄地址验证
if (StringUtil.isEmpty(material.getMailAddress())) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "邮寄地址为空");
}
if (material.getMailAddress().length() > 100) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.ILLEGAL_PARAM, "邮寄地址过长");
}
// 教材类型验证
String materialType = materialVO.getMaterialType();
if (StringUtil.isEmpty(materialType) || "[]".equals(materialType.replace(" ", "")) || "[NaN]".equals(materialType.replace(" ", ""))) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材类型为空");
}
if (null == material.getDirector()) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材主任为空");
}
// 教材通知备注内容验证
MaterialExtra materialExtra = materialVO.getMaterialExtra();
if (StringUtil.isEmpty(materialExtra.getNotice())) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材通知内容为空");
}
if (materialExtra.getNotice().length() > 2000) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.ILLEGAL_PARAM, "教材通知内容过长");
}
// }
if ("null".equals(materialExtra.getNote()) || "[]".equals(materialExtra.getNote())) {
materialExtra.setNote("");
}
if (null != materialExtra.getNote() && materialExtra.getNote().length() > 2000) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.ILLEGAL_PARAM, "教材备注内容过长");
}
Gson gson = new Gson();
// 获取主任
PmphUser director = pmphUserService.get(material.getDirector());
if (null == director) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.ILLEGAL_PARAM, "找不到对应的主任");
} else if (null == director.getDepartmentId()) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.ILLEGAL_PARAM, "主任对应的机构为空");
}
// //给主任添加角色
// String roleName="主任";//通过roleName查询roleid
// List<PmphRole> pmphRoles=pmphRoleService.getList(roleName);
// if (ObjectUtil.isNull(material.getDirector()) ||
// ObjectUtil.isNull(pmphRoles.get(0).getId())) {
// throw new CheckedServiceException(CheckedExceptionBusiness.ROLE_MANAGEMENT,
// CheckedExceptionResult.NULL_PARAM, "角色ID或主任ID为空时禁止新增");
// }
// //先查看该主任是否已有主任角色 没有则新加
// List<PmphUserRole>
// pmphUserRoles=pmphRoleService.getUserRoleList(material.getDirector(),pmphRoles.get(0).getId());
// if(ObjectUtil.isNull(pmphUserRoles)&&pmphUserRoles.size() == 0){
// pmphRoleService.addUserRole(material.getDirector(),
// pmphRoles.get(0).getId());
// }
// 教材所属部门
material.setDepartmentId(director.getDepartmentId());
// 修改人
material.setMenderId(pmphUser.getId());
// 教材类型
List<Long> materialTypeList = gson.fromJson(materialType, new TypeToken<ArrayList<Long>>() {
}.getType());
material.setMaterialType(materialTypeList.get(materialTypeList.size() - 1));
// 设置权限
material.setPlanPermission(Integer.valueOf(materialVO.getCehuaPowers(), 2));
material.setProjectPermission(Integer.valueOf(materialVO.getProjectEditorPowers(), 2));
// 保存或者更新教材
if (isUpdate) {
materialDao.updateMaterial(material);
} else {
// 创建人
material.setFounderId(pmphUser.getId());
materialDao.addMaterial(material);
}
Long materialId = material.getId();
// 扩展项转换
List<MaterialExtension> oldMaterialExtensionlist = materialExtensionService.getMaterialExtensionByMaterialId(materialId);
String newMaterialExtensionIds = ",";
String materialExtensions = materialVO.getMaterialExtensions();
if (!StringUtil.isEmpty(materialExtensions)) {
List<MaterialExtension> materialExtensionlist = gson.fromJson(materialExtensions, new TypeToken<ArrayList<MaterialExtension>>() {
}.getType());
for (MaterialExtension materialExtension : materialExtensionlist) {
if (null == materialExtension) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "扩展项对象为空");
}
if (StringUtil.isEmpty(materialExtension.getExtensionName())) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "扩展项名称为空");
}
if (materialExtension.getExtensionName().length() > 100) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "扩展项名称太长");
}
materialExtension.setMaterialId(materialId);
if (null == materialExtension.getId()) {
// 保存或者修改扩展项
materialExtensionService.addMaterialExtension(materialExtension);
} else {
materialExtensionService.updateMaterialExtension(materialExtension);
}
newMaterialExtensionIds += materialExtension.getId() + ",";
}
}
for (MaterialExtension oldMaterialExtension : oldMaterialExtensionlist) {
// 删除删除的MaterialExtension
if (!newMaterialExtensionIds.contains("," + oldMaterialExtension.getId() + ",")) {
// 不包含
// 删除扩展项
materialExtensionService.deleteMaterialExtensionById(oldMaterialExtension.getId());
// 删除扩展值
decExtensionService.deleteDecExtensionByExtensionId(oldMaterialExtension.getId());
}
}
// 联系人转换
String materialContacts = materialVO.getMaterialContacts();
// 删除已经有的联系人
materialContactService.deleteMaterialContactsByMaterialId(materialId);
if (StringUtil.isEmpty(materialContacts)) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.ILLEGAL_PARAM, "教材联系人参数有误");
}
List<MaterialContact> materialContactlist = gson.fromJson(materialContacts, new TypeToken<ArrayList<MaterialContact>>() {
}.getType());
if (null == materialContactlist || materialContactlist.size() == 0) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材联系人为空");
}
for (MaterialContact materialContact : materialContactlist) {
if (null == materialContact) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材联系人对象为空");
}
if (null == materialContact.getContactUserId()) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "联系人为空");
}
if (StringUtil.isEmpty(materialContact.getContactUserName())) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "联系人姓名为空");
}
if (materialContact.getContactUserName().length() > 20) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "联系人姓名太长");
}
if (StringUtil.isEmpty(materialContact.getContactPhone())) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "联系电话为空");
}
if (materialContact.getContactPhone().length() > 25) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "联系电话太长");
}
if (StringUtil.isEmpty(materialContact.getContactEmail())) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "联系邮箱为空");
}
if (materialContact.getContactEmail().length() > 40) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "联系邮箱太长");
}
if (null == materialContact.getSort()) {
materialContact.setSort(999);
}
materialContact.setMaterialId(materialId);
// 保存联系人
materialContactService.addMaterialContact(materialContact);
}
// 项目编辑转换
// 先删除该教材下的项目编辑
materialProjectEditorService.deleteMaterialProjectEditorByMaterialId(materialId);
String materialProjectEditors = materialVO.getMaterialProjectEditors();
if (StringUtil.isEmpty(materialProjectEditors)) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.ILLEGAL_PARAM, "教材项目编辑参数有误");
}
List<MaterialProjectEditorVO> materialProjectEditorVOlist = gson.fromJson(materialProjectEditors, new TypeToken<ArrayList<MaterialProjectEditorVO>>() {
}.getType());
for (MaterialProjectEditorVO materialProjectEditorVO : materialProjectEditorVOlist) {
if (null == materialProjectEditorVO || null == materialProjectEditorVO.getEditorId()) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "项目编辑为空");
}
MaterialProjectEditor materialProjectEditor = new MaterialProjectEditor();
materialProjectEditor.setEditorId(materialProjectEditorVO.getEditorId());
materialProjectEditor.setMaterialId(materialId);
// 保存项目编辑
materialProjectEditorService.addMaterialProjectEditor(materialProjectEditor);
// // 项目编辑绑定角色
// String rolename="项目编辑";//通过roleName查询roleid
// List<PmphRole> pmphRoleList=pmphRoleService.getList(rolename);
// if (ObjectUtil.isNull(materialId) ||
// ObjectUtil.isNull(pmphRoleList.get(0).getId())) {
// throw new CheckedServiceException(CheckedExceptionBusiness.ROLE_MANAGEMENT,
// CheckedExceptionResult.NULL_PARAM, "角色ID或项目编辑ID为空时禁止新增");
// }
// //判断该用户是否有项目编辑角色 若没有则新加
// List<PmphUserRole> pmphUserRoles2=pmphRoleService.getUserRoleList(materialId,
// pmphRoleList.get(0).getId());
// if(ObjectUtil.isNull(pmphUserRoles2) && pmphUserRoles2.size() == 0){
// roleDao.addUserRole(materialId, pmphRoleList.get(0).getId());//给项目编辑绑定角色
// }
}
// 保存教材通知备注
materialExtra.setMaterialId(materialId);
if (null == materialExtra.getId()) {
materialExtraService.addMaterialExtra(materialExtra);
} else {
materialExtraService.updateMaterialExtra(materialExtra);
}
// 保存通知附件
String materialNoticeAttachments = materialVO.getMaterialNoticeAttachments();
if (StringUtil.isEmpty(materialNoticeAttachments)) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材通知附件为空");
}
List<MaterialNoticeAttachment> materialNoticeAttachmentlist = gson.fromJson(materialNoticeAttachments, new TypeToken<ArrayList<MaterialNoticeAttachment>>() {
}.getType());
// 原来有的通知附件
List<MaterialNoticeAttachment> oldMaterialNoticeAttachmentlist = materialNoticeAttachmentService.getMaterialNoticeAttachmentsByMaterialExtraId(materialExtra.getId());
String newTempNoticeFileIds = ",";
for (MaterialNoticeAttachment materialNoticeAttachment : materialNoticeAttachmentlist) {
if (null == materialNoticeAttachment.getId()) {
String tempFileId = materialNoticeAttachment.getAttachment();
byte[] fileByte = (byte[]) request.getSession(false).getAttribute(tempFileId);
String fileName = (String) request.getSession(false).getAttribute("fileName_" + tempFileId);
materialNoticeAttachment.setAttachment(String.valueOf(new Date().getTime()));
materialNoticeAttachment.setAttachmentName(fileName);
materialNoticeAttachment.setDownload(0L);
materialNoticeAttachment.setMaterialExtraId(materialExtra.getId());
// 保存通知
materialNoticeAttachmentService.addMaterialNoticeAttachment(materialNoticeAttachment);
String noticeId;
// 保存通知文件
InputStream sbs = new ByteArrayInputStream(fileByte);
noticeId = fileService.save(sbs, fileName, FileType.MATERIAL_NOTICE_ATTACHMENT, materialNoticeAttachment.getId());
materialNoticeAttachment.setAttachment(noticeId);
// 更新通知
materialNoticeAttachmentService.updateMaterialNoticeAttachment(materialNoticeAttachment);
// 移除session的文件
// request.getSession(false).removeAttribute(tempFileId);
// request.getSession(false).removeAttribute("fileName_" + tempFileId);
} else {
newTempNoticeFileIds += materialNoticeAttachment.getId() + ",";
}
}
for (MaterialNoticeAttachment materialNoticeAttachment : oldMaterialNoticeAttachmentlist) {
if (!newTempNoticeFileIds.contains("," + materialNoticeAttachment.getId() + ",")) {
// 不包含
// 删除文件
fileService.remove(materialNoticeAttachment.getAttachment());
materialNoticeAttachmentService.deleteMaterialNoticeAttachmentById(materialNoticeAttachment.getId());
}
}
// 备注附件保存
String materialNoteAttachments = materialVO.getMaterialNoteAttachments();
if (StringUtil.isEmpty(materialNoteAttachments)) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材备注附件为空");
}
List<MaterialNoteAttachment> materialNoteAttachmentList = gson.fromJson(materialNoteAttachments, new TypeToken<ArrayList<MaterialNoteAttachment>>() {
}.getType());
// 原来的备注文件
List<MaterialNoteAttachment> oldMaterialNoteAttachmentlist = materialNoteAttachmentService.getMaterialNoteAttachmentByMaterialExtraId(materialExtra.getId());
String newTempNoteFileIds = ",";
for (MaterialNoteAttachment materialNoteAttachment : materialNoteAttachmentList) {
if (null == materialNoteAttachment.getId()) {
String tempFileId = materialNoteAttachment.getAttachment();
byte[] file = (byte[]) request.getSession(false).getAttribute(tempFileId);
String fileName = (String) request.getSession(false).getAttribute("fileName_" + tempFileId);
materialNoteAttachment.setAttachment(String.valueOf(new Date().getTime()));
materialNoteAttachment.setAttachmentName(fileName);
materialNoteAttachment.setDownload(0L);
materialNoteAttachment.setMaterialExtraId(materialExtra.getId());
// 保存备注
materialNoteAttachmentService.addMaterialNoteAttachment(materialNoteAttachment);
String noticeId;
InputStream sbs = new ByteArrayInputStream(file);
// 保存备注文件
noticeId = fileService.save(sbs, fileName, FileType.MATERIAL_NOTICE_ATTACHMENT, materialNoteAttachment.getId());
materialNoteAttachment.setAttachment(noticeId);
// 更新备注
materialNoteAttachmentService.updateMaterialNoteAttachment(materialNoteAttachment);
// 移除session的文件
// request.getSession().removeAttribute(tempFileId);
// request.getSession().removeAttribute("fileName_" + tempFileId);
} else {
newTempNoteFileIds += materialNoteAttachment.getId() + ",";
}
}
for (MaterialNoteAttachment materialNoteAttachment : oldMaterialNoteAttachmentlist) {
if (!newTempNoteFileIds.contains("," + materialNoteAttachment.getId() + ",")) {
// 不包含
// 删除文件
fileService.remove(materialNoteAttachment.getAttachment());
materialNoteAttachmentService.deleteMaterialNoteAttachmentById(materialNoteAttachment.getId());
}
}
CmsContent cmsContent = cmsContentService.getCmsContentByMaterialId(materialId);
String title = material.getMaterialName();
if (null != cmsContent && null != cmsContent.getTitle() && !title.equals(cmsContent.getTitle())) {
cmsContent.setTitle(title);
cmsContentService.updateCmsContent(cmsContent);
}
/**
* // 判断教材备注附件和教材通知附件 List<MaterialNoticeAttachment>
* materialNoticeAttachmentlist = new ArrayList<MaterialNoticeAttachment>(5);
* String materialNoticeAttachments=materialVO.getMaterialNoticeAttachments();
* if (!StringUtil.isEmpty(materialNoticeAttachments)) {
* materialNoticeAttachmentlist = gson.fromJson(materialNoticeAttachments, new
* TypeToken<ArrayList<MaterialNoticeAttachment>>() { }.getType()); } if (null
* != noticeFiles && noticeFiles.length > 0) { for (MultipartFile notice :
* noticeFiles) { if (null == notice || !(notice instanceof MultipartFile)) {
* throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL,
* CheckedExceptionResult.NULL_PARAM, "教材通知附件为空"); } if
* (notice.getName().length() > 80) { throw new
* CheckedServiceException(CheckedExceptionBusiness.MATERIAL,
* CheckedExceptionResult.ILLEGAL_PARAM, "教材通知附件文件名过长"); } } } if ((null ==
* noticeFiles && materialNoticeAttachmentlist.size() == 0) ||
* (materialNoticeAttachmentlist.size() + noticeFiles.length == 0)) {//
* 已有的数量加上新增的数量 throw new
* CheckedServiceException(CheckedExceptionBusiness.MATERIAL,
* CheckedExceptionResult.NULL_PARAM, "教材通知附件为空"); }
* List<MaterialNoteAttachment> materialNoteAttachmentList = new
* ArrayList<MaterialNoteAttachment>(5); String materialNoteAttachments =
* materialVO.getMaterialNoteAttachments(); if
* (!StringUtil.isEmpty(materialNoteAttachments)) { materialNoteAttachmentList =
* gson.fromJson(materialNoteAttachments, new
* TypeToken<ArrayList<MaterialNoteAttachment>>() { }.getType()); } if (null !=
* noteFiles && noteFiles.length > 0) { for (MultipartFile note : noteFiles) {
* if (null == note || !(note instanceof MultipartFile)) { throw new
* CheckedServiceException(CheckedExceptionBusiness.MATERIAL,
* CheckedExceptionResult.NULL_PARAM, "教材备注附件为空"); } if (note.getName().length()
* > 80) { throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL,
* CheckedExceptionResult.ILLEGAL_PARAM, "教材备注附件文件名过长"); } } } if ((null ==
* noteFiles && materialNoteAttachmentList.size() == 0) ||
* (materialNoteAttachmentList.size() + noteFiles.length == 0)) {// 已有的数量加上新增的数量
* throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL,
* CheckedExceptionResult.NULL_PARAM, "教材备注附件为空"); } // 保存教材通知附件
* List<MaterialNoticeAttachment> oldMaterialNoticeAttachmentlist =
* materialNoticeAttachmentService
* .getMaterialNoticeAttachmentsByMaterialExtraId(materialExtra.getId()); String
* newMaterialNoticeAttachmentIds = ","; for (MaterialNoticeAttachment
* materialNoticeAttachment : materialNoticeAttachmentlist) { if (null ==
* materialNoticeAttachment.getId()) { throw new
* CheckedServiceException(CheckedExceptionBusiness.MATERIAL,
* CheckedExceptionResult.NULL_PARAM, "教材通知id为空"); }
* newMaterialNoticeAttachmentIds += materialNoticeAttachment.getId() + ","; }
* if (null != noticeFiles && noticeFiles.length > 0) { for (MultipartFile
* notice : noticeFiles) { MaterialNoticeAttachment materialNoticeAttachment =
* new MaterialNoticeAttachment();
* materialNoticeAttachment.setAttachment("---------");
* materialNoticeAttachment.setAttachmentName(notice.getOriginalFilename());
* materialNoticeAttachment.setDownload(0L);
* materialNoticeAttachment.setMaterialExtraId(materialExtra.getId()); // 保存通知
* materialNoticeAttachmentService.addMaterialNoticeAttachment(materialNoticeAttachment);
* String noticeId; // 保存通知文件 noticeId = fileService.save(notice,
* FileType.MATERIAL_NOTICE_ATTACHMENT, materialNoticeAttachment.getId());
*
* materialNoticeAttachment.setAttachment(noticeId); // 更新通知
* materialNoticeAttachmentService.updateMaterialNoticeAttachment(materialNoticeAttachment);
* newMaterialNoticeAttachmentIds += materialNoticeAttachment.getId() + ","; } }
* for (MaterialNoticeAttachment materialNoticeAttachment :
* oldMaterialNoticeAttachmentlist) { if
* (!newMaterialNoticeAttachmentIds.contains("," +
* materialNoticeAttachment.getId() + ",")) {// 不包含
* fileService.remove(materialNoticeAttachment.getAttachment()); // 删除文件
* materialNoticeAttachmentService
* .deleteMaterialNoticeAttachmentById(materialNoticeAttachment.getId()); } } //
* 保存教材备注附件 List<MaterialNoteAttachment> oldMaterialNoteAttachmentlist =
* materialNoteAttachmentService
* .getMaterialNoteAttachmentByMaterialExtraId(materialExtra.getId()); String
* newMaterialNoteAttachmentIds = ","; for (MaterialNoteAttachment
* materialNoteAttachment : materialNoteAttachmentList) { if (null ==
* materialNoteAttachment.getId()) { throw new
* CheckedServiceException(CheckedExceptionBusiness.MATERIAL,
* CheckedExceptionResult.NULL_PARAM, "教材备注id为空"); }
* newMaterialNoteAttachmentIds += materialNoteAttachment.getId() + ","; } if
* (null != noteFiles && noteFiles.length > 0) { for (MultipartFile note :
* noteFiles) { MaterialNoteAttachment materialNoteAttachment = new
* MaterialNoteAttachment(); materialNoteAttachment.setAttachment("---------");
* materialNoteAttachment.setAttachmentName(note.getOriginalFilename());
* materialNoteAttachment.setDownload(0L);
* materialNoteAttachment.setMaterialExtraId(materialExtra.getId()); // 保存备注
* materialNoteAttachmentService.addMaterialNoteAttachment(materialNoteAttachment);
* String noticeId; // 保存备注文件 noticeId = fileService.save(note,
* FileType.MATERIAL_NOTICE_ATTACHMENT, materialNoteAttachment.getId());
* materialNoteAttachment.setAttachment(noticeId); // 更新备注
* materialNoteAttachmentService.updateMaterialNoteAttachment(materialNoteAttachment);
* newMaterialNoteAttachmentIds += materialNoteAttachment.getId() + ","; } } for
* (MaterialNoteAttachment materialNoteAttachment :
* oldMaterialNoteAttachmentlist) { if
* (!newMaterialNoteAttachmentIds.contains("," + materialNoteAttachment.getId()
* + ",")) {// 不包含 fileService.remove(materialNoteAttachment.getAttachment());
* // 删除文件 materialNoteAttachmentService
* .deleteMaterialNoteAttachmentById(materialNoteAttachment.getId()); } }
*/
return material.getId();
}
use of com.bc.pmpheep.back.po.MaterialNoticeAttachment in project pmph by BCSquad.
the class MaterialServiceImpl method getMaterialVO.
@Override
public MaterialVO getMaterialVO(Long id) throws CheckedServiceException {
if (null == id) {
throw new CheckedServiceException(CheckedExceptionBusiness.MATERIAL, CheckedExceptionResult.NULL_PARAM, "教材主键为空");
}
// 教材主要信息
Material material = materialDao.getMaterialById(id);
// 教材主任
PmphUser director = pmphUserService.get(material.getDirector());
// 教材类型字符串
MaterialType materialType = materialTypeService.getMaterialTypeById(material.getMaterialType());
String mtype = "[]";
if (null != materialType) {
mtype = "[" + materialType.getPath().replace("-", ",") + "," + material.getMaterialType() + "]";
// 去掉 0
mtype = mtype.replace("[0,", "[").replace("[0", "[");
}
// 教材通知备注表
MaterialExtra materialExtra = materialExtraService.getMaterialExtraByMaterialId(id);
Gson gson = new Gson();
// 联系人
List<MaterialContact> materialContactList = materialContactService.listMaterialContactByMaterialId(id);
String materialContacts = gson.toJson(materialContactList);
// 扩展项
List<MaterialExtension> materialExtensionList = materialExtensionService.getMaterialExtensionByMaterialId(id);
String materialExtensions = gson.toJson(materialExtensionList);
// 项目编辑
List<MaterialProjectEditorVO> materialProjectEditorVOList = materialProjectEditorService.listMaterialProjectEditors(id);
String materialProjectEditorVOs = gson.toJson(materialProjectEditorVOList);
// 通知附件信息
List<MaterialNoticeAttachment> materialNoticeAttachmentList = new ArrayList<MaterialNoticeAttachment>(5);
if (null != materialExtra) {
materialNoticeAttachmentList = materialNoticeAttachmentService.getMaterialNoticeAttachmentsByMaterialExtraId(materialExtra.getId());
}
String materialNoticeAttachments = gson.toJson(materialNoticeAttachmentList);
// 通知备注附件信息
List<MaterialNoteAttachment> materialNoteAttachmentList = new ArrayList<MaterialNoteAttachment>(5);
if (null != materialExtra) {
materialNoteAttachmentList = materialNoteAttachmentService.getMaterialNoteAttachmentByMaterialExtraId(materialExtra.getId());
}
String materialNoteAttachments = gson.toJson(materialNoteAttachmentList);
return new MaterialVO(material, director == null ? null : director.getRealname(), mtype, materialExtra, materialContacts, materialExtensions, materialProjectEditorVOs, materialNoticeAttachments, materialNoteAttachments, StringUtil.tentToBinary(material.getPlanPermission()), StringUtil.tentToBinary(material.getProjectPermission()));
}
use of com.bc.pmpheep.back.po.MaterialNoticeAttachment in project pmph by BCSquad.
the class MigrationStageFour method transferMaterialNoticeAttachment.
protected void transferMaterialNoticeAttachment() {
String sql = "select " + "a.new_pk, " + "b.filedir, " + "b.filename, " + "1 " + "from teach_material a " + "LEFT JOIN pub_addfileinfo b on b.tablekeyid = a.materid " + "where b.childsystemname='notice_introduction' and tablename='TEACH_MATERIAL_INTRODUCTION' ";
List<Map<String, Object>> materialNoticeAttachmentList = JdbcHelper.getJdbcTemplate().queryForList(sql);
List<Map<String, Object>> excel = new LinkedList<>();
Map<String, Object> result = new LinkedHashMap<>();
int count = 0;
// 统计正常数据的数量
int correctCount = 0;
// 判断该数据是否有相应异常状况的标识
int[] state = { 0, 0, 0, 0 };
StringBuilder reason = new StringBuilder();
StringBuilder dealWith = new StringBuilder();
// 模块名称
excptionList.add(new Object[] { "教材通知附件" });
// 模块标题
excptionList.add(new Object[] { "所属教材名称", "通知附件名称", "问题", "原因分析", "处理方式" });
int excptionListOldSize = excptionList.size();
for (Map<String, Object> map : materialNoticeAttachmentList) {
StringBuilder exception = new StringBuilder();
Long newMaterid = (Long) map.get("new_pk");
String matername = (newMaterid == null ? "" : materialService.getMaterialNameById(newMaterid));
if (ObjectUtil.isNull(newMaterid)) {
map.put(SQLParameters.EXCEL_EX_HEADER, exception.append("教材id为空。"));
excel.add(map);
excptionList.add(new Object[] { matername, (String) map.get("filename"), "找不到对应教材", "新建的教材被删除", "不导入该条信息" });
if (state[0] == 0) {
reason.append("找不到教材的唯一标识。");
dealWith.append("放弃迁移。");
state[0] = 1;
}
continue;
}
// 文件名
String fileName = (String) map.get("filename");
if (StringUtil.isEmpty(fileName)) {
map.put(SQLParameters.EXCEL_EX_HEADER, exception.append("文件名称为空。"));
excel.add(map);
fileName = "-";
excptionList.add(new Object[] { matername, fileName, "文件名称为空", "", "设置为'-'导入新库表" });
if (state[1] == 0) {
reason.append("找不到相应文件名称。");
dealWith.append("设为默认值迁入数据库。");
state[1] = 1;
}
}
Long materialExtraId = mps.get(newMaterid);
if (ObjectUtil.isNull(materialExtraId)) {
map.put(SQLParameters.EXCEL_EX_HEADER, exception.append("教材通知备注id。"));
excptionList.add(new Object[] { matername, fileName, "找不到关联的通知", "新建的教材被删除", "不导入该条信息" });
excel.add(map);
if (state[2] == 0) {
reason.append("找不到教材通知备注的唯一标识。");
dealWith.append("放弃迁移。");
state[2] = 1;
}
continue;
}
MaterialNoticeAttachment materialNoticeAttachment = new MaterialNoticeAttachment();
materialNoticeAttachment.setMaterialExtraId(materialExtraId);
// 先用一个临时的"-"占位,不然会报错;
materialNoticeAttachment.setAttachment("-");
materialNoticeAttachment.setAttachmentName(fileName);
materialNoticeAttachment.setDownload(1L);
materialNoticeAttachment = materialNoticeAttachmentService.addMaterialNoticeAttachment(materialNoticeAttachment);
if (ObjectUtil.notNull(materialNoticeAttachment.getId())) {
String mongoId = null;
try {
mongoId = fileService.migrateFile((String) map.get("filedir"), FileType.MATERIAL_NOTICE_ATTACHMENT, materialNoticeAttachment.getId());
} catch (IOException ex) {
logger.error("文件读取异常,路径<{}>,异常信息:{}", (String) map.get("filedir"), ex.getMessage());
map.put(SQLParameters.EXCEL_EX_HEADER, "文件读取异常。");
excel.add(map);
if (state[3] == 0) {
reason.append("找不到通知文件。");
dealWith.append("放弃迁移。");
state[3] = 1;
}
}
if (null != mongoId) {
materialNoticeAttachment.setAttachment(mongoId);
materialNoticeAttachmentService.updateMaterialNoticeAttachment(materialNoticeAttachment);
count++;
} else {
materialNoticeAttachmentService.deleteMaterialNoticeAttachmentById(materialNoticeAttachment.getId());
excptionList.add(new Object[] { matername, fileName, "找不到通知文件", "文件丢失", "不导入该条信息" });
}
}
if (null == map.get("exception")) {
correctCount++;
}
}
// 没有错误数据
if (excptionList.size() == excptionListOldSize) {
excptionList.remove(excptionList.size() - 1);
excptionList.remove(excptionList.size() - 1);
} else {
// 插入一个空行
excptionList.add(new String[] { "" });
}
if (excel.size() > 0) {
try {
excelHelper.exportFromMaps(excel, "教材通知附件表", "material_notice_attachment");
} catch (IOException ex) {
logger.error("异常数据导出到Excel失败", ex);
}
}
if (correctCount != materialNoticeAttachmentList.size()) {
result.put(SQLParameters.EXCEL_HEADER_TABLENAME, "material_notice_attachment");
result.put(SQLParameters.EXCEL_HEADER_DESCRIPTION, "教材通知附件表");
result.put(SQLParameters.EXCEL_HEADER_SUM_DATA, materialNoticeAttachmentList.size());
result.put(SQLParameters.EXCEL_HEADER_MIGRATED_DATA, count);
result.put(SQLParameters.EXCEL_HEADER_CORECT_DATA, correctCount);
result.put(SQLParameters.EXCEL_HEADER_TRANSFERED_DATA, count - correctCount);
result.put(SQLParameters.EXCEL_HEADER_NO_MIGRATED_DATA, materialNoticeAttachmentList.size() - count);
result.put(SQLParameters.EXCEL_HEADER_EXCEPTION_REASON, reason.toString());
result.put(SQLParameters.EXCEL_HEADER_DEAL_WITH, dealWith.toString());
SQLParameters.STATISTICS_RESULT.add(result);
}
logger.info("教材通知附件表迁移了{}条数据", count);
// 记录信息
Map<String, Object> msg = new HashMap<String, Object>();
msg.put("result", "教材通知附件 表迁移完成" + count + "/" + materialNoticeAttachmentList.size());
SQLParameters.STATISTICS.add(msg);
}
Aggregations