Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/master'

sangwenwei 5 mēneši atpakaļ
vecāks
revīzija
b0843e3269
24 mainītis faili ar 436 papildinājumiem un 129 dzēšanām
  1. 7 0
      pom.xml
  2. 9 0
      src/main/java/com/jeeplus/modules/projectrecord/entity/AdminProjectReportedImport.java
  3. 10 0
      src/main/java/com/jeeplus/modules/projectrecord/entity/ProjectReportedImport.java
  4. 92 4
      src/main/java/com/jeeplus/modules/projectrecord/web/AdminProjectReportedImportController.java
  5. 6 0
      src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageElectronicSealDao.java
  6. 2 1
      src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageElectronicSealService.java
  7. 16 6
      src/main/java/com/jeeplus/modules/ruralprojectrecords/utils/RuralProjectReportedInfoUtil.java
  8. 8 8
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectMessageNewController.java
  9. 4 2
      src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureCallBackController.java
  10. 6 2
      src/main/java/com/jeeplus/modules/workcontractinfo/service/WorkContractInfoService.java
  11. 2 2
      src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java
  12. 55 0
      src/main/resources/mappings/modules/projectrecord/AdminProjectReportedImportDao.xml
  13. 32 0
      src/main/resources/mappings/modules/projectrecord/ProjectReportedImportDao.xml
  14. 12 0
      src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageElectronicSealDao.xml
  15. 21 11
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/newReported/newReportedForm.jsp
  16. 21 11
      src/main/webapp/webpage/modules/ruralprojectrecords/cost/newReported/reportedAudit.jsp
  17. 70 24
      src/main/webapp/webpage/modules/ruralprojectrecords/reported/import/adminProjectReportedImportList.jsp
  18. 10 0
      src/main/webapp/webpage/modules/ruralprojectrecords/reported/import/projectReportedImportList.jsp
  19. 20 11
      src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/reportedModify.jsp
  20. 5 11
      src/main/webapp/webpage/modules/workinvoice/workInvoiceAllTwoForm.jsp
  21. 2 10
      src/main/webapp/webpage/modules/workinvoice/workInvoiceExamineModify.jsp
  22. 5 11
      src/main/webapp/webpage/modules/workinvoice/workInvoiceModify.jsp
  23. 7 11
      src/main/webapp/webpage/modules/workinvoice/workInvoiceTwoForm.jsp
  24. 14 4
      src/main/webapp/webpage/modules/workinvoice/workInvoiceTwoModify.jsp

+ 7 - 0
pom.xml

@@ -1060,6 +1060,13 @@
             <artifactId>spring-messaging</artifactId>
             <version>${spring.version}</version>
         </dependency>
+
+        <dependency>
+            <groupId>com.aliyun</groupId>
+            <artifactId>dingtalk</artifactId>
+            <version>2.1.87</version>
+            <classifier>sources</classifier>
+        </dependency>
     </dependencies>
 
 </project>

+ 9 - 0
src/main/java/com/jeeplus/modules/projectrecord/entity/AdminProjectReportedImport.java

@@ -126,6 +126,8 @@ public class AdminProjectReportedImport extends ActEntity<AdminProjectReportedIm
     private String projectMaster;    //导入项目负责人
     private String projectConsultant;    //导入项目咨询员
 
+    private String reportedState;    //上报状态
+
 
     public WorkContractInfo getWorkContractInfo() {
         return workContractInfo;
@@ -857,4 +859,11 @@ public class AdminProjectReportedImport extends ActEntity<AdminProjectReportedIm
         this.projectConsultant = projectConsultant;
     }
 
+    public String getReportedState() {
+        return reportedState;
+    }
+
+    public void setReportedState(String reportedState) {
+        this.reportedState = reportedState;
+    }
 }

+ 10 - 0
src/main/java/com/jeeplus/modules/projectrecord/entity/ProjectReportedImport.java

@@ -119,6 +119,8 @@ public class ProjectReportedImport extends ActEntity<ProjectReportedImport> {
     private String otherIncome;	//其他收入
     private List<WorkClientAttachment> workAttachments = Lists.newArrayList();	//附件信息
 
+    private String reportedState;    //上报状态
+
     public WorkContractInfo getWorkContractInfo() {
         return workContractInfo;
     }
@@ -798,4 +800,12 @@ public class ProjectReportedImport extends ActEntity<ProjectReportedImport> {
     public void setWorkAttachments(List<WorkClientAttachment> workAttachments) {
         this.workAttachments = workAttachments;
     }
+
+    public String getReportedState() {
+        return reportedState;
+    }
+
+    public void setReportedState(String reportedState) {
+        this.reportedState = reportedState;
+    }
 }

+ 92 - 4
src/main/java/com/jeeplus/modules/projectrecord/web/AdminProjectReportedImportController.java

@@ -14,6 +14,7 @@ import com.jeeplus.modules.projectEngineering.service.ProjectEngineeringService;
 import com.jeeplus.modules.projectrecord.entity.AdminProjectReportedImport;
 import com.jeeplus.modules.projectrecord.enums.ProjectStatusEnum;
 import com.jeeplus.modules.projectrecord.service.AdminProjectReportedImportService;
+import com.jeeplus.modules.ruralprojectrecords.entity.ReportedConsultant;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralReportConsultant;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageNewService;
 import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectMessageService;
@@ -27,16 +28,15 @@ import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.ModelAttribute;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.servlet.mvc.support.RedirectAttributes;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.ConstraintViolationException;
+import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -89,6 +89,7 @@ public class AdminProjectReportedImportController extends BaseController {
         Page<AdminProjectReportedImport> page = projectReportedImportService.findPage(new Page<AdminProjectReportedImport>(request, response), projectReportedImport);
 
         model.addAttribute("page", page);
+        model.addAttribute("projectReportedImport", projectReportedImport);
         model.addAttribute("moneyAll", projectReportedImportService.getMoneyAll(projectReportedImport));
         return "modules/ruralprojectrecords/reported/import/adminProjectReportedImportList";
     }
@@ -238,6 +239,93 @@ public class AdminProjectReportedImportController extends BaseController {
         return "redirect:"+Global.getAdminPath()+"/project/adminProjectReportedImport/?repage";
     }
 
+    /**
+     * 保存报告并提交审核
+     * @param request
+     * @param response
+     * @param redirectAttributes
+     * @return
+     */
+    @ResponseBody
+    @RequestMapping(value = "batchReport")
+    public Map<String, Object> batchReport(HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes) throws Exception {
+        Map<String, Object> result = new HashMap<>();
+        if(!BaseController.REPORTSWITCH){
+            // 业务逻辑处理
+            result.put("message", "项目上报失败:上报管理员已关闭上报模块");
+            result.put("success",false);
+        }
+
+        String listIds = request.getParameter("listId");
+        List<String> idList = Arrays.asList(listIds.split(","));
+
+        StringBuilder successStr = new StringBuilder("项目上报成功");
+        StringBuilder errorStr = new StringBuilder("造价记录编号为:");
+
+        for (String id : idList) {
+            AdminProjectReportedImport projectReportedImport = null;
+            if (StringUtils.isNotBlank(id)){
+                projectReportedImport = projectReportedImportService.get(id);
+            }
+            if (null != projectReportedImport ){
+                if("5".equals(projectReportedImport.getReportStatus())){
+                    continue;
+                }
+
+                projectReportedImportService.disposeListImport(projectReportedImport);
+
+
+                //根据上报id查询上报咨询员的信息
+                List<RuralReportConsultant> reportedConsultants=ruralProjectMessageS.getReportedConsultantsList(projectReportedImport.getId());
+                //查询报告咨询员的信息
+                //对上报的咨询员进行处理
+                List<RuralReportConsultant> consultantList = ruralProjectMessageS.disposereportedConsultant(reportedConsultants);
+                if(consultantList.size()>0){
+                    List<ReportedConsultant> reportedConsultantList = Lists.newArrayList();
+
+                    for (RuralReportConsultant ruralReportConsultant : consultantList) {
+                        ReportedConsultant reportedConsultant = new ReportedConsultant();
+                        reportedConsultant.setWcyysr(ruralReportConsultant.getWcyysr());
+                        reportedConsultant.setZixunyuan(ruralReportConsultant.getZixunyuan());
+                        reportedConsultant.setIdCard(ruralReportConsultant.getIdCard());
+                        reportedConsultant.setWcyysrbl(ruralReportConsultant.getWcyysrbl());
+                        reportedConsultant.setWcyysr(ruralReportConsultant.getWcyysr());
+                        reportedConsultant.setRoleFlag(ruralReportConsultant.getRoleFlag());
+                        reportedConsultant.setId(ruralReportConsultant.getId());
+                        reportedConsultantList.add(reportedConsultant);
+                    }
+                    projectReportedImport.setReportedConsultantList(reportedConsultantList);
+                }
+
+                String str = "";
+                if(!projectReportedImport.getIsNewRecord()){//编辑表单保存
+                    AdminProjectReportedImport t = projectReportedImportService.getRuralProjectRecordsReported(projectReportedImport.getId());;//从数据库取出记录的值
+                    MyBeanUtils.copyBeanNotNull2Bean(projectReportedImport, t);//将编辑表单中的非NULL值覆盖数据库记录中的值
+                    str = projectReportedImportService.saveReportedInfo(t);
+                }else{//新增表单保存
+                    str = projectReportedImportService.saveReportedInfo(projectReportedImport);
+                }
+
+                if (StringUtils.isNotBlank(str)){
+                    errorStr.append(projectReportedImport.getDangABH()).append(",");
+                }
+            }
+        }
+        if(StringUtils.isNotBlank(errorStr.toString()) && errorStr.toString().length()>8){
+            errorStr.deleteCharAt(errorStr.length() - 1);
+            errorStr.append("。 数据存在错误,请单独进行上报");
+            // 业务逻辑处理
+            result.put("message", errorStr.toString());
+        }else{
+
+            // 业务逻辑处理
+            result.put("message", successStr.toString());
+            result.put("success",true);
+        }
+
+        return result;
+    }
+
 
 
     /**

+ 6 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectMessageElectronicSealDao.java

@@ -216,4 +216,10 @@ public interface RuralProjectMessageElectronicSealDao extends CrudDao<ProjectRep
      * @param title
      */
     void deleteWorkProjectNotifyByReportId(String title);
+
+    /**
+     * 根据项目id清空盖章的部分数据信息
+     * @param projectId
+     */
+    void clearReportSignatureInfoByProjectId(String projectId);
 }

+ 2 - 1
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectMessageElectronicSealService.java

@@ -2231,8 +2231,9 @@ public class RuralProjectMessageElectronicSealService extends CrudService<RuralP
         sendMessage.preUpdate();
         dao.updateReportSignature(sendMessage);
         //将通知表中对应的数据进行删除
-
         dao.deleteWorkProjectNotifyByReportId("报告号【" + projectReportData.getNumber() + "】报告签章审批登记完成");
+        //将项目表中的下载对应参数进行清空
+        dao.clearReportSignatureInfoByProjectId(projectRecords.getId());
     }
 
     /**

+ 16 - 6
src/main/java/com/jeeplus/modules/ruralprojectrecords/utils/RuralProjectReportedInfoUtil.java

@@ -10,6 +10,7 @@ import com.jeeplus.modules.ruralprojectrecords.entity.StaffInfo;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.utils.UserUtils;
 
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.*;
 
@@ -116,20 +117,20 @@ public class RuralProjectReportedInfoUtil {
         //工程用途,必填
         map.put("projectUseCd",reported.getPorjectUse());
         //咨询标的额(万元),必填
-        map.put("targetFee",reported.getZiXunBDE());
+        map.put("targetFee",roundToTwoDecimalPlaces(reported.getZiXunBDE()));
 
         if(StringUtils.isNotBlank(reported.getProjectType()) && "10".equals(reported.getProjectType())){
 
             //合同价(万元)
-            map.put("contractFee",notRequiredManage(reported.getHeTongJia()));
+            map.put("contractFee",roundToTwoDecimalPlaces(notRequiredManage(reported.getHeTongJia())));
             //送审价(万元)
-            map.put("submitAuditFee",notRequiredManage(reported.getSongShenJia()));
+            map.put("submitAuditFee",roundToTwoDecimalPlaces(notRequiredManage(reported.getSongShenJia())));
             //审定价(万元)
-            map.put("fixedAuditFee",notRequiredManage(reported.getShenDingJia()));
+            map.put("fixedAuditFee",roundToTwoDecimalPlaces(notRequiredManage(reported.getShenDingJia())));
             //审核增减额
-            map.put("checkCutFee",notRequiredManage(reported.getJingHeJianE()));
+            map.put("checkCutFee",roundToTwoDecimalPlaces(notRequiredManage(reported.getJingHeJianE())));
             //审核增减率
-            map.put("checkCutLv",notRequiredManage(reported.getJingHeJianLv()));
+            map.put("checkCutLv",roundToTwoDecimalPlaces(notRequiredManage(reported.getJingHeJianLv())));
         }
 
         if(StringUtils.isNotBlank(reported.getProjectType()) && "17".equals(reported.getProjectType())){
@@ -344,6 +345,15 @@ public class RuralProjectReportedInfoUtil {
         return result;
     }
 
+    public static String roundToTwoDecimalPlaces(String str) throws NumberFormatException {
+        // 尝试将字符串转换为数字
+        double number = Double.parseDouble(str);
+
+        // 使用 DecimalFormat 格式化保留两位小数
+        DecimalFormat df = new DecimalFormat("0.00");
+        return df.format(number);
+    }
+
     private static Map<String, String> consultantManage(List<ReportedConsultant> reportedConsultantList){
         Map<String,String> map = new LinkedHashMap<>();
         //获取填写的咨询员数量

+ 8 - 8
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectMessageNewController.java

@@ -1828,19 +1828,19 @@ public class RuralCostProjectMessageNewController extends BaseController {
             //合同价送审价审定价处理
             if(StringUtils.isNotBlank(reported.getHeTongJia())){
                 Double heTongJia = Double.valueOf(reported.getHeTongJia())/10000;
-                reported.setHeTongJia(String.format("%.2f", heTongJia));
+                reported.setHeTongJia(String.format("%.4f", heTongJia));
             }
             if(StringUtils.isNotBlank(reported.getSongShenJia())){
                 Double songShenJia = Double.valueOf(reported.getSongShenJia())/10000;
-                reported.setSongShenJia(String.format("%.2f", songShenJia));
+                reported.setSongShenJia(String.format("%.4f", songShenJia));
             }
             if(StringUtils.isNotBlank(reported.getShenDingJia())){
                 Double shenDingJia = Double.valueOf(reported.getShenDingJia())/10000;
-                reported.setShenDingJia(String.format("%.2f", shenDingJia));
+                reported.setShenDingJia(String.format("%.4f", shenDingJia));
             }
             if(StringUtils.isNotBlank(reported.getSongShenJia()) && StringUtils.isNotBlank(reported.getShenDingJia())){
                 Double jingHeJianE = Double.valueOf(reported.getShenDingJia())-Double.valueOf(reported.getSongShenJia());
-                reported.setJingHeJianE(String.format("%.2f", jingHeJianE));
+                reported.setJingHeJianE(String.format("%.4f", jingHeJianE));
                 Double jingHeJianLv = jingHeJianE/Double.valueOf(reported.getSongShenJia()) * 100;
                 if(jingHeJianLv.isNaN()){
                     jingHeJianLv = 0D;
@@ -1872,12 +1872,12 @@ public class RuralCostProjectMessageNewController extends BaseController {
         //送审价
         if(StringUtils.isNotBlank(projectReportData.getReviewFee())){
             Double songShenJia = Double.valueOf(projectReportData.getReviewFee())/10000;
-            model.addAttribute("projectReportDataReviewFee", String.format("%.2f", songShenJia));
+            model.addAttribute("projectReportDataReviewFee", String.format("%.4f", songShenJia));
         }
         //审定价
         if(StringUtils.isNotBlank(projectReportData.getApprovalFee())){
             Double shenDingJia = Double.valueOf(projectReportData.getApprovalFee())/10000;
-            model.addAttribute("projectReportDataApprovalFee", String.format("%.2f", shenDingJia));
+            model.addAttribute("projectReportDataApprovalFee", String.format("%.4f", shenDingJia));
         }
 
         /*if(StringUtils.isBlank(reported.getProjectRecordId())){
@@ -1925,12 +1925,12 @@ public class RuralCostProjectMessageNewController extends BaseController {
         //送审价
         if(StringUtils.isNotBlank(projectReportData.getReviewFee())){
             Double songShenJia = Double.valueOf(projectReportData.getReviewFee())/10000;
-            model.addAttribute("projectReportDataReviewFee", String.format("%.2f", songShenJia));
+            model.addAttribute("projectReportDataReviewFee", String.format("%.4f", songShenJia));
         }
         //审定价
         if(StringUtils.isNotBlank(projectReportData.getApprovalFee())){
             Double shenDingJia = Double.valueOf(projectReportData.getApprovalFee())/10000;
-            model.addAttribute("projectReportDataApprovalFee", String.format("%.2f", shenDingJia));
+            model.addAttribute("projectReportDataApprovalFee", String.format("%.4f", shenDingJia));
         }
 
 

+ 4 - 2
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralProjectSignatureCallBackController.java

@@ -316,7 +316,8 @@ public class RuralProjectSignatureCallBackController extends BaseController {
             fileCount = 0;
         }
         fileCount = fileCount + 1;
-        if(StringUtils.isNotBlank(signatureUrl)){
+        if(StringUtils.isNotBlank(presignCallBack.getStoragePath())){
+            signatureUrl = presignCallBack.getStoragePath().replace("oss:/","");
             String fileName = signatureUrl.substring(signatureUrl.lastIndexOf("/")+1,signatureUrl.length());
             String fileSuffix = fileName.substring(fileName.lastIndexOf(".")+1,fileName.length());
             attchment.setFileSize("");
@@ -751,7 +752,8 @@ public class RuralProjectSignatureCallBackController extends BaseController {
         long t2 = System.currentTimeMillis();
         System.out.println("报告签章回调运行耗时:" + (t2-t1) + " 毫秒");
 
-        if(StringUtils.isNotBlank(signatureUrl)) {
+        if(StringUtils.isNotBlank(presignCallBack.getStoragePath())){
+            signatureUrl = presignCallBack.getStoragePath().replace("oss:/","");
             String fileName = signatureUrl.substring(signatureUrl.lastIndexOf("/")+1,signatureUrl.length());
             //将文件存储到对应的档案信息中的“咨询报告书正文”中
             WorkClientAttachment attchment = new WorkClientAttachment();

+ 6 - 2
src/main/java/com/jeeplus/modules/workcontractinfo/service/WorkContractInfoService.java

@@ -205,7 +205,9 @@ public class WorkContractInfoService extends CrudService<WorkContractInfoDao, Wo
 			if(list1!=null && list1.size()>0){
 				for(WorkContractClient w :list1){
 					WorkClientInfo workClientInfo = workClientInfoService.getById(w.getClientId());
-					list2.add(workClientInfo);
+					if(null != workClientInfo){
+						list2.add(workClientInfo);
+					}
 				}
 			}
 			if ("5".equals(workContractInfo.getContractState())){
@@ -266,7 +268,9 @@ public class WorkContractInfoService extends CrudService<WorkContractInfoDao, Wo
 			if(list1!=null && list1.size()>0){
 				for(WorkContractClient w :list1){
 					WorkClientInfo workClientInfo = workClientInfoService.getById(w.getClientId());
-					list2.add(workClientInfo);
+					if(null != workClientInfo){
+						list2.add(workClientInfo);
+					}
 				}
 				workContractInfo.setWorkClientInfoList(list2);
 			}

+ 2 - 2
src/main/java/com/jeeplus/modules/workprojectnotify/web/WorkProjectNotifyController.java

@@ -3482,12 +3482,12 @@ public class WorkProjectNotifyController extends BaseController {
 					//送审价
 					if (StringUtils.isNotBlank(projectReportData.getReviewFee())) {
 						Double songShenJia = Double.valueOf(projectReportData.getReviewFee()) / 10000;
-						model.addAttribute("projectReportDataReviewFee", String.format("%.2f", songShenJia));
+						model.addAttribute("projectReportDataReviewFee", String.format("%.4f", songShenJia));
 					}
 					//审定价
 					if (StringUtils.isNotBlank(projectReportData.getApprovalFee())) {
 						Double shenDingJia = Double.valueOf(projectReportData.getApprovalFee()) / 10000;
-						model.addAttribute("projectReportDataApprovalFee", String.format("%.2f", shenDingJia));
+						model.addAttribute("projectReportDataApprovalFee", String.format("%.4f", shenDingJia));
 					}
 
 

+ 55 - 0
src/main/resources/mappings/modules/projectrecord/AdminProjectReportedImportDao.xml

@@ -118,6 +118,25 @@
 			<if test="DangABH != null and DangABH != ''">
 				AND a.DangABH like concat(concat('%',#{DangABH}),'%')
 			</if>
+
+			<if test="beginDate !=null">
+				AND a.BaoGaoShuQianFaDate >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.BaoGaoShuQianFaDate &lt; #{endDate}
+			</if>
+
+			<if test="reportedState !=null and reportedState !=''">
+				<choose>
+					<when test="reportedState == 0">
+						AND (a.report_status is null or a.report_status = 0)
+					</when>
+					<otherwise>
+						AND a.report_status = #{reportedState}
+					</otherwise>
+				</choose>
+			</if>
+
 			<if test="sqlMap.delFlag !=null and sqlMap.delFlag!=''">
 				${sqlMap.delFlag}
 			</if>
@@ -150,6 +169,24 @@
 			<if test="DangABH != null and DangABH != ''">
 				AND a.DangABH like concat(concat('%',#{DangABH}),'%')
 			</if>
+
+			<if test="beginDate !=null">
+				AND a.BaoGaoShuQianFaDate >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.BaoGaoShuQianFaDate &lt; #{endDate}
+			</if>
+
+			<if test="reportedState !=null and reportedState !=''">
+				<choose>
+					<when test="reportedState == 0">
+						AND (a.report_status is null or a.report_status = 0)
+					</when>
+					<otherwise>
+						AND a.report_status = #{reportedState}
+					</otherwise>
+				</choose>
+			</if>
 			<if test="sqlMap.delFlag !=null and sqlMap.delFlag!=''">
 				${sqlMap.delFlag}
 			</if>
@@ -173,6 +210,24 @@
 			<if test="DangABH != null and DangABH != ''">
 				AND a.DangABH like concat(concat('%',#{DangABH}),'%')
 			</if>
+
+			<if test="beginDate !=null">
+				AND a.BaoGaoShuQianFaDate >= #{beginDate}
+			</if>
+			<if test="endDate !=null">
+				AND a.BaoGaoShuQianFaDate &lt; #{endDate}
+			</if>
+
+			<if test="reportedState !=null and reportedState !=''">
+				<choose>
+					<when test="reportedState == 0">
+						AND (a.report_status is null or a.report_status = 0)
+					</when>
+					<otherwise>
+						AND a.report_status = #{reportedState}
+					</otherwise>
+				</choose>
+			</if>
 			<if test="sqlMap.delFlag !=null and sqlMap.delFlag!=''">
 				${sqlMap.delFlag}
 			</if>

+ 32 - 0
src/main/resources/mappings/modules/projectrecord/ProjectReportedImportDao.xml

@@ -118,6 +118,17 @@
 			<if test="DangABH != null and DangABH != ''">
 				AND a.DangABH like concat(concat('%',#{DangABH}),'%')
 			</if>
+
+			<if test="reportedState !=null and reportedState !=''">
+				<choose>
+					<when test="reportedState == 0">
+						AND a.report_status is null
+					</when>
+					<otherwise>
+						AND a.report_status = #{reportedState}
+					</otherwise>
+				</choose>
+			</if>
 			<if test="sqlMap.delFlag !=null and sqlMap.delFlag!=''">
 				${sqlMap.delFlag}
 			</if>
@@ -150,6 +161,17 @@
 			<if test="DangABH != null and DangABH != ''">
 				AND a.DangABH like concat(concat('%',#{DangABH}),'%')
 			</if>
+
+			<if test="reportedState !=null and reportedState !=''">
+				<choose>
+					<when test="reportedState == 0">
+						AND a.report_status is null
+					</when>
+					<otherwise>
+						AND a.report_status = #{reportedState}
+					</otherwise>
+				</choose>
+			</if>
 			<if test="sqlMap.delFlag !=null and sqlMap.delFlag!=''">
 				${sqlMap.delFlag}
 			</if>
@@ -173,6 +195,16 @@
 			<if test="DangABH != null and DangABH != ''">
 				AND a.DangABH like concat(concat('%',#{DangABH}),'%')
 			</if>
+			<if test="reportedState !=null and reportedState !=''">
+				<choose>
+					<when test="reportedState == 0">
+						AND a.report_status is null
+					</when>
+					<otherwise>
+						AND a.report_status = #{reportedState}
+					</otherwise>
+				</choose>
+			</if>
 			<if test="sqlMap.delFlag !=null and sqlMap.delFlag!=''">
 				${sqlMap.delFlag}
 			</if>

+ 12 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectMessageElectronicSealDao.xml

@@ -789,4 +789,16 @@
 		delete from work_project_notify where title = #{title}
 	</delete>
 
+	<update id="clearReportSignatureInfoByProjectId">
+		update rural_project_records set
+		report_signature_flag = null ,
+		report_signature_document_id = null,
+		report_signature_contract_id = null,
+		report_signature_file_name = null,
+		report_signature_upload_file_user = null,
+		report_signature_upload_date = null,
+		report_signature_url = null
+		where id = #{id}
+	</update>
+
 </mapper>

+ 21 - 11
src/main/webapp/webpage/modules/ruralprojectrecords/cost/newReported/newReportedForm.jsp

@@ -164,13 +164,13 @@
                     var ShenDingJia = parseFloat($("#ShenDingJia").val());
 
                     //如果质量复核中的送审价和目前上报中的送审价不同,则需要将送审价对应的同步按钮展示出来
-                    if (projectReportDataReviewFee.toFixed(2) !== SongShenJia.toFixed(2)) {
+                    if (projectReportDataReviewFee.toFixed(4) !== SongShenJia.toFixed(4)) {
                         parent.layer.msg("当前送审价和质量复核中的送审价不同,请先进行同步!", {icon: 5});
                         return false;
                     }
 
                     //如果质量复核中的审定价和目前上报中的审定价不同,则需要将审定价对应的同步按钮展示出来
-                    if(projectReportDataApprovalFee.toFixed(2) !== ShenDingJia.toFixed(2)){
+                    if(projectReportDataApprovalFee.toFixed(4) !== ShenDingJia.toFixed(4)){
                         parent.layer.msg("当前审定价和质量复核中的审定价不同,请先进行同步!", {icon: 5});
                         return false;
                     }
@@ -226,7 +226,7 @@
 
                     var ziXunBDE = parseFloat($("#ZiXunBDE").val());
                     var ShenDingJia = parseFloat($("#ShenDingJia").val());
-                    if(ziXunBDE.toFixed(2) !== ShenDingJia.toFixed(2)){
+                    if(ziXunBDE.toFixed(4) !== ShenDingJia.toFixed(4)){
                         parent.layer.msg("咨询标的额和审定价不同,请调整!", {icon: 5});
                         return ;
                     }
@@ -360,6 +360,7 @@
                 $('.shenDingJiaSpanDiv').show();
             }
 
+            JingHeJianValue()
 
             var radioVal ;
             validateForm = $("#inputForm").validate({
@@ -978,14 +979,14 @@
             var ShenDingJia = parseFloat($("#ShenDingJia").val());
 
             //如果质量复核中的送审价和目前上报中的送审价不同,则需要将送审价对应的同步按钮展示出来
-            if(projectReportDataReviewFee.toFixed(2) === SongShenJia.toFixed(2)){
+            if(projectReportDataReviewFee.toFixed(4) === SongShenJia.toFixed(4)){
                 $('.songShenJiaSpanDiv').hide();
             }else{
                 $('.songShenJiaSpanDiv').show();
             }
 
             //如果质量复核中的审定价和目前上报中的审定价不同,则需要将审定价对应的同步按钮展示出来
-            if(projectReportDataApprovalFee.toFixed(2) === ShenDingJia.toFixed(2)){
+            if(projectReportDataApprovalFee.toFixed(4) === ShenDingJia.toFixed(4)){
                 $('.shenDingJiaSpanDiv').hide();
             }else{
                 $('.shenDingJiaSpanDiv').show();
@@ -994,8 +995,8 @@
             if(SongShenJia !='' && ShenDingJia != ''){
                 //审核增减额
                 var JingHeJianE = parseFloat(ShenDingJia) - parseFloat(SongShenJia);
-                // 使用 toFixed(2) 保留两位小数并四舍五入
-                var JingHeJianEFormatted = JingHeJianE.toFixed(2);
+                // 使用 toFixed(4) 保留两位小数并四舍五入
+                var JingHeJianEFormatted = JingHeJianE.toFixed(4);
                 $("#JingHeJianE").val(JingHeJianEFormatted);
                 //审核增减率
                 if(parseFloat(ShenDingJia) == 0.00 || parseFloat(SongShenJia) == 0.00 ){
@@ -1167,6 +1168,15 @@
             obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
             obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //只能输入两个小数
         }
+
+        function numFor4(obj){
+            obj.value = obj.value.replace(/[^\d.]/g, ""); // 清除"数字"和"."以外的字符
+            obj.value = obj.value.replace(/^\./g, ""); // 验证第一个字符是数字,防止以"."开头
+            obj.value = obj.value.replace(/\.{2,}/g, "."); // 只保留第一个".",清除多余的
+            obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); // 确保只存在一个小数点
+            obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d{4}).*$/, '$1$2.$3'); // 只能输入小数点后 4 位
+        }
+
         function onblurNum(obj){
             if(undefined == obj.value || null == obj.value || '' == obj.value){
                 obj.value = 0;
@@ -1528,7 +1538,7 @@
                 <div class="layui-item layui-col-sm6 lw6">
                     <label class="layui-form-label double-line" title="注:指咨询项目编审后的最终造价,&#13;其中工程结算项目填审定价,标底编制填招标控制价,&#13;工程造价全过程管理填工程投资总额或审定价。"><span class="require-item">*咨询标的额(万元):</span></label>
                     <div class="layui-input-block">
-                        <form:input path="ZiXunBDE" placeholder="请输入咨询标的额" htmlEscape="false" onkeyup="num(this)" class="form-control judgment layui-input number" onchange="ZiXunBDEChange()"/>
+                        <form:input path="ZiXunBDE" placeholder="请输入咨询标的额" htmlEscape="false" onkeyup="numFor4(this)" class="form-control judgment layui-input number" onchange="ZiXunBDEChange()"/>
                     </div>
                 </div>
                 <div class="layui-item layui-col-sm6 lw6">
@@ -1538,14 +1548,14 @@
                 <div class="layui-item layui-col-sm6 lw6" id="heTongJiaDiv">
                     <label class="layui-form-label double-line">合同价(万元):</label>
                     <div class="layui-input-block with-icon">
-                        <form:input path="HeTongJia" placeholder="请输入合同价" htmlEscape="false"  onkeyup="num(this)" class="form-control layui-input number"/>
+                        <form:input path="HeTongJia" placeholder="请输入合同价" htmlEscape="false"  onkeyup="numFor4(this)" class="form-control layui-input number"/>
                     </div>
                 </div>
                 <div class="layui-item layui-col-sm6 lw6" id="songShenJiaDiv">
                     <label class="layui-form-label double-line">送审价(万元):</label>
                     <div class="layui-input-block">
                         <div class="input-group">
-                            <form:input path="SongShenJia" placeholder="请输入送审价" htmlEscape="false" onkeyup="num(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
+                            <form:input path="SongShenJia" placeholder="请输入送审价" htmlEscape="false" onkeyup="numFor4(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
                             <span class="input-group-btn songShenJiaSpanDiv">
                                 <a href="javascript:void(0)" style="height: 40px;line-height: 40px;" class="form-status" type="button" onclick="synchronizationSSJ()">同步</a>
                              </span>
@@ -1557,7 +1567,7 @@
                     <label class="layui-form-label double-line">审定价(万元):</label>
                     <div class="layui-input-block">
                         <div class="input-group">
-                            <form:input path="ShenDingJia" placeholder="请输入审定价" htmlEscape="false" onkeyup="num(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
+                            <form:input path="ShenDingJia" placeholder="请输入审定价" htmlEscape="false" onkeyup="numFor4(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
                             <span class="input-group-btn shenDingJiaSpanDiv">
                                 <a href="javascript:void(0)" style="height: 40px;line-height: 40px;" class="form-status" type="button" onclick="synchronizationSDJ()">同步</a>
                              </span>

+ 21 - 11
src/main/webapp/webpage/modules/ruralprojectrecords/cost/newReported/reportedAudit.jsp

@@ -159,13 +159,13 @@
                     var ShenDingJia = parseFloat($("#ShenDingJia").val());
 
                     //如果质量复核中的送审价和目前上报中的送审价不同,则需要将送审价对应的同步按钮展示出来
-                    if (projectReportDataReviewFee.toFixed(2) !== SongShenJia.toFixed(2)) {
+                    if (projectReportDataReviewFee.toFixed(4) !== SongShenJia.toFixed(4)) {
                         parent.layer.msg("当前送审价和质量复核中的送审价不同,请先进行同步!", {icon: 5});
                         return false;
                     }
 
                     //如果质量复核中的审定价和目前上报中的审定价不同,则需要将审定价对应的同步按钮展示出来
-                    if(projectReportDataApprovalFee.toFixed(2) !== ShenDingJia.toFixed(2)){
+                    if(projectReportDataApprovalFee.toFixed(4) !== ShenDingJia.toFixed(4)){
                         parent.layer.msg("当前审定价和质量复核中的审定价不同,请先进行同步!", {icon: 5});
                         return false;
                     }
@@ -176,7 +176,7 @@
                     var identification = '${identification}'
                     console.log(identification)
                     if(identification && "projectReported" === identification){
-                        if(ziXunBDE.toFixed(2) !== ShenDingJia.toFixed(2)){
+                        if(ziXunBDE.toFixed(4) !== ShenDingJia.toFixed(4)){
                             parent.layer.msg("咨询标的额和审定价不同,请调整!", {icon: 5});
                             return ;
                         }
@@ -319,6 +319,7 @@
             var SongShenJia = $("#SongShenJia").val();
             //审定价
             var ShenDingJia = $("#ShenDingJia").val();
+            JingHeJianValue()
 
             //如果质量复核中的送审价和目前上报中的送审价不同,则需要将送审价对应的同步按钮展示出来
             if(projectReportDataReviewFee == SongShenJia){
@@ -954,14 +955,14 @@
             var ShenDingJia = parseFloat($("#ShenDingJia").val());
 
             //如果质量复核中的送审价和目前上报中的送审价不同,则需要将送审价对应的同步按钮展示出来
-            if(projectReportDataReviewFee.toFixed(2) === SongShenJia.toFixed(2)){
+            if(projectReportDataReviewFee.toFixed(4) === SongShenJia.toFixed(4)){
                 $('.songShenJiaSpanDiv').hide();
             }else{
                 $('.songShenJiaSpanDiv').show();
             }
 
             //如果质量复核中的审定价和目前上报中的审定价不同,则需要将审定价对应的同步按钮展示出来
-            if(projectReportDataApprovalFee.toFixed(2) === ShenDingJia.toFixed(2)){
+            if(projectReportDataApprovalFee.toFixed(4) === ShenDingJia.toFixed(4)){
                 $('.shenDingJiaSpanDiv').hide();
             }else{
                 $('.shenDingJiaSpanDiv').show();
@@ -970,8 +971,8 @@
             if(SongShenJia !='' && ShenDingJia != ''){
                 //审核增减额
                 var JingHeJianE = parseFloat(ShenDingJia) - parseFloat(SongShenJia);
-                // 使用 toFixed(2) 保留两位小数并四舍五入
-                var JingHeJianEFormatted = JingHeJianE.toFixed(2);
+                // 使用 toFixed(4) 保留两位小数并四舍五入
+                var JingHeJianEFormatted = JingHeJianE.toFixed(4);
                 $("#JingHeJianE").val(JingHeJianEFormatted);
                 //审核增减率
                 if(parseFloat(ShenDingJia) == 0.00 || parseFloat(SongShenJia) == 0.00 ){
@@ -1151,6 +1152,15 @@
             obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
             obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //只能输入两个小数
         }
+
+        function numFor4(obj){
+            obj.value = obj.value.replace(/[^\d.]/g, ""); // 清除"数字"和"."以外的字符
+            obj.value = obj.value.replace(/^\./g, ""); // 验证第一个字符是数字,防止以"."开头
+            obj.value = obj.value.replace(/\.{2,}/g, "."); // 只保留第一个".",清除多余的
+            obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); // 确保只存在一个小数点
+            obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d{4}).*$/, '$1$2.$3'); // 只能输入小数点后 4 位
+        }
+
         function numGCGN(obj){
             var GCGMValue = $("#GCGMValue").val();
             if(50 != GCGMValue){
@@ -1506,7 +1516,7 @@
                 <div class="layui-item layui-col-sm6 lw6">
                     <label class="layui-form-label double-line" title="注:指咨询项目编审后的最终造价,&#13;其中工程结算项目填审定价,标底编制填招标控制价,&#13;工程造价全过程管理填工程投资总额或审定价。"><span class="require-item">*咨询标的额(万元):</span></label>
                     <div class="layui-input-block">
-                        <form:input path="ZiXunBDE" placeholder="请输入咨询表的额" htmlEscape="false" onkeyup="num(this)" class="form-control judgment layui-input number" onchange="ZiXunBDEChange()"/>
+                        <form:input path="ZiXunBDE" placeholder="请输入咨询表的额" htmlEscape="false" onkeyup="numFor4(this)" class="form-control judgment layui-input number" onchange="ZiXunBDEChange()"/>
                     </div>
                 </div>
                 <div class="layui-item layui-col-sm6 lw6">
@@ -1516,14 +1526,14 @@
                 <div class="layui-item layui-col-sm6 lw6" id="heTongJiaDiv">
                     <label class="layui-form-label double-line">合同价(万元):</label>
                     <div class="layui-input-block with-icon">
-                        <form:input path="HeTongJia" placeholder="请输入合同价" htmlEscape="false"  onkeyup="num(this)" class="form-control layui-input number"/>
+                        <form:input path="HeTongJia" placeholder="请输入合同价" htmlEscape="false"  onkeyup="numFor4(this)" class="form-control layui-input number"/>
                     </div>
                 </div>
                 <div class="layui-item layui-col-sm6 lw6" id="songShenJiaDiv">
                     <label class="layui-form-label double-line">送审价(万元):</label>
                     <div class="layui-input-block">
                         <div class="input-group">
-                            <form:input path="SongShenJia" placeholder="请输入送审价" htmlEscape="false" onkeyup="num(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
+                            <form:input path="SongShenJia" placeholder="请输入送审价" htmlEscape="false" onkeyup="numFor4(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
                             <span class="input-group-btn songShenJiaSpanDiv">
                                 <a href="javascript:void(0)" style="height: 40px;line-height: 40px;" class="form-status" type="button" onclick="synchronizationSSJ()">同步</a>
                              </span>
@@ -1535,7 +1545,7 @@
                     <label class="layui-form-label double-line">审定价(万元):</label>
                     <div class="layui-input-block">
                         <div class="input-group">
-                            <form:input path="ShenDingJia" placeholder="请输入审定价" htmlEscape="false" onkeyup="num(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
+                            <form:input path="ShenDingJia" placeholder="请输入审定价" htmlEscape="false" onkeyup="numFor4(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
                             <span class="input-group-btn shenDingJiaSpanDiv">
                                 <a href="javascript:void(0)" style="height: 40px;line-height: 40px;" class="form-status" type="button" onclick="synchronizationSDJ()">同步</a>
                              </span>

+ 70 - 24
src/main/webapp/webpage/modules/ruralprojectrecords/reported/import/adminProjectReportedImportList.jsp

@@ -271,7 +271,7 @@
 					<input id="pageNo" name="pageNo" type="hidden" value="${page.pageNo}"/>
 					<input id="pageSize" name="pageSize" type="hidden" value="${page.pageSize}"/>
 					<table:sortColumn id="orderBy" name="orderBy" value="${page.orderBy}" callback="sortOrRefresh();"/><!-- 支持排序 -->
-					<div class="commonQuery lw6">
+					<div class="commonQuery lw8">
 						<div class="layui-item query athird">
 							<label class="layui-form-label">项目名称:</label>
 							<div class="layui-input-block">
@@ -295,34 +295,42 @@
 						</div>
 						<div style="    clear:both;"></div>
 					</div>
-					<div id="moresees" style="clear:both;display:none;" class="lw6">
+					<div id="moresees" style="clear:both;display:none;" class="lw8">
 						<div class="layui-item query athird ">
 							<label class="layui-form-label double-line">造价记录编号:</label>
 							<div class="layui-input-block">
 								<form:input path="DangABH" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
 							</div>
 						</div>
-							<%--<div class="layui-item query athird ">
-                                <label class="layui-form-label">创建时间:</label>
-                                <div class="layui-input-block readOnlyFFF">
-                                    <input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
-                                           value="<fmt:formatDate value="${projectRecords.beginDate}" pattern="yyyy-MM-dd"/>"/>
-                                    </input>
-                                    <span class="group-sep">-</span>
-                                    <input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
-                                           value="<fmt:formatDate value="${projectRecords.endDate}" pattern="yyyy-MM-dd"/>"/>
-                                    </input>
-                                </div>
-                            </div>
-                            <div class="layui-item query athird ">
-                                <label class="layui-form-label">状态:</label>
-                                <div class="layui-input-block">
-                                    <form:select path="projectStatus" class=" form-control  simple-select">
-                                        <form:option value="" label=""/>
-                                        <form:options items="${fns:getDictList('audit_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
-                                    </form:select>
-                                </div>
-                            </div>--%>
+
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">上报状态:</label>
+							<div class="layui-input-block readOnlyFFF">
+								<form:select path="reportedState" class="form-control simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('reported_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</div>
+						</div>
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">咨询报告日期:</label>
+							<div class="layui-input-block readOnlyFFF">
+								<input id="beginDate" name="beginDate" placeholder="开始时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectReportedImport.beginDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+								<span class="group-sep">-</span>
+								<input id="endDate" name="endDate" placeholder="结束时间" type="text" readonly="readonly" maxlength="20" class="laydate-icondate form-control layer-date layui-input laydate-icon query-group"
+									   value="<fmt:formatDate value="${projectReportedImport.endDate}" pattern="yyyy-MM-dd"/>"/>
+								</input>
+							</div>
+						</div>
+
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">委托单位:</label>
+							<div class="layui-input-block">
+								<form:input path="WeiTuoDW" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
+							</div>
+						</div>
 						<div style="clear:both;"></div>
 					</div>
 				</form:form>
@@ -346,6 +354,11 @@
 						<shiro:hasPermission name="project:adminProjectReportedImport:export">
 							<table:exportExcel url="${ctx}/project/projectRecords/export"></table:exportExcel><!-- 导出按钮 -->
 						</shiro:hasPermission>
+
+						<shiro:hasPermission name="project:adminProjectReportedImport:import">
+							<button type="button" data-toggle="tooltip" data-placement="top" class="layui-btn layui-btn-sm layui-bg-blue" id="batchReport"> 批量上报</button>
+						</shiro:hasPermission>
+
 						<shiro:hasPermission name="project:projectRecords:lockProject">
 							<button type="button" data-toggle="tooltip" data-placement="top" class="layui-btn layui-btn-sm layui-bg-blue" id="lockProject"> 锁定</button>
 						</shiro:hasPermission>
@@ -487,7 +500,40 @@
 			layer.msg("解除锁定成功", {icon: 1})
 			return true;
 		});
-    })
+
+		$("#batchReport").bind("click", function () {
+			var checkList = layui.table.checkStatus('checkboxTable').data;
+			var listId = [];
+			$.each(checkList, function (i, data) {
+				listId.push(data.id);
+			});
+
+			if (listId.length <= 0) {
+				layer.msg("请选择需要上报的项目信息", {icon: 2});
+			} else {
+				$.ajax({
+					type: "POST",
+					url: "${ctx}/project/adminProjectReportedImport/batchReport",
+					data: {listId: listId.join(",")},
+					success: function (response) {
+						if(response.success){
+							layer.msg(response.message, {icon: 1, time: 2000}, function () {
+								location.reload(); // 刷新页面
+							});
+						}else{
+							layer.msg(response.message, {icon: 5, time: 2000}, function () {
+								location.reload(); // 刷新页面
+							});
+						}
+					},
+					error: function () {
+						layer.msg("上报失败,请稍后重试", {icon: 2});
+					}
+				});
+			}
+		});
+
+	})
 
     resizeListTable();
     $("a").on("click",addLinkVisied);

+ 10 - 0
src/main/webapp/webpage/modules/ruralprojectrecords/reported/import/projectReportedImportList.jsp

@@ -302,6 +302,16 @@
 								<form:input path="DangABH" htmlEscape="false" maxlength="255"  class=" form-control layui-input"/>
 							</div>
 						</div>
+
+						<div class="layui-item query athird ">
+							<label class="layui-form-label">上报状态:</label>
+							<div class="layui-input-block readOnlyFFF">
+								<form:select path="reportedState" class="form-control simple-select">
+									<form:option value="" label=""/>
+									<form:options items="${fns:getDictList('reported_state')}" itemLabel="label" itemValue="value" htmlEscape="false"/>
+								</form:select>
+							</div>
+						</div>
 							<%--<div class="layui-item query athird ">
                                 <label class="layui-form-label">创建时间:</label>
                                 <div class="layui-input-block readOnlyFFF">

+ 20 - 11
src/main/webapp/webpage/modules/ruralprojectrecords/ruralporjectmessage/reportedModify.jsp

@@ -161,20 +161,20 @@
                 var ShenDingJia = parseFloat($("#ShenDingJia").val());
 
                 //如果质量复核中的送审价和目前上报中的送审价不同,则需要将送审价对应的同步按钮展示出来
-                if (projectReportDataReviewFee.toFixed(2) !== SongShenJia.toFixed(2)) {
+                if (projectReportDataReviewFee.toFixed(4) !== SongShenJia.toFixed(4)) {
                     parent.layer.msg("当前送审价和质量复核中的送审价不同,请先进行同步!", {icon: 5});
                     return false;
                 }
 
                 //如果质量复核中的审定价和目前上报中的审定价不同,则需要将审定价对应的同步按钮展示出来
-                if(projectReportDataApprovalFee.toFixed(2) !== ShenDingJia.toFixed(2)){
+                if(projectReportDataApprovalFee.toFixed(4) !== ShenDingJia.toFixed(4)){
                     parent.layer.msg("当前审定价和质量复核中的审定价不同,请先进行同步!", {icon: 5});
                     return false;
                 }
 
                 var ziXunBDE = parseFloat($("#ZiXunBDE").val());
                 var ShenDingJia = parseFloat($("#ShenDingJia").val());
-                if(ziXunBDE.toFixed(2) !== ShenDingJia.toFixed(2)){
+                if(ziXunBDE.toFixed(4) !== ShenDingJia.toFixed(4)){
                     parent.layer.msg("咨询标的额和审定价不同,请调整!", {icon: 5});
                     return ;
                 }
@@ -354,6 +354,7 @@
                 $('.shenDingJiaSpanDiv').show();
             }
 
+            JingHeJianValue()
 
             var radioVal ;
             validateForm = $("#inputForm").validate({
@@ -964,14 +965,14 @@
             var ShenDingJia = parseFloat($("#ShenDingJia").val());
 
             //如果质量复核中的送审价和目前上报中的送审价不同,则需要将送审价对应的同步按钮展示出来
-            if(projectReportDataReviewFee.toFixed(2) === SongShenJia.toFixed(2)){
+            if(projectReportDataReviewFee.toFixed(4) === SongShenJia.toFixed(4)){
                 $('.songShenJiaSpanDiv').hide();
             }else{
                 $('.songShenJiaSpanDiv').show();
             }
 
             //如果质量复核中的审定价和目前上报中的审定价不同,则需要将审定价对应的同步按钮展示出来
-            if(projectReportDataApprovalFee.toFixed(2) === ShenDingJia.toFixed(2)){
+            if(projectReportDataApprovalFee.toFixed(4) === ShenDingJia.toFixed(4)){
                 $('.shenDingJiaSpanDiv').hide();
             }else{
                 $('.shenDingJiaSpanDiv').show();
@@ -980,8 +981,8 @@
             if(SongShenJia !='' && ShenDingJia != ''){
                 //审核增减额
                 var JingHeJianE = parseFloat(ShenDingJia) - parseFloat(SongShenJia);
-                // 使用 toFixed(2) 保留两位小数并四舍五入
-                var JingHeJianEFormatted = JingHeJianE.toFixed(2);
+                // 使用 toFixed(4) 保留两位小数并四舍五入
+                var JingHeJianEFormatted = JingHeJianE.toFixed(4);
                 $("#JingHeJianE").val(JingHeJianEFormatted);
                 //审核增减率
                 if(parseFloat(ShenDingJia) == 0.00 || parseFloat(SongShenJia) == 0.00 ){
@@ -1153,6 +1154,14 @@
             obj.value = obj.value.replace(".","$#$").replace(/\./g,"").replace("$#$",".");
             obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3'); //只能输入两个小数
         }
+
+        function numFor4(obj){
+            obj.value = obj.value.replace(/[^\d.]/g, ""); // 清除"数字"和"."以外的字符
+            obj.value = obj.value.replace(/^\./g, ""); // 验证第一个字符是数字,防止以"."开头
+            obj.value = obj.value.replace(/\.{2,}/g, "."); // 只保留第一个".",清除多余的
+            obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); // 确保只存在一个小数点
+            obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d{4}).*$/, '$1$2.$3'); // 只能输入小数点后 4 位
+        }
         function numGCGN(obj){
             var GCGMValue = $("#GCGMValue").val();
             if(50 != GCGMValue){
@@ -1491,7 +1500,7 @@
                 <div class="layui-item layui-col-sm6 lw6">
                     <label class="layui-form-label double-line" title="注:指咨询项目编审后的最终造价,&#13;其中工程结算项目填审定价,标底编制填招标控制价,&#13;工程造价全过程管理填工程投资总额或审定价。"><span class="require-item">*咨询标的额(万元):</span></label>
                     <div class="layui-input-block">
-                        <form:input path="ZiXunBDE" placeholder="请输入咨询表的额" htmlEscape="false" onkeyup="num(this)" class="form-control required layui-input number" onchange="ZiXunBDEChange()"/>
+                        <form:input path="ZiXunBDE" placeholder="请输入咨询表的额" htmlEscape="false" onkeyup="numFor4(this)" class="form-control required layui-input number" onchange="ZiXunBDEChange()"/>
                     </div>
                 </div>
                 <div class="layui-item layui-col-sm6 lw6">
@@ -1501,14 +1510,14 @@
                 <div class="layui-item layui-col-sm6 lw6" id="heTongJiaDiv">
                     <label class="layui-form-label double-line">合同价(万元):</label>
                     <div class="layui-input-block with-icon">
-                        <form:input path="HeTongJia" placeholder="请输入合同价" htmlEscape="false"  onkeyup="num(this)" class="form-control layui-input number"/>
+                        <form:input path="HeTongJia" placeholder="请输入合同价" htmlEscape="false"  onkeyup="numFor4(this)" class="form-control layui-input number"/>
                     </div>
                 </div>
                 <div class="layui-item layui-col-sm6 lw6" id="songShenJiaDiv">
                     <label class="layui-form-label double-line">送审价(万元):</label>
                     <div class="layui-input-block">
                         <div class="input-group">
-                            <form:input path="SongShenJia" placeholder="请输入送审价" htmlEscape="false" onkeyup="num(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
+                            <form:input path="SongShenJia" placeholder="请输入送审价" htmlEscape="false" onkeyup="numFor4(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
                             <span class="input-group-btn songShenJiaSpanDiv">
                                 <a href="javascript:void(0)" style="height: 40px;line-height: 40px;" class="form-status" type="button" onclick="synchronizationSSJ()">同步</a>
                              </span>
@@ -1520,7 +1529,7 @@
                     <label class="layui-form-label double-line">审定价(万元):</label>
                     <div class="layui-input-block">
                         <div class="input-group">
-                            <form:input path="ShenDingJia" placeholder="请输入审定价" htmlEscape="false" onkeyup="num(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
+                            <form:input path="ShenDingJia" placeholder="请输入审定价" htmlEscape="false" onkeyup="numFor4(this)" class="form-control layui-input number" onchange="JingHeJianValue()"/>
                             <span class="input-group-btn shenDingJiaSpanDiv">
                                 <a href="javascript:void(0)" style="height: 40px;line-height: 40px;" class="form-status" type="button" onclick="synchronizationSDJ()">同步</a>
                              </span>

+ 5 - 11
src/main/webapp/webpage/modules/workinvoice/workInvoiceAllTwoForm.jsp

@@ -35,7 +35,9 @@
 					parent.layer.msg("请选择发票类型",{icon:0});
 					return false;
 				}
-				if(invoiceType == 1){
+				var newDrawer=$('input:radio[name="newDrawer"]:checked').val();
+
+				if(invoiceType == 1 && newDrawer == 1){
 					var bank = $("#bank").val();
 					if(null == bank || undefined == bank || '' == bank){
 						parent.layer.msg("请选择开户银行",{icon:0});
@@ -84,14 +86,6 @@
 						parent.layer.msg("请选择开票类型",{icon:0});
 						return false;
 					}
-					if (newDrawer != 2) {
-					} else {
-						var idCard = $("#idCard").val();
-						if(!submitValidateIDCard(idCard)){
-							layer.msg("身份证号不正确,请重新输入",{icon:2});
-							return false;
-						}
-					}
 
 					var money = $("#money").val();
 					var redInvoice=$('input:radio[name="redInvoiceFlag"]:checked').val();
@@ -1209,9 +1203,9 @@
 					</div>
 
 					<div class="layui-item layui-col-sm6">
-						<label class="layui-form-label"><span class="require-item">*</span>身份证号:</label>
+						<label class="layui-form-label">身份证号:</label>
 						<div class="layui-input-block">
-							<form:input path="idCard" htmlEscape="false" onchange="validateIDCard(this.value);" class="form-control idCard layui-input required"/>
+							<form:input path="idCard" htmlEscape="false" onchange="validateIDCard(this.value);" class="form-control idCard layui-input"/>
 						</div>
 					</div>
 				</div>

+ 2 - 10
src/main/webapp/webpage/modules/workinvoice/workInvoiceExamineModify.jsp

@@ -43,14 +43,6 @@
 					parent.layer.msg("请选择开票类型",{icon:0});
 					return false;
 				}
-				if (newDrawer != 2) {
-				} else {
-					var idCard = $("#idCard").val();
-					if(!submitValidateIDCard(idCard)){
-						layer.msg("身份证号不正确,请重新输入",{icon:2});
-						return false;
-					}
-				}
 
 
 				var money = $("#money").val();
@@ -1039,9 +1031,9 @@
 					</div>
 
 					<div class="layui-item layui-col-sm6">
-						<label class="layui-form-label"><span class="require-item">*</span>身份证号:</label>
+						<label class="layui-form-label">身份证号:</label>
 						<div class="layui-input-block">
-							<form:input path="idCard" htmlEscape="false" onchange="validateIDCard(this.value);" class="form-control idCard layui-input required"/>
+							<form:input path="idCard" htmlEscape="false" onchange="validateIDCard(this.value);" class="form-control idCard layui-input"/>
 						</div>
 					</div>
 				</div>

+ 5 - 11
src/main/webapp/webpage/modules/workinvoice/workInvoiceModify.jsp

@@ -43,17 +43,11 @@
 					parent.layer.msg("请选择开票类型",{icon:0});
 					return false;
 				}
-				if (newDrawer != 2) {
-				} else {
-					var idCard = $("#idCard").val();
-					if(!submitValidateIDCard(idCard)){
-						layer.msg("身份证号不正确,请重新输入",{icon:2});
-						return false;
-					}
-				}
+
+				var newDrawer=$('input:radio[name="newDrawer"]:checked').val();
 
 				var invoiceType=$('input:radio[name="invoiceType"]:checked').val();
-				if(invoiceType == 1){
+				if(invoiceType == 1 && newDrawer == 1){
 					var bank = $("#bank").val();
 					if(null == bank || undefined == bank || '' == bank){
 						parent.layer.msg("请选择开户银行",{icon:0});
@@ -1171,9 +1165,9 @@
 					</div>
 
 					<div class="layui-item layui-col-sm6">
-						<label class="layui-form-label"><span class="require-item">*</span>身份证号:</label>
+						<label class="layui-form-label">身份证号:</label>
 						<div class="layui-input-block">
-							<form:input path="idCard" htmlEscape="false" onchange="validateIDCard(this.value);" class="form-control idCard layui-input required"/>
+							<form:input path="idCard" htmlEscape="false" onchange="validateIDCard(this.value);" class="form-control idCard layui-input"/>
 						</div>
 					</div>
 				</div>

+ 7 - 11
src/main/webapp/webpage/modules/workinvoice/workInvoiceTwoForm.jsp

@@ -35,7 +35,10 @@
 					parent.layer.msg("请选择发票类型",{icon:0});
 					return false;
 				}
-				if(invoiceType == 1){
+
+				var newDrawer=$('input:radio[name="newDrawer"]:checked').val();
+
+				if(invoiceType == 1 && newDrawer == 1){
 					var bank = $("#bank").val();
 					if(null == bank || undefined == bank || '' == bank){
 						parent.layer.msg("请选择开户银行",{icon:0});
@@ -84,14 +87,7 @@
 						parent.layer.msg("请选择开票类型",{icon:0});
 						return false;
 					}
-					if (newDrawer != 2) {
-					} else {
-						var idCard = $("#idCard").val();
-						if(!submitValidateIDCard(idCard)){
-							layer.msg("身份证号不正确,请重新输入",{icon:2});
-							return false;
-						}
-					}
+
 
 					var money = $("#money").val();
 					var redInvoice=$('input:radio[name="redInvoiceFlag"]:checked').val();
@@ -1295,9 +1291,9 @@
 					</div>
 
 					<div class="layui-item layui-col-sm6">
-						<label class="layui-form-label"><span class="require-item">*</span>身份证号:</label>
+						<label class="layui-form-label">身份证号:</label>
 						<div class="layui-input-block">
-							<form:input path="idCard" htmlEscape="false" onchange="validateIDCard(this.value);" class="form-control idCard layui-input required"/>
+							<form:input path="idCard" htmlEscape="false" onchange="validateIDCard(this.value);" class="form-control idCard layui-input"/>
 						</div>
 					</div>
 				</div>

+ 14 - 4
src/main/webapp/webpage/modules/workinvoice/workInvoiceTwoModify.jsp

@@ -50,9 +50,10 @@
 					return false;
 
 				}
+				var newDrawer=$('input:radio[name="newDrawer"]:checked').val();
 
 				var invoiceType=$('input:radio[name="invoiceType"]:checked').val();
-				if(invoiceType == 1){
+				if(invoiceType == 1 && newDrawer == 1){
 					var bank = $("#bank").val();
 					if(null == bank || undefined == bank || '' == bank){
 						parent.layer.msg("请选择开户银行",{icon:0});
@@ -1096,9 +1097,18 @@
 				<div class="layui-form-item count2">
 					<div class="layui-item layui-col-sm6">
 						<label class="layui-form-label"><span class="require-item">*</span>姓名:</label>
-						<div class="layui-input-block  with-icon">
-							<sys:treeselect id="newDrawer" name="newDrawerId" value="${workInvoice.newDrawerId}" labelName="newDrawerName" labelValue="${workInvoice.newDrawerName}"
-											cssStyle="background-color: #fff" title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control judgment layui-input" allowClear="true" notAllowSelectParent="true"/>
+						<div class="layui-input-block">
+							<form:input id="newDrawerId" path="newDrawerId" htmlEscape="false"  placeholder="请输入姓名"  class="form-control layui-input"/>
+
+								<%--<sys:treeselect id="newDrawer" name="newDrawerId" value="${workInvoice.newDrawerId}" labelName="newDrawerName" labelValue="${workInvoice.newDrawerName}"
+                                                cssStyle="background-color: #fff" title="用户" url="/sys/office/treeDataAll?type=3" cssClass="form-control judgment layui-input" allowClear="true" notAllowSelectParent="true"/>--%>
+						</div>
+					</div>
+
+					<div class="layui-item layui-col-sm6">
+						<label class="layui-form-label">身份证号:</label>
+						<div class="layui-input-block">
+							<form:input path="idCard" htmlEscape="false" onchange="validateIDCard(this.value);" class="form-control idCard layui-input"/>
 						</div>
 					</div>
 				</div>