فهرست منبع

苏州分公司数据同步调整

sangwenwei 7 ماه پیش
والد
کامیت
121781a40e

+ 106 - 3
src/main/java/com/jeeplus/modules/szCenterservice/controller/szCloud/CpaFinanceInvoiceController.java

@@ -16,9 +16,11 @@ import com.jeeplus.modules.szCenterservice.service.szCloud.FinanceInvoiceRequest
 import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
 import com.jeeplus.modules.workinvoice.dao.WorkInvoiceCloudDao;
 import com.jeeplus.modules.workinvoice.dao.WorkInvoiceDao;
+import com.jeeplus.modules.workinvoice.dao.WorkInvoiceReceiptDao;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoice;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoiceCloud;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoiceProjectRelation;
+import com.jeeplus.modules.workinvoice.entity.WorkInvoiceReceipt;
 import com.jeeplus.modules.workinvoice.service.WorkInvoiceAllService;
 import com.jeeplus.modules.workinvoicedetail.dao.WorkInvoiceDetailDao;
 import com.jeeplus.modules.workinvoicedetail.entity.WorkInvoiceDetail;
@@ -58,6 +60,8 @@ public class CpaFinanceInvoiceController {
     private WorkInvoiceDetailDao workInvoiceDetailDao;
     @Autowired
     private WorkattachmentService workattachmentService;
+    @Autowired
+    private WorkInvoiceReceiptDao workInvoiceReceiptDao;
 
 
     @RequestMapping(value = "saveAudit")
@@ -135,9 +139,9 @@ public class CpaFinanceInvoiceController {
                 workattachmentService.insertOnWorkAttachment(workAttachment);
             }
             //开票明细处理
-            WorkInvoiceDetail workInvoiceDetail = new WorkInvoiceDetail();
-            workInvoiceDetail.setInvoiceId(workInvoice.getId());
-            workInvoiceDetailDao.delete(workInvoiceDetail);
+//            WorkInvoiceDetail workInvoiceDetail = new WorkInvoiceDetail();
+//            workInvoiceDetail.setInvoiceId(workInvoice.getId());
+            workInvoiceDetailDao.deleteByInvoiceId(workInvoice.getId());
             for (WorkInvoiceDetail invoiceDetail : workInvoice.getWorkAccountList()) {
                 workInvoiceDetailDao.insert(invoiceDetail);
 
@@ -147,11 +151,53 @@ public class CpaFinanceInvoiceController {
             for (WorkInvoiceCloud workInvoiceCloud : workInvoice.getWorkInvoiceCloudList()) {
                 workInvoiceCloudDao.insert(workInvoiceCloud);
             }
+            //收款明细
+            workInvoiceReceiptDao.delByInvoiceId(workInvoice.getId());
+            if (workInvoice.getWorkReceiptList() != null && workInvoice.getWorkReceiptList().size()>0){
+                for (WorkInvoiceReceipt workInvoiceReceipt : workInvoice.getWorkReceiptList()) {
+                    workInvoiceReceiptDao.insert(workInvoiceReceipt);
+                }
+            }
         }
     }
 
 
     /**
+     * 保存收款信息
+     */
+    @Transactional(readOnly = false)
+    @RequestMapping(value = "saveReceivable", method = RequestMethod.POST)
+    public void saveReceivable(@RequestBody String json) throws Exception {
+        WorkInvoice workInvoice = new WorkInvoice();
+        if (null != json){
+            Map<String, Object> invoice = JSONObject.parseObject(json);
+            if (Objects.nonNull(invoice)){
+                if (Objects.nonNull(invoice.get("id"))){
+                    workInvoice.setId(invoice.get("id").toString());
+                }
+                if (Objects.nonNull(invoice.get("receivablesDate"))){
+                    Long createTimeMillis = (Long) invoice.get("receivablesDate");
+                    Date createDate = new Date(createTimeMillis);
+                    workInvoice.setReceiptMoneyDate(createDate);
+                }
+                if (Objects.nonNull(invoice.get("receivablesStatus"))){
+                    workInvoice.setReceiptMoney(invoice.get("receivablesStatus").toString());
+                }
+            }
+            if (workInvoice != null){
+                if (workInvoice.getReceiptMoney().equals("1")){
+                    workInvoiceDao.receiptMoney(workInvoice);
+                }else {
+                    workInvoiceDao.updateInvoiceReceipt(workInvoice);
+                }
+            }
+        }
+
+
+    }
+
+
+    /**
      * 将cpa的发票详情字段转换为当前系统字段
      * @param resp
      * @return
@@ -328,6 +374,30 @@ public class CpaFinanceInvoiceController {
                 Date date = sdf.parse(billingDate);
                 result.setTakeDate(date);
             }
+            //收款时间
+            if (Objects.nonNull(resp.get("receivablesDate"))) {
+                String billingDate = resp.get("receivablesDate").toString();
+                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+                Date date = sdf.parse(billingDate);
+                result.setReceiptMoneyDate(date);
+            }
+            //收款状态
+            if (Objects.nonNull(resp.get("receivablesStatus"))){
+                result.setReceiptMoney(resp.get("receivablesStatus").toString());
+            }
+            //红字发票
+            if (Objects.nonNull(resp.get("redInvoiceFlag"))){
+                result.setRedInvoiceFlag(Integer.parseInt(resp.get("redInvoiceFlag").toString()));
+            }
+            if (Objects.nonNull(resp.get("invoiceNumberStr"))){
+                result.setInvoiceNumberStr(resp.get("invoiceNumberStr").toString());
+            }
+            if (Objects.nonNull(resp.get("redInvoiceRelevancyNumber"))){
+                result.setRedInvoiceRelevancyNumber(resp.get("redInvoiceRelevancyNumber").toString());
+            }
+            if (Objects.nonNull(resp.get("redInvoiceRelevancyId"))){
+                result.setRedInvoiceRelevancyId(resp.get("redInvoiceRelevancyId").toString());
+            }
             //发票明细
             if (Objects.nonNull(resp.get("financeInvoiceDetailDTOList"))){
                 String data = JSON.toJSONString(resp.get("financeInvoiceDetailDTOList"));
@@ -417,6 +487,39 @@ public class CpaFinanceInvoiceController {
                 }
                 result.setWorkAttachments(attachments);
             }
+
+            //收款明细
+            if (Objects.nonNull(resp.get("financeInvoiceReceivablesDTOList"))){
+                String data = JSON.toJSONString(resp.get("financeInvoiceReceivablesDTOList"));
+                List<Object> baseList = JSON.parseArray(data,Object.class);
+                ArrayList<WorkInvoiceReceipt> workInvoiceReceipts = new ArrayList<>();
+                if (Objects.nonNull(baseList)) {
+                    for (Object base : baseList) {
+                        WorkInvoiceReceipt receipt = new WorkInvoiceReceipt();
+                        Map<String, Object> baseMap = JSONObject.parseObject(JSON.toJSONString(base));
+                        if (Objects.nonNull(baseMap.get("invoiceId"))){
+                            receipt.setInvoiceId(baseMap.get("invoiceId").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("remittanceUnit"))){
+                            receipt.setCompanyName(baseMap.get("remittanceUnit").toString());
+                        }
+                        if (Objects.nonNull(baseMap.get("remittanceAmount"))){
+                            receipt.setMoney(Double.parseDouble(baseMap.get("remittanceAmount").toString()));
+                        }
+                        if (Objects.nonNull(baseMap.get("remittanceDate"))){
+                            receipt.setReceiptDate(baseMap.get("remittanceDate").toString());
+                        }
+                        receipt.setId(baseMap.get("id").toString());
+                        receipt.setDelFlag("0");
+                        receipt.setCreateBy(result.getCreateBy());
+                        receipt.setUpdateBy(result.getUpdateBy());
+                        receipt.setCreateDate(result.getCreateDate());
+                        receipt.setUpdateDate(result.getUpdateDate());
+                        workInvoiceReceipts.add(receipt);
+                    }
+                }
+                result.setWorkReceiptList(workInvoiceReceipts);
+            }
         }
         return result;
     }

+ 26 - 0
src/main/java/com/jeeplus/modules/szCenterservice/service/szCloud/FinanceInvoiceService.java

@@ -215,6 +215,19 @@ public class FinanceInvoiceService {
                 Date date = sdf.parse(billingDate);
                 result.setTakeDate(date);
             }
+            //红字发票
+            if (Objects.nonNull(resp.get("redInvoiceFlag"))){
+                result.setRedInvoiceFlag(Integer.parseInt(resp.get("redInvoiceFlag").toString()));
+            }
+            if (Objects.nonNull(resp.get("redInvoiceRelevancyId"))){
+                result.setRedInvoiceRelevancyId(resp.get("redInvoiceRelevancyId").toString());
+            }
+            if (Objects.nonNull(resp.get("redInvoiceRelevancyNumber"))){
+                result.setRedInvoiceRelevancyNumber(resp.get("redInvoiceRelevancyNumber").toString());
+            }
+            if (Objects.nonNull(resp.get("invoiceNumberStr"))){
+                result.setInvoiceNumberStr(resp.get("invoiceNumberStr").toString());
+            }
             //发票明细
             if (Objects.nonNull(resp.get("financeInvoiceDetailDTOList"))){
                 String data = JSON.toJSONString(resp.get("financeInvoiceDetailDTOList"));
@@ -515,6 +528,19 @@ public class FinanceInvoiceService {
                 Date date = sdf.parse(billingDate);
                 result.setTakeDate(date);
             }
+            //红字发票
+            if (Objects.nonNull(resp.get("redInvoiceFlag"))){
+                result.setRedInvoiceFlag(Integer.parseInt(resp.get("redInvoiceFlag").toString()));
+            }
+            if (Objects.nonNull(resp.get("redInvoiceRelevancyNumber"))){
+                result.setRedInvoiceRelevancyNumber(resp.get("redInvoiceRelevancyNumber").toString());
+            }
+            if (Objects.nonNull(resp.get("redInvoiceRelevancyId"))){
+                result.setRedInvoiceRelevancyId(resp.get("redInvoiceRelevancyId").toString());
+            }
+            if (Objects.nonNull(resp.get("invoiceNumberStr"))){
+                result.setInvoiceNumberStr(resp.get("invoiceNumberStr").toString());
+            }
             //发票明细
             if (Objects.nonNull(resp.get("financeInvoiceDetailDTOList"))){
                 String data = JSON.toJSONString(resp.get("financeInvoiceDetailDTOList"));

+ 2 - 0
src/main/java/com/jeeplus/modules/workinvoice/dao/WorkInvoiceReceiptDao.java

@@ -9,6 +9,7 @@ import com.jeeplus.modules.workbidproject.entity.WorkBidProject;
 import com.jeeplus.modules.workclientinfo.entity.WorkClientInfo;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoice;
 import com.jeeplus.modules.workinvoice.entity.WorkInvoiceReceipt;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -20,4 +21,5 @@ import java.util.List;
 @MyBatisDao
 public interface WorkInvoiceReceiptDao extends CrudDao<WorkInvoiceReceipt> {
 
+    void delByInvoiceId(@Param("invoiceId") String invoiceId);
 }

+ 18 - 0
src/main/java/com/jeeplus/modules/workinvoice/entity/WorkInvoiceReceipt.java

@@ -15,6 +15,24 @@ public class WorkInvoiceReceipt extends DataEntity<WorkInvoiceReceipt> {
     private String companyName;  //公司名称
     private Double money;   //汇款金额
     private String receiptDate;  //汇款时间
+    private String createName;
+    private String updateName;
+
+    public String getCreateName() {
+        return createName;
+    }
+
+    public void setCreateName(String createName) {
+        this.createName = createName;
+    }
+
+    public String getUpdateName() {
+        return updateName;
+    }
+
+    public void setUpdateName(String updateName) {
+        this.updateName = updateName;
+    }
 
     public String getInvoiceId() {
         return invoiceId;

+ 92 - 4
src/main/java/com/jeeplus/modules/workinvoice/service/WorkInvoiceAllService.java

@@ -3,8 +3,11 @@
  */
 package com.jeeplus.modules.workinvoice.service;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.jeeplus.common.config.Global;
 import com.jeeplus.common.persistence.Page;
 import com.jeeplus.common.service.CrudService;
 import com.jeeplus.common.utils.DateUtils;
@@ -54,9 +57,15 @@ import org.activiti.engine.runtime.ProcessInstance;
 import org.activiti.engine.task.Task;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.RestTemplate;
 
+import javax.annotation.Resource;
 import java.util.*;
 
 /**
@@ -118,6 +127,8 @@ public class WorkInvoiceAllService extends CrudService<WorkInvoiceDao, WorkInvoi
 	private AreaService areaService;
 	@Autowired
 	private WorkInvoiceCloudDao workInvoiceCloudDao;
+	@Autowired
+	private RestTemplate restTemplate;
 
 	private static byte[] SYN_BYTE = new byte[0];
 
@@ -518,13 +529,13 @@ public class WorkInvoiceAllService extends CrudService<WorkInvoiceDao, WorkInvoi
 				ActUtils.PD_REIMBURSEMENT[0], businessKey, processInstance.getId(), variables});
 		return "";
 	}
-
+	private ObjectMapper objectMapper = new ObjectMapper();
 	/**
 	 * 保存发票收款信息
 	 * @param workInvoice
 	 */
 	@Transactional(readOnly = false)
-	public void saveReceipt(WorkInvoice workInvoice) {
+	public void saveReceipt(WorkInvoice workInvoice) throws JsonProcessingException {
 		if(null != workInvoice.getWorkReceiptList()) {
 			//发票收款信息
 			for (WorkInvoiceReceipt receiptInfo : workInvoice.getWorkReceiptList()) {
@@ -559,6 +570,34 @@ public class WorkInvoiceAllService extends CrudService<WorkInvoiceDao, WorkInvoi
 				workInvoice.setReceiptMoney("0");
 				workInvoiceDao.updateInvoiceReceipt(workInvoice);
 			}
+			//先查询该发票是否为苏州分公司的发票
+			WorkInvoice invoice = workInvoiceDao.get(workInvoice.getId());
+			if (StringUtils.isNotBlank(invoice.getIsSzCloud()) && invoice.getIsSzCloud().equals("sz")){
+				if(null != receiptList && receiptList.size()>0){
+					for (WorkInvoiceReceipt workInvoiceReceipt : receiptList) {
+						User user = UserUtils.get(workInvoiceReceipt.getCreateBy().getId());
+						workInvoiceReceipt.setCreateName(user.getName());
+						User user1 = UserUtils.get(workInvoiceReceipt.getUpdateBy().getId());
+						workInvoiceReceipt.setUpdateName(user1.getName());
+					}
+					WorkInvoice invoice1 = new WorkInvoice();
+					invoice1.setWorkReceiptList(receiptList);
+					String json = objectMapper.writeValueAsString(invoice1);
+					String path = Global.getConfig("SZ_PATH");
+					String url = path+"/transpond/saveReceipt";
+					HttpHeaders headers = new HttpHeaders();
+					headers.setContentType(MediaType.APPLICATION_JSON);
+					HttpEntity<String> httpEntity = new HttpEntity<>(json, headers);
+					try {
+						restTemplate.exchange(url, HttpMethod.POST,httpEntity,String.class);
+					} catch (Exception e) {
+						// 记录错误日志或进行其他处理
+						System.err.println("Error sending project info to cloud: " + e.getMessage());
+					}
+				}
+
+			}
+
 
 		}
 	}
@@ -750,12 +789,32 @@ public class WorkInvoiceAllService extends CrudService<WorkInvoiceDao, WorkInvoi
 	 * @param workInvoice
 	 */
 	@Transactional(readOnly = false)
-	public void receiptMoney(WorkInvoice workInvoice) {
+	public void receiptMoney(WorkInvoice workInvoice) throws JsonProcessingException {
 		workInvoice.preUpdate();
 		dao.receiptMoney(workInvoice);
 		/*for (WorkInvoiceDetail workAccount : workInvoice.getWorkAccountList()){
 			workInvoiceDetailDao.delete(workAccount);
 		}*/
+		//先查询该发票是否为苏州分公司的发票
+		WorkInvoice invoice = workInvoiceDao.get(workInvoice.getId());
+		if (StringUtils.isNotBlank(invoice.getIsSzCloud()) && invoice.getIsSzCloud().equals("sz")){
+			WorkInvoice invoice1 = new WorkInvoice();
+			invoice1.setId(workInvoice.getId());
+			invoice1.setReceiptMoney("1");
+			invoice1.setReceiptMoneyDate(invoice.getReceiptMoneyDate());
+			String json = objectMapper.writeValueAsString(invoice1);
+			String path = Global.getConfig("SZ_PATH");
+			String url = path+"/transpond/saveReceivable";
+			HttpHeaders headers = new HttpHeaders();
+			headers.setContentType(MediaType.APPLICATION_JSON);
+			HttpEntity<String> httpEntity = new HttpEntity<>(json, headers);
+			try {
+				restTemplate.exchange(url, HttpMethod.POST,httpEntity,String.class);
+			} catch (Exception e) {
+				// 记录错误日志或进行其他处理
+				System.err.println("Error sending project info to cloud: " + e.getMessage());
+			}
+		}
 	}
 
 	/**
@@ -763,12 +822,32 @@ public class WorkInvoiceAllService extends CrudService<WorkInvoiceDao, WorkInvoi
 	 * @param workInvoice
 	 */
 	@Transactional(readOnly = false)
-	public void saveCancelReceiptMoney(WorkInvoice workInvoice) {
+	public void saveCancelReceiptMoney(WorkInvoice workInvoice) throws JsonProcessingException {
 		workInvoice.preUpdate();
 		dao.cancelReceiptMoney(workInvoice);
 		/*for (WorkInvoiceDetail workAccount : workInvoice.getWorkAccountList()){
 			workInvoiceDetailDao.delete(workAccount);
 		}*/
+		//先查询该发票是否为苏州分公司的发票
+		WorkInvoice invoice = workInvoiceDao.get(workInvoice.getId());
+		if (StringUtils.isNotBlank(invoice.getIsSzCloud()) && invoice.getIsSzCloud().equals("sz")){
+			WorkInvoice invoice1 = new WorkInvoice();
+			invoice1.setId(workInvoice.getId());
+			invoice1.setReceiptMoney("0");
+			invoice1.setReceiptMoneyDate(invoice.getReceiptMoneyDate());
+			String json = objectMapper.writeValueAsString(invoice1);
+			String path = Global.getConfig("SZ_PATH");
+			String url = path+"/transpond/saveReceivable";
+			HttpHeaders headers = new HttpHeaders();
+			headers.setContentType(MediaType.APPLICATION_JSON);
+			HttpEntity<String> httpEntity = new HttpEntity<>(json, headers);
+			try {
+				restTemplate.exchange(url, HttpMethod.POST,httpEntity,String.class);
+			} catch (Exception e) {
+				// 记录错误日志或进行其他处理
+				System.err.println("Error sending project info to cloud: " + e.getMessage());
+			}
+		}
 	}
 	/**
 	 * 获取关联项目名称list
@@ -2375,4 +2454,13 @@ public class WorkInvoiceAllService extends CrudService<WorkInvoiceDao, WorkInvoi
 	public List<WorkInvoiceCloud> getByInvoiceId(String id) {
 		return workInvoiceCloudDao.getByInvoiceId(id);
 	}
+
+	/**
+	 * 根据id获取所有发票号
+	 * @param id
+	 * @return
+	 */
+	public String getInvoiceNumberStr(String id) {
+		return  workInvoiceDao.getInvoiceNumberStr(id);
+	}
 }

+ 12 - 4
src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceAllController.java

@@ -3,6 +3,8 @@
  */
 package com.jeeplus.modules.workinvoice.web;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.common.base.Strings;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -388,6 +390,12 @@ public class WorkInvoiceAllController extends BaseController {
 				workClientInfo.setName(workInvoice.getClient().getId());
 				workInvoice.setClient(workClientInfo);
 			}
+			if(ObjectUtil.isNotEmpty(workInvoice) && ObjectUtil.isNotEmpty(workInvoice.getRedInvoiceFlag()) && 1 == workInvoice.getRedInvoiceFlag()){
+				//此处为红冲数据 需要获取发票号
+				WorkInvoice invoice = workInvoiceService.get(workInvoice.getRedInvoiceRelevancyId());
+				String invoiceNumberStr = workInvoiceService.getInvoiceNumberStr(invoice.getId());
+				workInvoice.setInvoiceNumberStr(invoiceNumberStr);
+			}
 			view = "workInvoiceView";
 		}else {
 			if("1".equals(tabId)){
@@ -552,7 +560,7 @@ public class WorkInvoiceAllController extends BaseController {
 	 * 保存收款信息
 	 */
 	@RequestMapping(value = "saveReceipt")
-	public String saveReceipt(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
+	public String saveReceipt(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) throws JsonProcessingException {
 		workInvoiceService.saveReceipt(workInvoice);
 		addMessage(redirectAttributes, "保留收款信息成功");
 		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
@@ -562,7 +570,7 @@ public class WorkInvoiceAllController extends BaseController {
 	 * 保存收款信息
 	 */
 	@RequestMapping(value = "saveAffirmReceipt")
-	public String saveAffirmReceipt(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
+	public String saveAffirmReceipt(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) throws JsonProcessingException {
 		workInvoiceService.saveReceipt(workInvoice);
 		workInvoiceService.receiptMoney(workInvoice);
 		addMessage(redirectAttributes, "确认收款信息成功");
@@ -576,7 +584,7 @@ public class WorkInvoiceAllController extends BaseController {
 	 * @return
 	 */
 	@RequestMapping(value = "saveCancelReceiptMoney")
-	public String saveCancelReceiptMoney(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
+	public String saveCancelReceiptMoney(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) throws JsonProcessingException {
 		workInvoiceService.saveCancelReceiptMoney(workInvoice);
 		addMessage(redirectAttributes, "撤回确认收款信息成功");
 		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";
@@ -905,7 +913,7 @@ public class WorkInvoiceAllController extends BaseController {
 	 * 财务收款状态更改方法
 	 */
 	@RequestMapping(value = "receiptMoney")
-	public String receiptMoney(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
+	public String receiptMoney(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) throws JsonProcessingException {
 		workInvoiceService.receiptMoney(workInvoice);
 		addMessage(redirectAttributes, "发票收款成功");
 		return "redirect:"+Global.getAdminPath()+"/workinvoiceAll/workInvoiceAll/?repage";

+ 4 - 3
src/main/java/com/jeeplus/modules/workinvoice/web/WorkInvoiceAllTwoController.java

@@ -3,6 +3,7 @@
  */
 package com.jeeplus.modules.workinvoice.web;
 
+import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.common.base.Strings;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -373,7 +374,7 @@ public class WorkInvoiceAllTwoController extends BaseController {
 	 * 保存收款信息
 	 */
 	@RequestMapping(value = "saveReceipt")
-	public String saveReceipt(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
+	public String saveReceipt(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) throws JsonProcessingException {
 		workInvoiceService.saveReceipt(workInvoice);
 		addMessage(redirectAttributes, "保留收款信息成功");
 		return "redirect:"+Global.getAdminPath()+"/workinvoiceAllTwo/workinvoiceAllTwo/?repage";
@@ -383,7 +384,7 @@ public class WorkInvoiceAllTwoController extends BaseController {
 	 * 保存收款信息
 	 */
 	@RequestMapping(value = "saveAffirmReceipt")
-	public String saveAffirmReceipt(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
+	public String saveAffirmReceipt(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) throws JsonProcessingException {
 		workInvoiceService.saveReceipt(workInvoice);
 		workInvoiceService.receiptMoney(workInvoice);
 		addMessage(redirectAttributes, "确认收款信息成功");
@@ -713,7 +714,7 @@ public class WorkInvoiceAllTwoController extends BaseController {
 	 * 财务收款状态更改方法
 	 */
 	@RequestMapping(value = "receiptMoney")
-	public String receiptMoney(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) {
+	public String receiptMoney(WorkInvoice workInvoice, RedirectAttributes redirectAttributes) throws JsonProcessingException {
 		workInvoiceService.receiptMoney(workInvoice);
 		addMessage(redirectAttributes, "发票收款成功");
 		return "redirect:"+Global.getAdminPath()+"/workinvoiceAllTwo/workinvoiceAllTwo/?repage";

+ 5 - 0
src/main/resources/mappings/modules/workinvoice/WorkInvoiceReceiptDao.xml

@@ -89,4 +89,9 @@
 		DELETE FROM work_invoice_receipt
 		WHERE id = #{id}
 	</update>
+
+	<update id="delByInvoiceId">
+		DELETE FROM work_invoice_receipt
+		WHERE invoice_id = #{invoiceId}
+	</update>
 </mapper>

+ 1 - 1
src/main/resources/spring-context-shiro.xml

@@ -19,7 +19,7 @@
                 ${adminPath}/clockInRecordController/** = anon
                 ${adminPath}/hrUserController/** = anon
                 ${adminPath}/ccpmList/ccpmList/** = anon
-                ${adminPath}/cpa_finance/saveInfo = anon
+                ${adminPath}/cpa_finance/** = anon
                 ${adminPath}/workMaterialCollect/total/** = anon
                 ${adminPath}/ruralProject/signatureOldMessageDispose/** = anon
                 ${adminPath}/weChatCallBack/** = anon

+ 21 - 0
src/main/webapp/webpage/modules/workinvoice/workInvoiceAuditCpa.jsp

@@ -660,6 +660,27 @@
 				</div>
 			</div>
 			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label"><span class="require-item">*</span>是否红字发票:</label>
+				<div class="layui-input-block">
+					<input type="radio" name="redInvoiceFlag" disabled lay-filter="redInvoiceFlagRadio" title="是" value="1" ${workInvoice.redInvoiceFlag == 1 ? 'checked' : ''}>
+					<input type="radio" name="redInvoiceFlag" disabled lay-filter="redInvoiceFlagRadio" title="否" value="0" ${workInvoice.redInvoiceFlag == 0 ? 'checked' : ''}>
+				</div>
+			</div>
+
+			<div class="layui-item layui-col-sm6 redInvoice">
+				<label class="layui-form-label"><span class="require-item">*</span>关联红字发票:</label>
+				<div class="layui-input-block">
+					<input type="hidden" id="redInvoiceRelevancyId" name="redInvoiceRelevancyId" htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.redInvoiceRelevancyId}"/>
+					<input id="redInvoiceRelevancyNumber"  style="background-color: #f1f1f1" name="redInvoiceRelevancyNumber" htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.redInvoiceRelevancyNumber}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6 redInvoice">
+				<label class="layui-form-label">关联发票号:</label>
+				<div class="layui-input-block">
+					<input id="invoiceNumberStr" htmlEscape="false" readonly="true" class="form-control layui-input" value="${workInvoice.invoiceNumberStr}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
 				<label class="layui-form-label">开票内容要求:</label>
 				<div class="layui-input-block">
 					<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.content}"/>

+ 1 - 1
src/main/webapp/webpage/modules/workinvoice/workInvoiceView.jsp

@@ -244,7 +244,7 @@
 				<div class="layui-item layui-col-sm6 redInvoice">
 					<label class="layui-form-label">关联发票号:</label>
 					<div class="layui-input-block">
-						<input id="invoiceNumberStr" style="background-color: #f1f1f1" htmlEscape="false" readonly="true" class="form-control layui-input" value=""/>
+						<input id="invoiceNumberStr" style="background-color: #f1f1f1" htmlEscape="false" readonly="true" class="form-control layui-input" value="${workInvoice.invoiceNumberStr}"/>
 					</div>
 				</div>
 				<div class="layui-item layui-col-sm12">

+ 21 - 0
src/main/webapp/webpage/modules/workinvoice/workInvoiceViewCpa.jsp

@@ -660,6 +660,27 @@
 				</div>
 			</div>
 			<div class="layui-item layui-col-sm6">
+				<label class="layui-form-label"><span class="require-item">*</span>是否红字发票:</label>
+				<div class="layui-input-block">
+					<input type="radio" name="redInvoiceFlag" disabled lay-filter="redInvoiceFlagRadio" title="是" value="1" ${workInvoice.redInvoiceFlag == 1 ? 'checked' : ''}>
+					<input type="radio" name="redInvoiceFlag" disabled lay-filter="redInvoiceFlagRadio" title="否" value="0" ${workInvoice.redInvoiceFlag == 0 ? 'checked' : ''}>
+				</div>
+			</div>
+
+			<div class="layui-item layui-col-sm6 redInvoice">
+				<label class="layui-form-label"><span class="require-item">*</span>关联红字发票:</label>
+				<div class="layui-input-block">
+					<input type="hidden" id="redInvoiceRelevancyId" name="redInvoiceRelevancyId" htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.redInvoiceRelevancyId}"/>
+					<input id="redInvoiceRelevancyNumber"  style="background-color: #f1f1f1" name="redInvoiceRelevancyNumber" htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.redInvoiceRelevancyNumber}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6 redInvoice">
+				<label class="layui-form-label">关联发票号:</label>
+				<div class="layui-input-block">
+					<input id="invoiceNumberStr" htmlEscape="false" readonly="true" class="form-control layui-input" value="${workInvoice.invoiceNumberStr}"/>
+				</div>
+			</div>
+			<div class="layui-item layui-col-sm6">
 				<label class="layui-form-label">开票内容要求:</label>
 				<div class="layui-input-block">
 					<input htmlEscape="false" readonly="true"   class="form-control layui-input" value="${workInvoice.content}"/>