diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationAddParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationAddParam.java
new file mode 100644
index 000000000..7104856ff
--- /dev/null
+++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationAddParam.java
@@ -0,0 +1,36 @@
+package com.engine.salary.entity.taxdeclaration.param;
+
+import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
+import com.engine.salary.util.valid.DataCheck;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 新增个税申报表参数
+ *
Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TaxDeclarationAddParam {
+
+ /**
+ * 个税申报记录id
+ */
+ @DataCheck(require = true, message = "个税申报记录id为空")
+ private Long taxDeclareRecordId;
+
+ /**
+ * 薪资类型
+ */
+ @DataCheck(require = true, message = "薪资类型为空")
+ private IncomeCategoryEnum incomeCategory;
+
+}
diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationDeleteParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationDeleteParam.java
new file mode 100644
index 000000000..aac346fb1
--- /dev/null
+++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclarationDeleteParam.java
@@ -0,0 +1,29 @@
+package com.engine.salary.entity.taxdeclaration.param;
+
+import com.engine.salary.util.valid.DataCheck;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 删除个税申报表参数
+ * Copyright: Copyright (c) 2022
+ * Company: 泛微软件
+ *
+ * @author qiantao
+ * @version 1.0
+ **/
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TaxDeclarationDeleteParam {
+
+ /**
+ * 个税申报表id
+ */
+ @DataCheck(require = true, message = "个税申报表id为空")
+ private Long taxDeclarationId;
+
+}
diff --git a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordParam.java b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordParam.java
index 7e94fcc2e..673fd4aa8 100644
--- a/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordParam.java
+++ b/src/com/engine/salary/entity/taxdeclaration/param/TaxDeclareRecordParam.java
@@ -1,5 +1,6 @@
package com.engine.salary.entity.taxdeclaration.param;
+import com.engine.salary.util.valid.DataCheck;
import lombok.Data;
/**
diff --git a/src/com/engine/salary/service/TaxDeclarationService.java b/src/com/engine/salary/service/TaxDeclarationService.java
index 91b38c3eb..ef4c71fd1 100644
--- a/src/com/engine/salary/service/TaxDeclarationService.java
+++ b/src/com/engine/salary/service/TaxDeclarationService.java
@@ -3,6 +3,8 @@ package com.engine.salary.service;
import com.engine.salary.common.YearMonthRange;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
+import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationAddParam;
+import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationDeleteParam;
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam;
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam;
import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO;
@@ -73,4 +75,12 @@ public interface TaxDeclarationService {
*/
List listByTaxCycleRange(YearMonthRange yearMonthRange);
+
+ /**
+ * 新增申报表
+ * @param param
+ */
+ void addTaxDeclaration(TaxDeclarationAddParam param);
+
+ void deleteTaxDeclaration(TaxDeclarationDeleteParam param);
}
diff --git a/src/com/engine/salary/service/TaxDeclarationValueService.java b/src/com/engine/salary/service/TaxDeclarationValueService.java
index 969292efb..3d12b5350 100644
--- a/src/com/engine/salary/service/TaxDeclarationValueService.java
+++ b/src/com/engine/salary/service/TaxDeclarationValueService.java
@@ -36,7 +36,7 @@ public interface TaxDeclarationValueService {
* @return
*/
List listByTaxDeclarationIds(Collection taxDeclarationIds);
- List listByTaxDeclarationId(Long taxDeclarationIds);
+ List listByTaxDeclarationId(Long taxDeclarationId);
/**
* 查询个税申报表明细
diff --git a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java
index d69513ae0..34019ce42 100644
--- a/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java
+++ b/src/com/engine/salary/service/impl/TaxDeclarationServiceImpl.java
@@ -4,16 +4,23 @@ import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.salary.common.LocalDateRange;
import com.engine.salary.common.YearMonthRange;
+import com.engine.salary.constant.SalaryDefaultTenantConstant;
import com.engine.salary.entity.salaryacct.po.SalaryAcctRecordPO;
import com.engine.salary.entity.salaryacct.po.SalaryAcctResultPO;
import com.engine.salary.entity.salaryitem.po.SalaryItemPO;
import com.engine.salary.entity.salarysob.po.SalarySobPO;
import com.engine.salary.entity.taxagent.po.TaxAgentPO;
import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationBO;
+import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationAddParam;
+import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationDeleteParam;
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam;
import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam;
import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO;
+import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationValuePO;
+import com.engine.salary.entity.taxdeclaration.po.TaxDeclareRecordPO;
import com.engine.salary.enums.salaryaccounting.SalaryAcctRecordStatusEnum;
+import com.engine.salary.enums.salarysob.IncomeCategoryEnum;
+import com.engine.salary.enums.sicategory.DeleteTypeEnum;
import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.mapper.datacollection.AddUpSituationMapper;
import com.engine.salary.mapper.salaryacct.SalaryAcctRecordMapper;
@@ -25,6 +32,8 @@ import com.engine.salary.util.SalaryI18nUtil;
import com.engine.salary.util.db.MapperProxyFactory;
import com.engine.salary.util.page.PageInfo;
import com.engine.salary.util.page.SalaryPageUtil;
+import com.engine.salary.util.valid.ValidUtil;
+import dm.jdbc.util.IdGenerator;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.BooleanUtils;
@@ -84,6 +93,16 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration
return ServiceUtil.getService(SalaryAcctEmployeeServiceImpl.class, user);
}
+
+ private TaxDeclareRecordService getTaxDeclareRecordService(User user) {
+ return ServiceUtil.getService(TaxDeclareRecordServiceImpl.class, user);
+ }
+
+ private TaxDeclarationValueService getTaxDeclarationValueService(User user) {
+ return ServiceUtil.getService(TaxDeclarationValueServiceImpl.class, user);
+ }
+
+
@Override
public List listByTaxCycleAndTaxAgentIds(YearMonth taxCycle, Collection taxAgentIds) {
if (Objects.isNull(taxCycle) || CollectionUtils.isEmpty(taxAgentIds)) {
@@ -102,8 +121,9 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration
TaxDeclarationPO po = TaxDeclarationPO.builder().taxDeclareRecordId(taxDeclareRecordId).build();
return getTaxDeclarationMapper().listSome(po);
}
+
@Override
- public List listByTaxDeclareRecordId(Long taxDeclareRecordId,Integer incomeCategory) {
+ public List listByTaxDeclareRecordId(Long taxDeclareRecordId, Integer incomeCategory) {
if (Objects.isNull(taxDeclareRecordId)) {
throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(84026, "参数错误"));
}
@@ -383,4 +403,76 @@ public class TaxDeclarationServiceImpl extends Service implements TaxDeclaration
.salaryMonths(LocalDateRange.builder().fromDate(yearMonthRange.getStartMonth()).endDate(yearMonthRange.getEndMonth()).build())
.build());
}
+
+
+ /**
+ * 新增申报表
+ *
+ * @param param
+ */
+ @Override
+ public void addTaxDeclaration(TaxDeclarationAddParam param) {
+ ValidUtil.doValidator(param);
+
+ Long taxDeclareRecordId = param.getTaxDeclareRecordId();
+ IncomeCategoryEnum incomeCategory = param.getIncomeCategory();
+
+ TaxDeclareRecordPO taxDeclareRecord = getTaxDeclareRecordService(user).getById(taxDeclareRecordId);
+ if (taxDeclareRecord == null) {
+ throw new SalaryRunTimeException("申报记录不存在!");
+ }
+
+ List taxDeclarations = listByTaxDeclareRecordId(taxDeclareRecordId);
+ Optional first = taxDeclarations.stream().filter(taxDeclarationPO -> incomeCategory.getValue().equals(taxDeclarationPO.getIncomeCategory())).findFirst();
+ if (first.isPresent()) {
+ throw new SalaryRunTimeException("已存在" + incomeCategory.getDefaultLabel() + "申报表");
+ }
+
+ Date now = new Date();
+ TaxDeclarationPO taxDeclaration = TaxDeclarationPO
+ .builder()
+ .id(IdGenerator.generate())
+ .taxDeclareRecordId(taxDeclareRecord.getId())
+ .incomeCategory(incomeCategory.getValue())
+ .taxAgentId(taxDeclareRecord.getTaxAgentId())
+ .salaryMonth(taxDeclareRecord.getSalaryMonth())
+ .taxCycle(taxDeclareRecord.getTaxCycle())
+ .description(taxDeclareRecord.getRemark())
+ .controlView(0)
+ .creator((long) user.getUID())
+ .createTime(now)
+ .updateTime(now)
+ .deleteType(DeleteTypeEnum.NOT_DELETED.getValue())
+ .tenantKey(SalaryDefaultTenantConstant.DEFAULT_TENANT_KEY)
+ .build();
+ List objects = new ArrayList<>();
+ objects.add(taxDeclaration);
+ getTaxDeclarationMapper().batchInsert(objects);
+ }
+
+
+ /**
+ * 新增申报表
+ *
+ * @param param
+ */
+ @Override
+ public void deleteTaxDeclaration(TaxDeclarationDeleteParam param) {
+ ValidUtil.doValidator(param);
+ Long taxDeclarationId = param.getTaxDeclarationId();
+ TaxDeclarationPO declarationPO = getById(taxDeclarationId);
+
+ if (declarationPO == null) {
+ throw new SalaryRunTimeException("申报表不存在!");
+ }
+
+ List taxDeclarationValuePOS = getTaxDeclarationValueService(user).listByTaxDeclarationId(taxDeclarationId);
+
+ if (CollectionUtils.isNotEmpty(taxDeclarationValuePOS)) {
+ throw new SalaryRunTimeException("存在申报明细不允许删除,请先删除申报表明细!");
+ }
+
+ getTaxDeclarationMapper().deleteByIdZj(taxDeclarationId);
+ }
+
}
diff --git a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java
index 7f388cf8f..29a6d6492 100644
--- a/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java
+++ b/src/com/engine/salary/service/impl/TaxDeclareRecordServiceImpl.java
@@ -1064,6 +1064,7 @@ public class TaxDeclareRecordServiceImpl extends Service implements TaxDeclareRe
getTaxDeclareRecordMapper().updateIgnoreNull(taxDeclareRecord);
}
+
private TaxDeclareRequest buildTaxDeclareRequest(Long id) {
// 查询供应商信息
TaxDeclarationApiConfigPO apiConfig = getTaxDeclarationApiConfigService(user).getConfig(true);
diff --git a/src/com/engine/salary/web/TaxDeclarationController.java b/src/com/engine/salary/web/TaxDeclarationController.java
index dc61a0458..c0d6944f9 100644
--- a/src/com/engine/salary/web/TaxDeclarationController.java
+++ b/src/com/engine/salary/web/TaxDeclarationController.java
@@ -134,7 +134,7 @@ public class TaxDeclarationController {
}
/**
- * 删除个税申报表
+ * 删除个税申报记录
*
* @param ids 个税申报记录id
* @return
@@ -175,6 +175,36 @@ public class TaxDeclarationController {
return new ResponseResult>(user).run(getTaxDeclareRecordWrapper(user)::getTaxDeclarationTab, id);
}
+ /**
+ * 新增个税申报记录下的个税申报表TAB
+ *
+ * @param param 个税申报记录id
+ * @return
+ */
+ @POST
+ @Path("/addTaxDeclaration")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String addTaxDeclarationTab(@Context HttpServletRequest request, @Context HttpServletResponse response,TaxDeclarationAddParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::addTaxDeclaration, param);
+ }
+
+ /**
+ * 删除申报表
+ * @param request
+ * @param response
+ * @param param
+ * @return
+ */
+ @POST
+ @Path("/deleteTaxDeclaration")
+ @Produces(MediaType.APPLICATION_JSON)
+ public String deleteTaxDeclaration(@Context HttpServletRequest request, @Context HttpServletResponse response,TaxDeclarationDeleteParam param) {
+ User user = HrmUserVarify.getUser(request, response);
+ return new ResponseResult(user).run(getTaxDeclareRecordWrapper(user)::deleteTaxDeclaration, param);
+ }
+
+
/**
* 在线申报
*
diff --git a/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java b/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java
index aa39752db..d98b8a419 100644
--- a/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java
+++ b/src/com/engine/salary/wrapper/TaxDeclarationWrapper.java
@@ -2,35 +2,14 @@ package com.engine.salary.wrapper;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
-import com.engine.salary.component.WeaFormOption;
-import com.engine.salary.entity.datacollection.DataCollectionEmployee;
-import com.engine.salary.entity.taxagent.po.TaxAgentPO;
-import com.engine.salary.entity.taxdeclaration.bo.TaxDeclarationBO;
-import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationFormDTO;
-import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationInfoDTO;
-import com.engine.salary.entity.taxdeclaration.dto.TaxDeclarationListDTO;
-import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationListQueryParam;
-import com.engine.salary.entity.taxdeclaration.param.TaxDeclarationSaveParam;
-import com.engine.salary.entity.taxdeclaration.po.TaxDeclarationPO;
-import com.engine.salary.exception.SalaryRunTimeException;
import com.engine.salary.service.SalaryEmployeeService;
import com.engine.salary.service.TaxAgentService;
import com.engine.salary.service.TaxDeclarationService;
import com.engine.salary.service.impl.SalaryEmployeeServiceImpl;
import com.engine.salary.service.impl.TaxAgentServiceImpl;
import com.engine.salary.service.impl.TaxDeclarationServiceImpl;
-import com.engine.salary.util.SalaryDateUtil;
-import com.engine.salary.util.SalaryEntityUtil;
-import com.engine.salary.util.SalaryI18nUtil;
-import com.engine.salary.util.page.PageInfo;
-import com.google.common.collect.Lists;
-import org.apache.commons.collections4.CollectionUtils;
import weaver.hrm.User;
-import java.text.SimpleDateFormat;
-import java.util.*;
-import java.util.stream.Collectors;
-
/**
* 个税申报表
* Copyright: Copyright (c) 2022
@@ -53,106 +32,4 @@ public class TaxDeclarationWrapper extends Service {
return ServiceUtil.getService(SalaryEmployeeServiceImpl.class, user);
}
- /**
- * 个税申报表列表
- *
- * @param queryParam 列表查询条件
- * @param
- * @return
- */
- public PageInfo listPage(TaxDeclarationListQueryParam queryParam) {
- // 询个税申报表(分页)
- PageInfo page = getTaxDeclarationService(user).listPageByParam(queryParam);
- PageInfo dtoPage = new PageInfo(TaxDeclarationListDTO.class);
- dtoPage.setPageNum(queryParam.getCurrent());
- dtoPage.setPageSize(queryParam.getPageSize());
- dtoPage.setTotal(page.getTotal());
- List list = page.getList();
- if (CollectionUtils.isNotEmpty(list)) {
- // 查询人员
- List employeeIds = SalaryEntityUtil.properties(list, TaxDeclarationPO::getCreator, Collectors.toList());
- List employeeComInfos = getSalaryEmployeeService(user).getEmployeeByIdsAll(employeeIds);
- // 查询个税扣缴义务人
- Set taxAgentIds = SalaryEntityUtil.properties(list, TaxDeclarationPO::getTaxAgentId);
- List taxAgentPOS = getTaxDeclarationService(user).countByTaxDeclarationId(taxAgentIds);
- // 转换成列表dto
- List taxDeclarationListDTOS = TaxDeclarationBO.convert2ListDTO(list, employeeComInfos, taxAgentPOS);
- dtoPage.setList(taxDeclarationListDTOS);
- }
- return dtoPage;
- }
-
-
- public TaxDeclarationFormDTO getForm(Long id) {
- TaxDeclarationFormDTO formDTO = new TaxDeclarationFormDTO();
- if (Objects.nonNull(id)) {
- // 查询个税申报表
- TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(id);
- if (Objects.isNull(taxDeclaration)) {
- throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98877, "个税申报表不存在或已删除"));
- }
- // 查询个税扣缴义务人
- TaxAgentPO taxAgent = getTaxAgentService(user).getById(id);
- //日期转换
- SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM");
- String transformDate = simpleDateFormat.format(taxDeclaration.getSalaryMonth());
- // 转换成个税申报表详情dto
- formDTO = TaxDeclarationFormDTO.builder().salaryMonth(SalaryDateUtil.String2YearMonth(transformDate)).taxAgentId(taxDeclaration.getTaxAgentId()).taxAgentName(Optional.ofNullable(taxAgent).map(TaxAgentPO::getName).orElse("")).description(taxDeclaration.getDescription()).build();
- }
- // 转换成前端所需的数据格式
- // WeaForm weaForm = SalaryFormatUtil.getInstance().buildForm(TaxDeclarationFormDTO.class, formDTO);
-
- // 查询租户所有的个税扣缴义务人
- Collection taxAgentListDTOS = getTaxAgentService(user).listAll();
- // 表单中个税扣缴义务人的可选项
- List weaFormOptions = Lists.newArrayListWithExpectedSize(taxAgentListDTOS.size());
- for (TaxAgentPO taxAgent : taxAgentListDTOS) {
- weaFormOptions.add(new WeaFormOption("" + taxAgent.getId(), taxAgent.getName()));
- }
-// weaForm.getItems().forEach((k, v) -> {
-// if (StringUtils.equals("taxAgentId", k)) {
-// v.setOptions(weaFormOptions);
-// }
-// if (StringUtils.equals("salaryMonth", k)) {
-// Map otherParams = new HashMap<>();
-// otherParams.put("type", "month");
-// v.setOtherParams(otherParams);
-// }
-// });
- return formDTO;
- }
-
- /**
- * 查询个税申报表的基本信息
- *
- * @param id 个税申报表id
- * @return
- */
- public TaxDeclarationInfoDTO getTaxDeclarationInfoById(Long id) {
- // 查询个税申报表
- TaxDeclarationPO taxDeclaration = getTaxDeclarationService(user).getById(id);
- if (Objects.isNull(taxDeclaration)) {
- throw new SalaryRunTimeException(SalaryI18nUtil.getI18nLabel(98877, "个税申报表不存在或已删除"));
- }
- // 查询个税扣缴义务人
- TaxAgentPO taxAgentPO = getTaxAgentService(user).getById(taxDeclaration.getTaxAgentId());
- return TaxDeclarationInfoDTO.builder().salaryMonth(taxDeclaration.getSalaryMonth()).taxAgentId(taxDeclaration.getTaxAgentId()).taxAgentName(Optional.ofNullable(taxAgentPO).map(TaxAgentPO::getName).orElse("")).build();
- }
-
- /**
- * 保存
- *
- * @param saveParam 保存参数
- */
- public void save(TaxDeclarationSaveParam saveParam) {
- getTaxDeclarationService(user).save(saveParam);
- }
-
- /**
- * 撤回个税申报
- * @param taxDeclarationId
- */
- public void withDrawTaxDeclaration(Long taxDeclarationId) {
- getTaxDeclarationService(user).withDrawTaxDeclaration(taxDeclarationId);
- }
}
diff --git a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java
index fed3fbe32..8c8f7be2b 100644
--- a/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java
+++ b/src/com/engine/salary/wrapper/TaxDeclareRecordWrapper.java
@@ -310,6 +310,19 @@ public class TaxDeclareRecordWrapper extends Service {
return tabs;
}
+ /**
+ * 新增申报表
+ * @param param
+ */
+ public void addTaxDeclaration(TaxDeclarationAddParam param) {
+ getTaxDeclarationService(user).addTaxDeclaration(param);
+ }
+
+
+ public void deleteTaxDeclaration(TaxDeclarationDeleteParam param) {
+ getTaxDeclarationService(user).deleteTaxDeclaration(param);
+ }
+
/**
* 查询个税申报表的基本信息
*
@@ -767,4 +780,5 @@ public class TaxDeclareRecordWrapper extends Service {
public Map importData(DownloadTemplateParam param) {
return getTaxDeclarationExcelService(user).importData(param);
}
+
}