From 31e3d4053a22fd1afd27aac409461199f83e45c7 Mon Sep 17 00:00:00 2001 From: yefei Date: Sat, 18 Mar 2023 17:44:04 +0800 Subject: [PATCH 1/3] =?UTF-8?q?ariesy=20=E4=B8=BB=E6=B5=81=E7=A8=8B?= =?UTF-8?q?=E5=88=9D=E7=89=88=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4=20v2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/mapper/AreaDao.xml | 8 ++--- .../main/resources/mapper/OrgUserInfoDao.xml | 34 +++++++++---------- 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/dxhy-erp/src/main/resources/mapper/AreaDao.xml b/dxhy-erp/src/main/resources/mapper/AreaDao.xml index dfc2fadf..82c4ab55 100644 --- a/dxhy-erp/src/main/resources/mapper/AreaDao.xml +++ b/dxhy-erp/src/main/resources/mapper/AreaDao.xml @@ -1,7 +1,7 @@ - - + + @@ -11,7 +11,7 @@ - + INSERT INTO sys_area (PID, AREA_NAME) VALUES @@ -19,7 +19,7 @@ - + UPDATE sys_area SET diff --git a/dxhy-erp/src/main/resources/mapper/OrgUserInfoDao.xml b/dxhy-erp/src/main/resources/mapper/OrgUserInfoDao.xml index f8b4057d..dfe6d365 100644 --- a/dxhy-erp/src/main/resources/mapper/OrgUserInfoDao.xml +++ b/dxhy-erp/src/main/resources/mapper/OrgUserInfoDao.xml @@ -1,9 +1,9 @@ - + - + INSERT INTO org_user_info (user_id, user_name, identity_number, create_time, enterprise_id, tax_no, is_white_list, phone, email, password, enterprise_code_list) @@ -15,7 +15,7 @@ - SELECT * FROM org_user_info WHERE @@ -51,7 +51,7 @@ - + DELETE FROM org_user_info WHERE @@ -59,7 +59,7 @@ - + UPDATE org_user_info @@ -99,7 +99,7 @@ - SELECT * FROM org_user_info WHERE @@ -127,7 +127,7 @@ user_name = #{userName} - SELECT * FROM org_user_info WHERE @@ -160,7 +160,7 @@ identity_number - - SELECT * FROM org_user_info WHERE @@ -227,7 +227,7 @@ - + update org_user_info set is_white_list = "Y", enterprise_code_list = #{enterpriseCodeList,jdbcType=VARCHAR}, @@ -252,7 +252,7 @@ - SELECT * FROM org_user_info @@ -268,7 +268,7 @@ - + UPDATE org_user_info @@ -283,7 +283,7 @@ - + INSERT INTO org_user_info (user_id, @@ -310,7 +310,7 @@ - + UPDATE org_user_info @@ -346,7 +346,7 @@ user_id = #{userId} - SELECT * FROM org_user_info WHERE @@ -363,7 +363,7 @@ order by create_time desc - SELECT * FROM org_user_info WHERE @@ -372,7 +372,7 @@ user_name = #{userName} - select * from org_user_info where user_id = #{userId} \ No newline at end of file From 4b4417595ec18fc16f2e6dfde37aef068a1e77da Mon Sep 17 00:00:00 2001 From: wangzhikun Date: Tue, 21 Mar 2023 11:32:13 +0800 Subject: [PATCH 2/3] =?UTF-8?q?po=E7=BB=9F=E4=B8=80=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=BC=80=E5=8F=91=EF=BC=8C=E5=AE=9E=E4=BD=93=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/constant/ConfigureConstant.java | 1 + .../erp/controller/InterfaceController.java | 22 +++++++++- .../main/java/com/dxhy/erp/dao/AreaDao.java | 3 +- .../java/com/dxhy/erp/dao/OrgUserInfoDao.java | 2 + .../dxhy/erp/entity/BaseInvoiceEditVO.java | 40 +++++++++++++++++++ .../main/java/com/dxhy/erp/model/IsInput.java | 2 +- .../service/impl/InvoiceAuthServiceImpl.java | 5 ++- 7 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseInvoiceEditVO.java diff --git a/dxhy-common/src/main/java/com/dxhy/common/constant/ConfigureConstant.java b/dxhy-common/src/main/java/com/dxhy/common/constant/ConfigureConstant.java index b5463b0c..41a1a3bd 100644 --- a/dxhy-common/src/main/java/com/dxhy/common/constant/ConfigureConstant.java +++ b/dxhy-common/src/main/java/com/dxhy/common/constant/ConfigureConstant.java @@ -36,6 +36,7 @@ public class ConfigureConstant { public static final int INT_0 = 0; public static final int INT_2 = 2; + public static final String POTOKEN="6_ca323ed526e74edea7e023c0733a9bef"; } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java b/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java index ff914e34..1fa7001f 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java @@ -26,6 +26,7 @@ import com.dxhy.common.utils.GzipUtils; import com.dxhy.common.utils.R; import com.dxhy.common.utils.TripleDesUtil; import com.dxhy.erp.dao.SysDeptDao; +import com.dxhy.erp.entity.BaseInvoiceEditVO; import com.dxhy.erp.entity.SalesInvoicePushInfos; import com.dxhy.erp.entity.SysDeptEntity; import com.dxhy.erp.entity.TDxInvoiceReimburse; @@ -1128,6 +1129,21 @@ public class InterfaceController extends AbstractController { } return returnResult; } + @RequestMapping(path = "/po",method={RequestMethod.POST,RequestMethod.GET}) + public String po(@RequestBody String param,HttpServletRequest request){ + String token = request.getHeader("token"); + if(org.apache.commons.lang3.StringUtils.isBlank(token) && !ConfigureConstant.POTOKEN.equals(token)){ + return "非法请求,请停止访问!"; + } + String resultString = ""; + ErpInvoiceData requestParam = JsonUtils.getInstance().parseObject(param, ErpInvoiceData.class); + //同步 凭证号 判断自动认证接口开发 + if("FI005".equals(requestParam.getIS_INPUT().getIFYWID())){ + resultString = receiveErpInvoiceMessage(requestParam); + } + return resultString; + } + @PostMapping("receiveErpInvoiceMessage") public String receiveErpInvoiceMessage(@RequestBody ErpInvoiceData erpInvoiceData){ @@ -1143,10 +1159,14 @@ public class InterfaceController extends AbstractController { esOutPutResp.setZTYPE("E"); esOutPutResp.setZMESSAGE("程序内部错误"); return JsonUtils.getInstance().toJsonString(esOutPutResp); - } + } + @PostMapping("transferOut") + public String transferOut(@RequestBody IsInput isInput){ + BaseInvoiceEditVO baseInvoiceEditVO = new BaseInvoiceEditVO(); + return null; } } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/dao/AreaDao.java b/dxhy-erp/src/main/java/com/dxhy/erp/dao/AreaDao.java index 6892d511..30e36ecb 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/dao/AreaDao.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/dao/AreaDao.java @@ -1,6 +1,7 @@ package com.dxhy.erp.dao; import com.dxhy.erp.entity.sdny.area.Area; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; @@ -13,7 +14,7 @@ import java.util.List; * @author 大象慧云(shanQing) * @since 2017-10-23 16:31:10 */ -@Repository +@Mapper public interface AreaDao { /** diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/dao/OrgUserInfoDao.java b/dxhy-erp/src/main/java/com/dxhy/erp/dao/OrgUserInfoDao.java index 748e897e..f843e55b 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/dao/OrgUserInfoDao.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/dao/OrgUserInfoDao.java @@ -2,6 +2,7 @@ package com.dxhy.erp.dao; import com.dxhy.erp.entity.sdny.BxwxEnterpriseUserEntity; import com.dxhy.erp.entity.sdny.OrgUserInfo; +import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -13,6 +14,7 @@ import java.util.Optional; * @author guoker * @date 2020-12-29 */ +@Mapper public interface OrgUserInfoDao { /** diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseInvoiceEditVO.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseInvoiceEditVO.java new file mode 100644 index 00000000..84c08f29 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseInvoiceEditVO.java @@ -0,0 +1,40 @@ +package com.dxhy.erp.entity; + +import lombok.Data; + +/** + * @author peipei.li + * @date 2019-04-25 进项税转出确认,条件vo + */ +@Data +public class BaseInvoiceEditVO { + + /** + * 主键,多个以英文逗号分隔,结尾不加逗号 + */ + private String primaryKey; + /** + * 转出选项,1=全部转出, 2=部分转出 + */ + private String outStatus; + + /** + * 转出金额 + */ + private String outAmount; + + /** + * 转出税额 + */ + private String outTax; + /** + * 转出原因 + */ + private String outReason; + + /** + * 备注 + */ + private String outRemark; + +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/model/IsInput.java b/dxhy-erp/src/main/java/com/dxhy/erp/model/IsInput.java index 27a33d0d..f5a0fbf3 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/model/IsInput.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/model/IsInput.java @@ -32,7 +32,7 @@ public class IsInput { @JsonProperty(value = "ZFILED5") private String ZFILED5; @JsonProperty(value = "ZDATA") - private List ZDATA; + private String ZDATA; } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/InvoiceAuthServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/InvoiceAuthServiceImpl.java index 0bdd2c1d..5bdf40f1 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/InvoiceAuthServiceImpl.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/InvoiceAuthServiceImpl.java @@ -12,6 +12,7 @@ import javax.servlet.http.HttpServletResponse; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.dxhy.common.enums.FplxEnum; import com.dxhy.erp.model.*; +import com.dxhy.erp.utils.JsonUtils; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; @@ -326,8 +327,8 @@ public class InvoiceAuthServiceImpl extends MpBaseServiceImpl zdata = isInput.getZDATA(); + String zdata2 = isInput.getZDATA(); + List zdata = JSON.parseArray(zdata2, ZDATA.class); AuthDateReq authDateReq=new AuthDateReq(); authDateReq.setBatchNo(isInput.getSAPKEY()); authDateReq.setApplyRzlx("1"); From 632e5be6d17a29bd6cd89cb7cbff56e7cfd0432c Mon Sep 17 00:00:00 2001 From: wangzhikun Date: Tue, 21 Mar 2023 14:33:43 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E8=BD=AC=E5=87=BA=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../erp/controller/InterfaceController.java | 27 +- .../com/dxhy/erp/dao/BaseReceiptOutDao.java | 13 + .../dxhy/erp/dao/BaseTDxRecordInvoiceDao.java | 21 + .../dxhy/erp/entity/BaseInvoiceEditVO.java | 5 + .../dxhy/erp/entity/BaseTDxRecordInvoice.java | 468 ++++++++++++++++++ .../erp/entity/BaseTDxRecordInvoiceOut.java | 93 ++++ .../service/BaseIReceiptInvoiceService.java | 25 + .../dxhy/erp/service/IReceiptOutService.java | 14 + .../impl/BaseIReceiptInvoiceServiceImpl.java | 45 ++ .../service/impl/ReceiptOutServiceImpl.java | 245 +++++++++ 10 files changed, 952 insertions(+), 4 deletions(-) create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/dao/BaseReceiptOutDao.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/dao/BaseTDxRecordInvoiceDao.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoice.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoiceOut.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/BaseIReceiptInvoiceService.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/IReceiptOutService.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/impl/BaseIReceiptInvoiceServiceImpl.java create mode 100644 dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ReceiptOutServiceImpl.java diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java b/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java index 1fa7001f..b9b6d7de 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/controller/InterfaceController.java @@ -25,6 +25,7 @@ import com.dxhy.common.utils.Base64Encoding; import com.dxhy.common.utils.GzipUtils; import com.dxhy.common.utils.R; import com.dxhy.common.utils.TripleDesUtil; +import com.dxhy.common.vo.UserInfo; import com.dxhy.erp.dao.SysDeptDao; import com.dxhy.erp.entity.BaseInvoiceEditVO; import com.dxhy.erp.entity.SalesInvoicePushInfos; @@ -105,6 +106,8 @@ public class InterfaceController extends AbstractController { private DeclareService declareService; @Value("${erp.checkIp}") private boolean checkIp; + @Resource + private IReceiptOutService iReceiptOutService; /** * @@ -1131,6 +1134,7 @@ public class InterfaceController extends AbstractController { } @RequestMapping(path = "/po",method={RequestMethod.POST,RequestMethod.GET}) public String po(@RequestBody String param,HttpServletRequest request){ + log.info("po接口调用开始,传参{}",JsonUtils.getInstance().toJsonString(request)); String token = request.getHeader("token"); if(org.apache.commons.lang3.StringUtils.isBlank(token) && !ConfigureConstant.POTOKEN.equals(token)){ return "非法请求,请停止访问!"; @@ -1140,6 +1144,8 @@ public class InterfaceController extends AbstractController { //同步 凭证号 判断自动认证接口开发 if("FI005".equals(requestParam.getIS_INPUT().getIFYWID())){ resultString = receiveErpInvoiceMessage(requestParam); + }else if("FI110".equals(requestParam.getIS_INPUT().getIFYWID())){ + resultString = transferOut(requestParam); } return resultString; } @@ -1162,11 +1168,24 @@ public class InterfaceController extends AbstractController { } } - @PostMapping("transferOut") - public String transferOut(@RequestBody IsInput isInput){ + public String transferOut(ErpInvoiceData erpInvoiceData){ + String zdata = erpInvoiceData.getIS_INPUT().getZDATA(); + Map map=JsonUtils.getInstance().parseObject(zdata,Map.class); + String invoiceCode = map.get("invoiceCode"); + String invoiceNo = map.get("invoiceNo"); + String outTaxAmount = map.get("outTaxAmount"); + String outReason = map.get("outReason"); + String outTaxPeriod = map.get("outTaxPeriod"); + String uuid = invoiceCode+invoiceNo; BaseInvoiceEditVO baseInvoiceEditVO = new BaseInvoiceEditVO(); - - return null; + baseInvoiceEditVO.setPrimaryKey(uuid); + baseInvoiceEditVO.setOutReason(outReason); + baseInvoiceEditVO.setOutTax(outTaxAmount); + baseInvoiceEditVO.setOutStatus("1"); + baseInvoiceEditVO.setOutTaxPeriod(outTaxPeriod); + UserInfo userInfo = new UserInfo(); + String transfer = iReceiptOutService.transfer(erpInvoiceData,baseInvoiceEditVO, userInfo); + return transfer; } } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/dao/BaseReceiptOutDao.java b/dxhy-erp/src/main/java/com/dxhy/erp/dao/BaseReceiptOutDao.java new file mode 100644 index 00000000..a7c48971 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/dao/BaseReceiptOutDao.java @@ -0,0 +1,13 @@ +package com.dxhy.erp.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dxhy.erp.entity.BaseTDxRecordInvoiceOut; +import org.apache.ibatis.annotations.Mapper; + +/** + * @author peipei.li + * @date 2019-04-23 + * + */ +@Mapper +public interface BaseReceiptOutDao extends BaseMapper {} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/dao/BaseTDxRecordInvoiceDao.java b/dxhy-erp/src/main/java/com/dxhy/erp/dao/BaseTDxRecordInvoiceDao.java new file mode 100644 index 00000000..6f478734 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/dao/BaseTDxRecordInvoiceDao.java @@ -0,0 +1,21 @@ +package com.dxhy.erp.dao; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dxhy.erp.entity.BaseTDxRecordInvoice; +import org.apache.ibatis.annotations.Mapper; + +/** + * + * + * 底账表dao + * + * @author peipei.li + * @date 2019-04-23 + */ +@SuppressWarnings("AlibabaClassNamingShouldBeCamel") +@Mapper +public interface BaseTDxRecordInvoiceDao extends BaseMapper { + + + +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseInvoiceEditVO.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseInvoiceEditVO.java index 84c08f29..4ef37227 100644 --- a/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseInvoiceEditVO.java +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseInvoiceEditVO.java @@ -36,5 +36,10 @@ public class BaseInvoiceEditVO { * 备注 */ private String outRemark; + /** + * 属期 + */ + private String outTaxPeriod; + } diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoice.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoice.java new file mode 100644 index 00000000..1046b110 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoice.java @@ -0,0 +1,468 @@ +package com.dxhy.erp.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * + * + * 底账表 + * + * @author peipei.li + * @date 2019-04-23 + */ +@SuppressWarnings("AlibabaClassNamingShouldBeCamel") +@Data +@TableName("t_dx_record_invoice") +public class BaseTDxRecordInvoice implements Serializable { + + private static final long serialVersionUID = 6086166653761632484L; + + /** + * id + */ + private Long id; + + /** + * 发票类型 01-增值税专用发票 03-机动车销售统一发票 04-增值税普通发票 10-电子发票 11-卷票 14-通行费发票 + */ + private String invoiceType; + + /** + * 发票代码 + */ + private String invoiceCode; + + /** + * 发票号码 + */ + private String invoiceNo; + + /** + * 开票日期 + */ + private Date invoiceDate; + + /** + * 购方税号 + */ + private String gfTaxNo; + + /** + * 购方名称 + */ + private String gfName; + + /** + * 购方地址电话 + */ + private String gfAddressAndPhone; + + /** + * 购方开户行及账号 + */ + private String gfBankAndNo; + + /** + * 销方税号 + */ + private String xfTaxNo; + + /** + * 销方名称 + */ + private String xfName; + + /** + * 销方地址及电话 + */ + private String xfAddressAndPhone; + + /** + * 销方开户行及账号 + */ + private String xfBankAndNo; + + /** + * 金额 + */ + private BigDecimal invoiceAmount; + + /** + * 税额 + */ + private BigDecimal taxAmount; + + /** + * 价格合计 + */ + private BigDecimal totalAmount; + + /** + * 备注 + */ + private String remark; + + /** + * 发票状态 0-正常 1-失控 2-作废 3-红冲 4-异常 + */ + private String invoiceStatus; + + /** + * 发票状态修改时间 + */ + private Date statusUpdateDate; + + /** + * 发票状态最后修改时间 + */ + private Date lastUpdateDate; + + /** + * 认证时间 + */ + private Date rzhDate; + + /** + * 签收时间 + */ + private Date qsDate; + + /** + * 最晚认证归属期 yyyymm + */ + private String rzhBelongDateLate; + + /** + * 实际认证归属期 yyyymm + */ + private String rzhBelongDate; + + /** + * 认证确认时间 + */ + private Date confirmDate; + + /** + * 认证方式 1-勾选认证 2-扫描认证 + */ + private String rzhType; + + /** + * 是否认证 0-未认证 1-已认证 + */ + private String rzhYesorno; + + /** + * 提交认证操作人账号 + */ + private String gxUserAccount; + + /** + * 提交认证操作人 + */ + private String gxUserName; + + /** + * 底账来源 0-采集 1-查验 + */ + private String sourceSystem; + + /** + * 是否有效 1-有效 0-无效 + */ + private String valid; + + /** + * 发票代码+发票号码 唯一索引 防重复 + */ + private String uuid; + + /** + * 采集时间 + */ + private Date createDate; + + /** + * 勾选时间 + */ + private Date gxDate; + + /** + * 认证结果回传信息 + */ + private String rzhBackMsg; + + /** + * 当前税款所属期 + */ + private String dqskssq; + + /** + * 当前税款所属期勾选截止日 + */ + private String gxjzr; + + /** + * 当前税款所属期可勾选发票开票日期范围起 + */ + private String gxfwq; + + /** + * 当前税款所属期可勾选发票开票日期范围止 + */ + private String gxfwz; + + /** + * 是否已勾选 + */ + private String sfygx; + + /** + * 是否存入明细 0 无明细 1 有明细 + */ + private String detailYesorno; + + /** + * 勾选方式(0-手工勾选 1-扫码勾选 2-导入勾选 3- 智能勾选 4-手工认证 5-扫码认证 6-导入认证) + */ + private String gxType; + + /** + * 认证处理状态 0-未认证 1-已勾选未确认,2已确认 3 已发送认证 4 认证成功 5 认证失败 + */ + private String authStatus; + + /** + * 发送认证时间 + */ + private Date sendDate; + + /** + * 认证类型(1-抵扣 2-退税 3-代理退税 4-不抵扣 5逾期 发票已认证、已勾选有该标签) + */ + private String rzlx; + + /** + * 是否代办退税(0:否 1:是) + */ + private String sfdbts; + + /** + * 签收方式(0-扫码签收 1-扫描仪签收 2-app签收 3-导入签收 4-手工签收5-pdf上传签收 + */ + private String qsType; + + /** + * 签收结果(0-未签收 1-已签收) + */ + private String qsStatus; + + /** + * 校验码 + */ + private String checkCode; + + /** + * 通行费标志(y-可抵扣通行费,n-不可抵扣通行费) + */ + private String txfbz; + + /** + * 零税率标志 (空:非零税率,1:税率栏位显示“免税”,2:税率栏位显示“不征收”,3:零税率 + */ + private String lslbz; + + /** + * 转出状态 0-未转出 1-全部转出 2-部分转出 + */ + private String outStatus; + + /** + * 转出金额 + */ + @TableField(fill = FieldFill.UPDATE) + private BigDecimal outInvoiceAmout; + + /** + * 转出税额 + */ + @TableField(fill = FieldFill.UPDATE) + private BigDecimal outTaxAmount; + + /** + * 转出原因1-免税项目用 ;2-集体福利,个人消费;3-非正常损失;4-简易计税方法征税项目用;5-免抵退税办法不得抵扣的进项税额;6-纳税检查调减进项税额;7-红字专用发票通知单注明的进项税额;8-上期留抵税额抵减欠税 + */ + @TableField(fill = FieldFill.UPDATE) + private String outReason; + + /** + * 转出备注 + */ + @TableField(fill = FieldFill.UPDATE) + private String outRemark; + + /** + * 转出日期 + */ + @TableField(fill = FieldFill.UPDATE) + private Date outDate; + + /** + * 转出人 + */ + @TableField(fill = FieldFill.UPDATE) + private String outBy; + + /** + * 转出税款所属期 + */ + @TableField(fill = FieldFill.UPDATE) + private String outBelongDate; + /** + * 确认人 + */ + private String confirmUser; + + /** + * 机器编号 collate utf32_general_ci + */ + private String machinecode; + + /** + * 部门id + */ + private String deptId; + + /** + * 部门名称 + */ + private String deptName; + + /** + * 结算单号 + */ + private String settlementNo; + + /** + * 是否结算(0未结算1已结算) + */ + private String settlementStatus; + + /** + * 结算单来源 + */ + private String settleSource; + + /** + * 付款状态(0-付款成功 1-付款失败) collate utf8_bin + */ + private String paymentStatus; + + /** + * 付款日期 + */ + private String paymentDate; + + /** + * 凭证号 + */ + private String voucherNumber; + + /** + * 付款金额 + */ + private String paymentSum; + + /** + * 签收人 + */ + private String qsName; + + /** + * 逾期申请结果 + */ + private String yqsqMsg; + + /** + * 逾期申请标志 0-未申请 1--已申请 默认为空 + */ + private String yqsqStatus; + /** + * 逾期申请属期 + */ + private String yqCurrentPeriod; + + /** + * 管理状态 0正常1异常 + */ + private String glzt; + + /** + * 信息来源 0扫描认证 1系统推送 2出口转内销 + */ + private String xxly; + + /** + * 抵扣税额 + */ + private BigDecimal dkTaxAmount; + + /** + * 逾期可勾选标志 0默认值,1可勾选逾期 + */ + private String yqkgxbz; + + /** + * 异常类型 0发票状态异常1申报用途变更(抵扣变代办退税)2管理状态异常、注:发票状态为正常时为空 + */ + private String yclx; + + /** + * 逾期审核状态 0--未审核 1--已审核 默认为空 + */ + private String yqshzt; + + /** + * 撤销认证处理状态0未撤销1撤销申请2发送撤销4撤销成功5撤销失败 + */ + private String cxrzStatus; + /** + * 撤销认证操作时间 + */ + private Date cxrzDate; + /** + * 撤销认证属期 + */ + private String cxrzCurrentPeriod; + /** + * 不认证处理状态0未申请,1申请,2发送申请,4申请成功,5申请失败 + */ + private String bdkStatus; + /** + * 撤销不认证处理0未申请,1申请,2发送申请,4申请成功,5申请失败 + */ + private String cxbdkStatus; + /** + * 逾期申请日期 + */ + private Date yqsqDate; + /** + * 集团编码 + */ + private String company; + + private String exportMark; + /** + * 打款状态 + */ + private String inAccountStatus; + + private String invoiceSource; +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoiceOut.java b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoiceOut.java new file mode 100644 index 00000000..42a4e8a6 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/entity/BaseTDxRecordInvoiceOut.java @@ -0,0 +1,93 @@ +package com.dxhy.erp.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 进项税转出表 + * + * @author lipeipei 2019-04-24 + */ +@SuppressWarnings("AlibabaClassNamingShouldBeCamel") +@Data +@TableName("t_dx_record_invoice_out") +public class BaseTDxRecordInvoiceOut implements Serializable { + + private static final long serialVersionUID = -1633227564761160276L; + + /** + * id + */ + private Long id; + + /** + * 发票代码 + */ + private String invoiceCode; + + /** + * 发票号码 + */ + private String invoiceNo; + + /** + * 发票代码+发票号码 + */ + private String uuid; + + /** + * 转出状态 1-全部转出 2-部分转出 + */ + private String outStatus; + + /** + * 转出金额 + */ + private BigDecimal outInvoiceAmout; + + /** + * 转出税额 + */ + private BigDecimal outTaxAmount; + + /** + * 转出原因1-免税项目用 ;2-集体福利,个人消费;3-非正常损失;4-简易计税方法征税项目用;5-免抵退税办法不得抵扣的进项税额;6-纳税检查调减进项税额;7-红字专用发票通知单注明的进项税额;8-上期留抵税额抵减欠税 + */ + private String outReason; + + /** + * 转出备注 + */ + private String outRemark; + + /** + * 转出日期 + */ + private Date outDate; + + /** + * 转出人 + */ + private String outBy; + + /** + * 转出税款所属期 + */ + private String outBelongDate; + + /** + * 是否取消(0-未取消 1-已取消) + */ + private String isCancel; + /** + * 集团编码 + */ + private String company; + + public BaseTDxRecordInvoiceOut() {} + +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/BaseIReceiptInvoiceService.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/BaseIReceiptInvoiceService.java new file mode 100644 index 00000000..0888c4a0 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/BaseIReceiptInvoiceService.java @@ -0,0 +1,25 @@ +package com.dxhy.erp.service; + + +import com.dxhy.erp.entity.BaseTDxRecordInvoice; + +import java.util.List; + +/** + * @author peipei.li + * @date 2019-04-23 进项税模块,底账表单表相关操作 + */ +@SuppressWarnings("AlibabaClassNamingShouldBeCamel") +public interface BaseIReceiptInvoiceService { + + + List selectByUuids(String[] uuids); + /** + * 进项税转出,批量 update 抵账表数据 + * + * @param condEntity + * 请求参数 + */ + void updateBatch(List condEntity); + +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/IReceiptOutService.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/IReceiptOutService.java new file mode 100644 index 00000000..565291f6 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/IReceiptOutService.java @@ -0,0 +1,14 @@ +package com.dxhy.erp.service; + +import com.dxhy.common.vo.UserInfo; +import com.dxhy.erp.entity.BaseInvoiceEditVO; +import com.dxhy.erp.model.ErpInvoiceData; + +/** + * @Author wangzhikun + * @Date 2022/12/24 2022/12/24 + */ +public interface IReceiptOutService { + + String transfer(ErpInvoiceData erpInvoiceData, BaseInvoiceEditVO baseInvoiceEditVO, UserInfo userInfo); +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/BaseIReceiptInvoiceServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/BaseIReceiptInvoiceServiceImpl.java new file mode 100644 index 00000000..f501dec6 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/BaseIReceiptInvoiceServiceImpl.java @@ -0,0 +1,45 @@ +package com.dxhy.erp.service.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.dxhy.common.service.impl.MpBaseServiceImpl; +import com.dxhy.erp.dao.BaseTDxRecordInvoiceDao; +import com.dxhy.erp.entity.BaseTDxRecordInvoice; +import com.dxhy.erp.service.BaseIReceiptInvoiceService; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @Author wangzhikun + * @Date 2022/12/24 2022/12/24 + */ + +/** + * @author peipei.li + * @date 2019-04-23 进项税模块,底账表单表相关操作 + */ +@SuppressWarnings("AlibabaUndefineMagicConstant") +@Service("baseIReceiptInvoiceService") +public class BaseIReceiptInvoiceServiceImpl extends MpBaseServiceImpl implements BaseIReceiptInvoiceService { + @Override + public List selectByUuids(String[] uuids) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().in(BaseTDxRecordInvoice::getUuid, uuids); + return super.list(queryWrapper); + } + + @Override + public void updateBatch(List condList) { + for (BaseTDxRecordInvoice entity : condList) { + LambdaUpdateWrapper updateWrapper = + new UpdateWrapper().lambda(); + updateWrapper.eq(BaseTDxRecordInvoice::getId, entity.getId()); + super.update(entity, updateWrapper); + } + super.succResult(new JSONObject()); + + } +} diff --git a/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ReceiptOutServiceImpl.java b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ReceiptOutServiceImpl.java new file mode 100644 index 00000000..bb833462 --- /dev/null +++ b/dxhy-erp/src/main/java/com/dxhy/erp/service/impl/ReceiptOutServiceImpl.java @@ -0,0 +1,245 @@ +package com.dxhy.erp.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.dxhy.common.constant.DbConstant; +import com.dxhy.common.datasource.config.DynamicContextHolder; +import com.dxhy.common.enums.JxszcCancelEnum; +import com.dxhy.common.enums.JxszcZtEnum; +import com.dxhy.common.service.impl.MpBaseServiceImpl; +import com.dxhy.common.utils.DateUtils; +import com.dxhy.common.utils.RRException; +import com.dxhy.common.vo.UserInfo; +import com.dxhy.erp.dao.BaseReceiptOutDao; +import com.dxhy.erp.entity.BaseInvoiceEditVO; +import com.dxhy.erp.entity.BaseTDxRecordInvoice; +import com.dxhy.erp.entity.BaseTDxRecordInvoiceOut; +import com.dxhy.erp.model.ErpInvoiceData; +import com.dxhy.erp.model.EsOutPutResp; +import com.dxhy.erp.service.BaseIReceiptInvoiceService; +import com.dxhy.erp.service.IReceiptOutService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @Author wangzhikun + * @Date 2022/12/24 2022/12/24 + */ +@Service +@Slf4j +public class ReceiptOutServiceImpl extends MpBaseServiceImpl + implements IReceiptOutService { + @Resource + BaseIReceiptInvoiceService baseIReceiptInvoiceService; + @Override + public String transfer(ErpInvoiceData erpInvoiceData, BaseInvoiceEditVO condVO, UserInfo userInfo) { + EsOutPutResp es = new EsOutPutResp(); + es.setSAPKEY(erpInvoiceData.getIS_INPUT().getSAPKEY()); + DynamicContextHolder.push("business"+DbConstant.BUSINESS_READ); + + String idStr = condVO.getPrimaryKey(); + String[] ids = idStr.split(","); + + // first:查询出底账表相关数据 + List invoices = baseIReceiptInvoiceService.selectByUuids(ids); + // second:根据uuids查询出转出明细并转为map,key=uuid ,value=转出明细 + List outs = listByUuids(ids); + Map outMap = + outs.stream().collect(Collectors.toMap(BaseTDxRecordInvoiceOut::getUuid, tri -> tri)); + + // third:设置底账表中的 进项税转出 部分相关字段 + List condList = setPartInvoiceByType(invoices, condVO, userInfo); + + List outList = new ArrayList<>(); + // fourth:对比流水明细,区分底账表list中需要update或者insert的数据 + invoices.forEach(invoice -> { + BaseTDxRecordInvoiceOut e = new BaseTDxRecordInvoiceOut(); + if (outMap.containsKey(invoice.getUuid())) { + e = outMap.get(invoice.getUuid()); + } + // 从构建的底账数据中(进项税转出相关字段),更新需要变更的流水字段 + e.setCompany(userInfo.getCompany()); + createInvoiceOut(condVO, userInfo, invoice, e); + outList.add(e); + }); + + DynamicContextHolder.push("business" + DbConstant.BUSINESS_WRITE); + excuteTransferWrite(condList, outList); + + return "success"; + } + /** + * 根据uuids查询进项税转出明细 + * + * @param uuids + * 请求参数 + * @return 返回结果 + */ + private List listByUuids(String[] uuids) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.lambda().in(BaseTDxRecordInvoiceOut::getUuid, uuids); + return super.list(queryWrapper); + } + /** + * 根据转出类型 set 抵账表中进项税转出相关字段 (部分转出 or 全部转出) + * + * @param invoices + * 请求参数 + * @param condVO + * 请求参数 + * @param userInfo + * 请求参数 + * @return 返回结果 + */ + private List setPartInvoiceByType(List invoices, + BaseInvoiceEditVO condVO, UserInfo userInfo) { + List condList = new ArrayList<>(); + for (BaseTDxRecordInvoice record : invoices) { + record.setOutBelongDate(condVO.getOutTaxPeriod()); + BaseTDxRecordInvoice condRecord = new BaseTDxRecordInvoice(); + condRecord.setId(record.getId()); + // 转出状态 + condRecord.setOutStatus(condVO.getOutStatus()); + // 转出原因 + condRecord.setOutReason(condVO.getOutReason()); + // 备注 + condRecord.setOutRemark(condVO.getOutRemark()); + // 转出日期 + condRecord.setOutDate(DateUtils.getNow()); + // 转出人 + condRecord.setOutBy(userInfo.getUsername()); + //转出金额取价税合计 + condRecord.setOutInvoiceAmout(record.getTotalAmount()); + // 税款所属期 + condRecord.setOutBelongDate(condVO.getOutTaxPeriod()); + + /*全部转出 */ + if (JxszcZtEnum.QBZC.getZcztDm().equals(condVO.getOutStatus())) { + // 转出金额 + condRecord.setOutInvoiceAmout(record.getInvoiceAmount()); + // 转出税额 + condRecord.setOutTaxAmount(record.getDkTaxAmount()); + } + /*部分转出 */ + if (JxszcZtEnum.BFZC.getZcztDm().equals(condVO.getOutStatus())) { + // 转出金额累加 + BigDecimal oldOutAmount = + record.getOutInvoiceAmout() == null ? new BigDecimal(0) : record.getOutInvoiceAmout(); + BigDecimal newOutAmount = oldOutAmount.add(new BigDecimal(condVO.getOutAmount())); + // -1=小于; 0=等于; 1=大于; + int compareOut = newOutAmount.compareTo(record.getInvoiceAmount()); + if (compareOut > 0) { + throw new RRException("累计转出金额不能大于发票金额"); + } + // 转出金额 + condRecord.setOutInvoiceAmout(newOutAmount); + + // 转出税额累加 + BigDecimal oldOutTax = record.getOutTaxAmount() == null ? new BigDecimal(0) : record.getOutTaxAmount(); + BigDecimal newOutTax = oldOutTax.add(new BigDecimal(condVO.getOutTax())); + int compareTax = newOutTax.compareTo(record.getDkTaxAmount()); + if (compareTax > 0) { + throw new RRException("累计转出税额不能大于发票税额"); + } + // 转出税额 + condRecord.setOutTaxAmount(newOutTax); + + if (compareOut == 0 && compareTax == 0) { + // 金额税额已经全部转完,设为 全部转出 + condRecord.setOutStatus(JxszcZtEnum.QBZC.getZcztDm()); + } + } + condList.add(condRecord); + + } + return condList; + } + /** + * 构建进项税转出明细 + * + * @param condVO + * 请求参数 + * @param userInfo + * 请求参数 + * @param invoice + * 请求参数 + * @param record + * 请求参数 + */ + private void createInvoiceOut(BaseInvoiceEditVO condVO, UserInfo userInfo, BaseTDxRecordInvoice invoice, + BaseTDxRecordInvoiceOut record) { + // uuid + record.setUuid(invoice.getUuid()); + // 发票号码 + record.setInvoiceNo(invoice.getInvoiceNo()); + // 发票代码 + record.setInvoiceCode(invoice.getInvoiceCode()); + record.setOutBelongDate(invoice.getOutBelongDate()); + // 转出状态 + record.setOutStatus(condVO.getOutStatus()); + + /* 全部转出 */ + if (JxszcZtEnum.QBZC.getZcztDm().equals(condVO.getOutStatus())) { + // 转出金额 + record.setOutInvoiceAmout(invoice.getInvoiceAmount()); + // 转出税额 + record.setOutTaxAmount(invoice.getDkTaxAmount()); + } + /* 部分转出 */ + if (JxszcZtEnum.BFZC.getZcztDm().equals(condVO.getOutStatus())) { + // 转出金额累加 + BigDecimal oldOutAmount = + record.getOutInvoiceAmout() == null ? new BigDecimal(0) : record.getOutInvoiceAmout(); + BigDecimal newOutAmount = oldOutAmount.add(new BigDecimal(condVO.getOutAmount())); + // -1=小于; 0=等于; 1=大于; + int compareOut = newOutAmount.compareTo(invoice.getInvoiceAmount()); + if (compareOut > 0) { + throw new RRException("累计转出金额不能大于发票金额"); + } + // 转出金额 + record.setOutInvoiceAmout(newOutAmount); + + // 转出税额累加 + BigDecimal oldOutTax = record.getOutTaxAmount() == null ? new BigDecimal(0) : record.getOutTaxAmount(); + BigDecimal newOutTax = oldOutTax.add(new BigDecimal(condVO.getOutTax())); + int compareTax = newOutTax.compareTo(invoice.getDkTaxAmount()); + if (compareTax > 0) { + throw new RRException("累计转出税额不能大于发票税额"); + } + // 转出税额 + record.setOutTaxAmount(newOutTax); + + // 金额税额全部转完,设置状态为 全部转出 + if (compareOut == 0 && compareTax == 0) { + record.setOutStatus(JxszcZtEnum.QBZC.getZcztDm()); + } + } + + // 转出日期 + record.setOutDate(DateUtils.getNow()); + // 转出原因 + record.setOutReason(condVO.getOutReason()); + // 备注 + record.setOutRemark(condVO.getOutRemark()); + // 转出人 + record.setOutBy(userInfo.getUsername()); + // 是否取消,默认未取消 + record.setIsCancel(JxszcCancelEnum.WQX.getQxztDm()); + } + @Transactional(rollbackFor = Exception.class) + public void excuteTransferWrite(List condList, List outList) { + // 流水表批量insert or update + saveOrUpdateBatch(outList); + // 抵账表批量update + baseIReceiptInvoiceService.updateBatch(condList); + } + + +}