Forráskód Böngészése

OMS发票信息部分代码上传

徐滕 1 hónapja
szülő
commit
414ce99ae2

+ 3 - 4
src/main/java/com/jeeplus/modules/sys/dao/WorkattachmentDao.java

@@ -116,8 +116,7 @@ public interface WorkattachmentDao extends CrudDao<Workattachment> {
 
     void updateSyncDifySync( Workattachment workattachment);
 
-    /**
-     * 根据id获取对象
-     */
-//    Workattachment getWorkattachmentById(String id);
+
+    //查找附件
+    List<Workattachment> getByAttachmentIdListAndFlag(Map<String, Object> map);
 }

+ 11 - 0
src/main/java/com/jeeplus/modules/sys/service/WorkattachmentService.java

@@ -340,6 +340,17 @@ public class WorkattachmentService extends CrudService<WorkattachmentDao, Workat
 		return workattachmentDao.getByAttachmentIdAndFlag(map);
 	}
 
+	//查找附件
+	public List<Workattachment> getByAttachmentIdListAndFlag(List<String> attachmentIdList, String flag) {
+		Map<String , Object> map = new HashMap<String,Object>();
+		map.put("attachmentIdList",attachmentIdList);
+		map.put("attachmentFlag",flag);
+		List<Workattachment> byAttachmentIdListAndFlag = workattachmentDao.getByAttachmentIdListAndFlag(map);
+		//附件数据处理
+		attachmentManage(byAttachmentIdListAndFlag);
+		return byAttachmentIdListAndFlag;
+	}
+
 	public List<Workattachment> getListByAttachmentIdAndFlag(String attachmentId,String flag){
 		Map<String,String> map = new HashMap<>();
 		map.put("attachmentId",attachmentId);

+ 11 - 0
src/main/java/com/jeeplus/modules/workinvoice/entity/WorkInvoice.java

@@ -155,6 +155,9 @@ public class WorkInvoice extends ActEntity<WorkInvoice> {
 	private String omsXmlUrl; //对应发票的xmlUrl
 
 
+	private String omsAttachmentUrl;//附件url
+
+
 
 	public String getIsSzCloud() {
 		return isSzCloud;
@@ -1090,4 +1093,12 @@ public class WorkInvoice extends ActEntity<WorkInvoice> {
 	public void setGoodsTaxno(String goodsTaxno) {
 		this.goodsTaxno = goodsTaxno;
 	}
+
+	public String getOmsAttachmentUrl() {
+		return omsAttachmentUrl;
+	}
+
+	public void setOmsAttachmentUrl(String omsAttachmentUrl) {
+		this.omsAttachmentUrl = omsAttachmentUrl;
+	}
 }

+ 20 - 0
src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceAllService.java

@@ -249,6 +249,26 @@ public class WorkInvoiceAllService extends CrudService<WorkInvoiceDao, WorkInvoi
 		page.setCountFlag(false);
 		workInvoice.setPage(page);
 		List<WorkInvoice> list = dao.findList(workInvoice);
+
+		List<String> idList = Lists.newArrayList();
+		//对数据进行处理
+		for (WorkInvoice invoice : list) {
+			if(StringUtils.isNotBlank(invoice.getInvoiceState()) && "5".equals(invoice.getInvoiceState())){
+				//获取所有id,并用这些id查询对应的oms文件(仅需一条即可)
+				idList.add(invoice.getId());
+			}
+		}
+		List<Workattachment> omsInvoiceFileList = workattachmentService.getByAttachmentIdListAndFlag(idList, "OMS_invoice_file");
+
+
+		for (WorkInvoice invoice : list) {
+			for (Workattachment workattachment : omsInvoiceFileList) {
+				if(invoice.getId().equals(workattachment.getAttachmentId())){
+					invoice.setOmsAttachmentUrl(workattachment.getUrl());
+					break;
+				}
+			}
+		}
 		page.setList(list);
 		return page;
 

+ 23 - 1
src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceService.java

@@ -293,7 +293,29 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 		page.setCount(count);
 		page.setCountFlag(false);
 		workInvoice.setPage(page);
-		page.setList(dao.findList(workInvoice));
+		List<WorkInvoice> list = dao.findList(workInvoice);
+
+		List<String> idList = Lists.newArrayList();
+		//对数据进行处理
+		for (WorkInvoice invoice : list) {
+			if(StringUtils.isNotBlank(invoice.getInvoiceState()) && "5".equals(invoice.getInvoiceState())){
+				//获取所有id,并用这些id查询对应的oms文件(仅需一条即可)
+				idList.add(invoice.getId());
+			}
+		}
+		List<Workattachment> omsInvoiceFileList = workattachmentService.getByAttachmentIdListAndFlag(idList, "OMS_invoice_file");
+
+
+		for (WorkInvoice invoice : list) {
+			for (Workattachment workattachment : omsInvoiceFileList) {
+				if(invoice.getId().equals(workattachment.getAttachmentId())){
+					invoice.setOmsAttachmentUrl(workattachment.getUrl());
+					break;
+				}
+			}
+		}
+
+		page.setList(list);
 		return page;
 
 	}

+ 46 - 6
src/main/resources/mappings/modules/sys/WorkattachmentDao.xml

@@ -506,11 +506,51 @@
 	</update>
 
 
-<!--		<select id="getWorkattachmentById" resultMap="Workattachment">-->
-<!--			SELECT-->
-<!--			<include refid="workattachmentColumns"/>-->
-<!--			FROM work_attachment a-->
-<!--			where a.id = #{id}-->
-<!--		</select>-->
+	<select id="getByAttachmentIdListAndFlag" resultType="Workattachment">
+		SELECT
+		-- 核心:给所有非分组字段包ANY_VALUE(),直接复用原有字段片段
+		ANY_VALUE(a.id) AS "id",
+		ANY_VALUE(a.create_by) AS "createBy.id",
+		ANY_VALUE(a.create_date) AS "createDate",
+		ANY_VALUE(a.update_by) AS "updateBy.id",
+		ANY_VALUE(a.update_date) AS "updateDate",
+		ANY_VALUE(a.remarks) AS "remarks",
+		ANY_VALUE(a.del_flag) AS "delFlag",
+		ANY_VALUE(a.url) AS "url", -- 必非空,取组内任意一条非空url
+		ANY_VALUE(a.type) AS "type",
+		a.attachment_id AS "attachmentId", -- 分组字段,直接写无需包装
+		ANY_VALUE(a.attachment_user) AS "attachmentUser",
+		ANY_VALUE(a.attachment_name) AS "attachmentName",
+		ANY_VALUE(a.company_id) AS "companyId",
+		ANY_VALUE(a.attachment_flag) AS "attachmentFlag",
+		ANY_VALUE(a.div_id_type) AS "divIdType",
+		ANY_VALUE(a.file_size) AS "fileSize",
+		ANY_VALUE(createBy.name) AS "createBy.name", -- 关联表字段也包ANY_VALUE()
+		ANY_VALUE(a.sort) AS "sort",
+		ANY_VALUE(a.description) AS "description",
+		ANY_VALUE(a.project_id) AS "projectId",
+		ANY_VALUE(a.sync_dify_sync) AS "syncDifySync"
+		FROM work_attachment a
+		<include refid="workattachmentJoins"/> <!-- 保留原有LEFT JOIN用户表 -->
+		WHERE a.del_flag = '0'
+		-- 核心:仅保留url非空记录
+		AND a.url IS NOT NULL
+		AND a.url != ''
+		<!-- 原有附件ID集合过滤 -->
+		<if test="attachmentIdList!=null and attachmentIdList.size()!=0">
+			AND a.attachment_id IN
+			<foreach collection="attachmentIdList" item="id" separator="," open="(" close=")">
+				#{id}
+			</foreach>
+		</if>
+		<!-- 原有附件标识过滤 -->
+		<if test="attachmentFlag != null and attachmentFlag !=''">
+			AND a.attachment_flag = #{attachmentFlag}
+		</if>
+		<!-- 按attachment_id分组,确保每组1条 -->
+		GROUP BY a.attachment_id
+		<!-- 可选:按业务规则排序,取组内「指定的一条」而非完全随机(推荐保留) -->
+		ORDER BY ANY_VALUE(a.sort) ASC, ANY_VALUE(a.create_date) DESC
+	</select>
 
 </mapper>

+ 16 - 0
src/main/webapp/webpage/modules/workinvoice/workInvoiceAllList.jsp

@@ -830,6 +830,21 @@
 						{
 							xml += "<a href=\"${ctx}/workinvoiceAll/workInvoiceAll/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该发票记录吗?', this.href)\"   class=\"layui-btn layui-btn-xs layui-bg-red\"> 删除</a>";
 						}
+
+						//如果发票的文件url不为空,此处可以进行下载
+						if(d && d.omsAttachmentUrl && d.omsAttachmentUrl.trim() !== '') {
+							var baseCtx = "${ctx}";
+							// 核心:用JS拼接下载URL,所有动态参数做URL编码(解决中文乱码/特殊字符)
+							var fileUrl = encodeURIComponent(d.omsAttachmentUrl.trim()); // 编码文件url
+							var invoiceNum = d.invoiceNum || ''; // 兼容invoiceNum为null的情况
+							// 编码文件名(核心解决中文乱码)
+							var fileName = encodeURIComponent('发票-' + invoiceNum + '所有发票格式.zip');
+							// 拼接完整下载地址
+							var downLoadUrl = baseCtx + '/workfullmanage/workFullManage/downLoadOMSInvoiceAttachzip?file=' + fileUrl + '&fileName=' + fileName;
+							// 修正:HTML用class属性(不是className),href拼接转义引号,补充分号
+							xml += "<a href=\"" + downLoadUrl + "\" class=\"btn btn-xs btn-primary\">下载所有格式发票</a>";
+						}
+
 						if(d.redInvoice != undefined && d.redInvoice =="1" && Math.sign(d.money) !== -1)
 						{
 							xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('红冲', '${ctx}/workinvoiceTwo/workinvoiceTwo/rcForm?id=" + d.id + "&tabId=1','95%','95%')\" class=\"layui-btn layui-btn-xs layui-bg-red\" >红冲</a>";
@@ -889,6 +904,7 @@
 					"widTotalMoney": "${workInvoice.widTotalMoney}"
 					,
 					"accountCheckingArea": "${workInvoice.accountCheckingArea}"
+					,"omsAttachmentUrl": "${workInvoice.omsAttachmentUrl}"
 					,
 					"isSzCloud": "${workInvoice.isSzCloud}"
 					,

+ 22 - 6
src/main/webapp/webpage/modules/workinvoice/workInvoiceAllTwoList.jsp

@@ -893,18 +893,33 @@
 						{
 							xml += "<a href=\"${ctx}/workinvoiceAllTwo/workinvoiceAllTwo/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该发票记录吗?', this.href)\"   class=\"layui-btn layui-btn-xs layui-bg-red\"> 删除</a>";
 						}
+						//如果发票的文件url不为空,此处可以进行下载
+						if(d && d.omsAttachmentUrl && d.omsAttachmentUrl.trim() !== '') {
+							var baseCtx = "${ctx}";
+							// 核心:用JS拼接下载URL,所有动态参数做URL编码(解决中文乱码/特殊字符)
+							var fileUrl = encodeURIComponent(d.omsAttachmentUrl.trim()); // 编码文件url
+							var invoiceNum = d.invoiceNum || ''; // 兼容invoiceNum为null的情况
+							// 编码文件名(核心解决中文乱码)
+							var fileName = encodeURIComponent('发票-' + invoiceNum + '所有发票格式.zip');
+							// 拼接完整下载地址
+							var downLoadUrl = baseCtx + '/workfullmanage/workFullManage/downLoadOMSInvoiceAttachzip?file=' + fileUrl + '&fileName=' + fileName;
+							// 修正:HTML用class属性(不是className),href拼接转义引号,补充分号
+							xml += "<a href=\"" + downLoadUrl + "\" class=\"btn btn-xs btn-primary\">下载所有格式发票</a>";
+						}
 
 						if(d.redInvoice != undefined && d.redInvoice =="1"  && Math.sign(d.money) !== -1)
 						{
 							xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('红冲', '${ctx}/workinvoiceAllTwo/workinvoiceAllTwo/rcForm?id=" + d.id + "&tabId=1','95%','95%')\" class=\"layui-btn layui-btn-xs layui-bg-red\" >红冲</a>";
 						}
-						xml+="</div>"
-                        return xml;
 
-                    }}
-            ]]
-            ,data: [
-                <c:if test="${ not empty page.list}">
+						xml += "</div>"
+						return xml;
+
+					}
+				}
+			]]
+			, data: [
+				<c:if test="${ not empty page.list}">
                 <c:forEach items="${page.list}" var="workInvoice" varStatus="index"><c:set var="Srole" scope="session" value="<%= UserUtils.getSelectRole().get(0).getEnname()%>"/>
                 <c:if test="${index.index != 0}">,</c:if>
 				{
@@ -941,6 +956,7 @@
 					"workAccountList": "${workInvoice.workAccountList}"
 					,
 					"accountCheckingArea": "${workInvoice.accountCheckingArea}"
+					,"omsAttachmentUrl": "${workInvoice.omsAttachmentUrl}"
 					,
 					"workAccountListStr":${fns:toJson(workInvoice.workAccountList)}
 					,

+ 18 - 2
src/main/webapp/webpage/modules/workinvoice/workInvoiceTwoList.jsp

@@ -892,7 +892,7 @@
 							var xml = "<span style=\"cursor:default;\" class=\"status-label status-label-" + st.label + "\" >"+ st.status + "</span>";
 						return xml;
 					}}*/
-				,{field:'op',align:'center',title:"操作",fixed: 'right',width:140,templet:function(d){
+				,{field:'op',align:'center',title:"操作",fixed: 'right',width:160,templet:function(d){
 						////对操作进行初始化
 						var xml="<div class=\"layui-btn-group\">";
 
@@ -929,7 +929,7 @@
 						{
 							xml +="<a href=\"javascript:void(0)\" onclick=\"receiptInvoice('发票收款', '${ctx}/workinvoiceTwo/workinvoiceTwo/receiptForm?id=" + d.id + "','95%','95%')\" class=\"layui-btn layui-btn-xs  layui-bg-blue\" > 收款</a>";
 						}
-						if(d.cancellationFlag != undefined && d.cancellationFlag =="1")
+						if(d.cancellationFlag != undefined && d.cancellationFlag =="1" && !d.omsAttachmentUrl)
 						{
 							xml +="<a href=\"javascript:void(0)\" onclick=\"openElectronicInvoiceDialogreplay('上传电子发票', '${ctx}/workinvoiceTwo/workinvoiceTwo/electronicInvoiceForm?id=" + d.id + "','95%','95%')\" class=\"layui-btn layui-btn-xs layui-bg-blue\" > 上传电子发票</a>";
 							//xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogreplay('作废发票', '${ctx}/workinvoiceTwo/workinvoiceTwo/cancellationForm?id=" + d.id + "&tabId=3','95%','95%')\" class=\"layui-btn layui-btn-xs layui-bg-red\" > 作废</a>";
@@ -955,6 +955,21 @@
 						{
 							xml += "<a href=\"${ctx}/workinvoiceTwo/workinvoiceTwo/delete?id=" + d.id + "\" onclick=\"return confirmx('确认要删除该发票记录吗?', this.href)\"   class=\"layui-btn layui-btn-xs layui-bg-red\"> 删除</a>";
 						}
+
+						//如果发票的文件url不为空,此处可以进行下载
+						if(d && d.omsAttachmentUrl && d.omsAttachmentUrl.trim() !== '') {
+							var baseCtx = "${ctx}";
+							// 核心:用JS拼接下载URL,所有动态参数做URL编码(解决中文乱码/特殊字符)
+							var fileUrl = encodeURIComponent(d.omsAttachmentUrl.trim()); // 编码文件url
+							var invoiceNum = d.invoiceNum || ''; // 兼容invoiceNum为null的情况
+							// 编码文件名(核心解决中文乱码)
+							var fileName = encodeURIComponent('发票-' + invoiceNum + '所有发票格式.zip');
+							// 拼接完整下载地址
+							var downLoadUrl = baseCtx + '/workfullmanage/workFullManage/downLoadOMSInvoiceAttachzip?file=' + fileUrl + '&fileName=' + fileName;
+							// 修正:HTML用class属性(不是className),href拼接转义引号,补充分号
+							xml += "<a href=\"" + downLoadUrl + "\" class=\"btn btn-xs btn-primary\">下载所有格式发票</a>";
+						}
+
 						if(d.redInvoice != undefined && d.redInvoice =="1"  && Math.sign(d.money) !== -1)
 						{
 							xml +="<a href=\"javascript:void(0)\" onclick=\"openDialogre('红冲', '${ctx}/workinvoiceTwo/workinvoiceTwo/rcForm?id=" + d.id + "&tabId=1','95%','95%')\" class=\"layui-btn layui-btn-xs layui-bg-red\" >红冲</a>";
@@ -1016,6 +1031,7 @@
 					"electronicInvoiceFlag": "${workInvoice.electronicInvoiceFlag}"
 					,
 					"accountCheckingArea": "${workInvoice.accountCheckingArea}"
+					,"omsAttachmentUrl": "${workInvoice.omsAttachmentUrl}"
 					,
 					"workAccountListStr":${fns:toJson(workInvoice.workAccountList)}
 					,