Просмотр исходного кода

项目作废添加是否被调用判断

user5 3 лет назад
Родитель
Сommit
c0df857f6f

+ 20 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/web/RuralCostProjectRecordsController.java

@@ -41,8 +41,10 @@ import com.jeeplus.modules.workclientinfo.entity.WorkClientLinkman;
 import com.jeeplus.modules.workclientinfo.service.WorkClientInfoService;
 import com.jeeplus.modules.workcontractinfo.entity.WorkContractInfo;
 import com.jeeplus.modules.workcontractinfo.service.WorkContractInfoService;
+import com.jeeplus.modules.workinvoice.service.WorkInvoiceService;
 import com.jeeplus.modules.workprojectnotify.entity.WorkProjectNotify;
 import com.jeeplus.modules.workprojectnotify.service.WorkProjectNotifyService;
+import com.jeeplus.modules.workreimbursement.service.WorkReimbursementService;
 import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Task;
 import org.apache.shiro.authz.annotation.Logical;
@@ -92,6 +94,11 @@ public class RuralCostProjectRecordsController extends BaseController {
 	@Autowired
 	private ProjectEngineeringService engineeringService;
 
+	@Autowired
+	private WorkInvoiceService workInvoiceService;
+	@Autowired
+	private WorkReimbursementService workReimbursementService;
+
 	private static String template_path = Global.getProjectTemplatePath()+"咨询工作方案.xlsx";
 	private static String template_name = "咨询工作方案.xlsx";
 
@@ -455,6 +462,19 @@ public class RuralCostProjectRecordsController extends BaseController {
 	@RequiresPermissions("ruralProject:ruralCostProjectRecords:del")
 	@RequestMapping(value = "delete")
 	public String delete(RuralProjectRecords projectRecords, RedirectAttributes redirectAttributes) {
+		//判断该项目是否在发票或者报销中被引用,如果被引用则不允许作废
+		//查询报告中调用的次数(若被调用的发票也被作废 则可进行作废)
+		Integer cancellationRelationCount = workInvoiceService.getProjectRelationListByProjectId(projectRecords.getId());
+		//查询报销中调用的次数(若被调用的报销被作废,则可进行作废)
+		Integer cancellationReimbursementCount = workReimbursementService.getWorkAccountByProjectId(projectRecords.getId());
+		if(cancellationRelationCount>0 || cancellationReimbursementCount>0){
+			addMessage(redirectAttributes, "项目在开票或报销中已被使用,无法作废");
+			if("1".equals(projectRecords.getProjectType())){
+				return "redirect:" + Global.getAdminPath() + "/ruralProject/ruralProjectRecords/?repage";
+			}
+			return "redirect:"+Global.getAdminPath()+"/ruralProject/ruralCostProjectRecords/?repage";
+		}
+
 		projectRecordsService.delete(projectRecords);
 		addMessage(redirectAttributes, "作废项目成功");
 		if (StringUtils.isNotBlank(projectRecords.getHome()) && "home".equals(projectRecords.getHome())){

+ 7 - 0
src/main/java/com/jeeplus/modules/workinvoice/dao/WorkInvoiceDao.java

@@ -88,4 +88,11 @@ public interface WorkInvoiceDao extends CrudDao<WorkInvoice> {
 	List<WorkInvoice> findMapList(WorkInvoice workInvoice);
 	Integer queryMapCount(WorkInvoice workInvoice);
 
+
+	/**
+	 * 根据项目id查询该项目所有发票记录信息以及发票状态
+	 * @param projectId
+	 * @return
+	 */
+	Integer getProjectRelationListByProjectId(String projectId);
 }

+ 9 - 0
src/main/java/com/jeeplus/modules/workinvoice/entity/WorkInvoiceProjectRelation.java

@@ -18,6 +18,7 @@ public class WorkInvoiceProjectRelation extends DataEntity<WorkInvoice> {
     private Integer isProject;  //是否是项目开票
     private String details;     //非项目-开票详情
     private String contractId;     //非项目-合同id
+    private String invoiceState;     //开票状态
 
     public String getInvoiceId() {
         return invoiceId;
@@ -98,4 +99,12 @@ public class WorkInvoiceProjectRelation extends DataEntity<WorkInvoice> {
     public void setContractId(String contractId) {
         this.contractId = contractId;
     }
+
+    public String getInvoiceState() {
+        return invoiceState;
+    }
+
+    public void setInvoiceState(String invoiceState) {
+        this.invoiceState = invoiceState;
+    }
 }

+ 12 - 0
src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceService.java

@@ -2253,4 +2253,16 @@ public class WorkInvoiceService extends CrudService<WorkInvoiceDao, WorkInvoice>
 
 	}
 
+	/**
+	 * 根据项目id查询该项目所有发票记录信息以及发票状态
+	 * @param projectId
+	 * @return
+	 */
+	public Integer getProjectRelationListByProjectId(String projectId){
+		//根据项目id查询关联开票信息作废数量
+		Integer cancellationCount = dao.getProjectRelationListByProjectId(projectId);
+
+		return cancellationCount;
+	}
+
 }

+ 7 - 0
src/main/java/com/jeeplus/modules/workreimbursement/dao/WorkAccountDao.java

@@ -27,4 +27,11 @@ public interface WorkAccountDao extends CrudDao<WorkAccount> {
      * @return
      */
     String getParentIdsById(String id);
+
+    /**
+     * 根据项目id查询报销关联的报销数量(未作废数量)
+     * @param projectId
+     * @return
+     */
+    Integer getWorkAccountByProjectId(String projectId);
 }

+ 10 - 0
src/main/java/com/jeeplus/modules/workreimbursement/service/WorkReimbursementService.java

@@ -1516,4 +1516,14 @@ public class WorkReimbursementService extends CrudService<WorkReimbursementDao,
 
     /*-----------------======  新版本=====--------------------------*/
 
+    /**
+     * 根据项目id查询该项目所有发票记录信息以及发票状态
+     * @param projectId
+     * @return
+     */
+    public Integer getWorkAccountByProjectId(String projectId){
+        //根据项目id查询关联报销信息未作废数量
+        Integer cancellationCount = workAccountDao.getWorkAccountByProjectId(projectId);
+        return cancellationCount;
+    }
 }

+ 9 - 0
src/main/resources/mappings/modules/workinvoice/WorkInvoiceDao.xml

@@ -1431,4 +1431,13 @@
 			</otherwise>
 		</choose>
 	</select>
+
+	<select id="getProjectRelationListByProjectId" resultType="java.lang.Integer">
+		select
+		  count(wi.invoice_state) as 'count'
+		from work_invoice_project_relation a
+		left join work_invoice wi on wi.id = a.invoice_id
+		where a.project_id = #{projectId}
+		and wi.invoice_state != 7
+	</select>
 </mapper>

+ 7 - 0
src/main/resources/mappings/modules/workreimbursement/WorkAccountDao.xml

@@ -254,4 +254,11 @@
 		select parent_ids as "parentIds" from work_reimbursement_type_info where id = #{id}
 	</select>
 
+	<select id="getWorkAccountByProjectId" resultType="java.lang.Integer">
+		select count(b.status) count from work_account a
+		left join work_reimbursement b on a.work_reimbursement_id = b.id
+		where a.project_id = #{projectId}
+		and b.status != 7
+	</select>
+
 </mapper>