refactor(delete-data): 优化删除 U8C 数据的逻辑和范围
- 新增查询方法 querySoSaleByDbilldate,用于获取指定日期范围内的销售订单 - 优化取消签字、弃审、删除等操作的逻辑,提高处理效率 - 增加对销售订单、发票、出库单等的批量处理支持 -改进错误处理和日志记录,提升代码健壮性
This commit is contained in:
parent
b439f4c49c
commit
6f2776a952
|
@ -31,7 +31,36 @@ public class DeleteU8cDataUtilTest4 {
|
|||
//销售出库单签字 已测试
|
||||
// deleteU8cDataUtil.saleOutSign("'0001A110000000001TH6', '0001A1100000000VKCOK'");
|
||||
|
||||
deleteU8cDataUtil.abandoningReviewAccReceDoc();
|
||||
// deleteU8cDataUtil.abandoningReviewAccReceDoc();
|
||||
|
||||
// deleteU8cDataUtil.cancelSignatureSoSaleReadExcel20250528V2();
|
||||
// deleteU8cDataUtil.abandonmentReviewSoSaleinvoice2505282107();
|
||||
|
||||
// deleteU8cDataUtil.cancelSignatureSoSaleReadExcel2505282140V2();
|
||||
|
||||
// deleteU8cDataUtil.repairSoSaleDepartment();
|
||||
|
||||
// deleteU8cDataUtil.salesOrderReviewV2();
|
||||
|
||||
// deleteU8cDataUtil.cancelSignatureSoSaleReadExcel20250528V2();
|
||||
|
||||
// deleteU8cDataUtil.repairSoSaleDepartment();
|
||||
|
||||
// deleteU8cDataUtil.salesOrderReviewV2();
|
||||
|
||||
// deleteU8cDataUtil.repairSoSaleDepartment();
|
||||
|
||||
|
||||
|
||||
|
||||
//弃审应收单
|
||||
// deleteU8cDataUtil.abandoningReviewAccReceDocV2();
|
||||
//弃审+删除发票
|
||||
// deleteU8cDataUtil.abandonmentReviewSoSaleinvoice2505282107();
|
||||
//取消签字+删除销售出库单
|
||||
// deleteU8cDataUtil.cancelSignatureSoSaleReadExcel20250528V2();
|
||||
//取消审批销售订单+删除销售订单
|
||||
// deleteU8cDataUtil.cancelSignatureSoSaleReadExcel2505282140V2();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import org.apache.poi.ss.usermodel.Row;
|
|||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
@ -113,13 +114,22 @@ public class DeleteU8cDataUtil {
|
|||
// repairSoSaleDepartment();
|
||||
//销售订单审核
|
||||
// salesOrderReviewV2();
|
||||
|
||||
//弃审应收单
|
||||
// abandoningReviewAccReceDocV2();
|
||||
//弃审+删除发票
|
||||
// abandonmentReviewSoSaleinvoice2505282107();
|
||||
//取消签字+删除销售出库单
|
||||
// cancelSignatureSoSaleReadExcel20250528V2();
|
||||
//取消审批销售订单+删除销售订单
|
||||
// cancelSignatureSoSaleReadExcel2505282140V2();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
// Thread.currentThread().interrupt();
|
||||
// throw new RuntimeException("等待线程完成时中断", e);
|
||||
}
|
||||
}
|
||||
}, "U8C单据逻辑处理:销售订单审核");
|
||||
}, "U8C单据逻辑处理:应收单、销售发票、销售出库单、销售订单");
|
||||
thread000.start();
|
||||
}
|
||||
|
||||
|
@ -1096,9 +1106,8 @@ public class DeleteU8cDataUtil {
|
|||
*/
|
||||
public void cancelSignatureSoSaleReadExcel20250528V2() {
|
||||
try {
|
||||
//确定销售订单范围、19648
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V2();
|
||||
|
||||
//确定销售订单范围
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities = deleteU8cDataUtilDao.querySoSaleByDbilldate();
|
||||
//按100行拆分
|
||||
List<List<DeleteU8cDataUtilEntity>> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 100);
|
||||
if (lists.size() > 0) {
|
||||
|
@ -1200,8 +1209,8 @@ public class DeleteU8cDataUtil {
|
|||
*/
|
||||
public void abandonmentReviewSoSaleinvoice2505282107() {
|
||||
try {
|
||||
//确定销售订单范围、19648
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V2();
|
||||
//确定销售订单范围
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities = deleteU8cDataUtilDao.querySoSaleByDbilldate();
|
||||
List<List<DeleteU8cDataUtilEntity>> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 500);
|
||||
if (lists.size() > 0) {
|
||||
for (int i = 0; i < lists.size(); i++) {
|
||||
|
@ -1287,7 +1296,9 @@ public class DeleteU8cDataUtil {
|
|||
soSaleinvoiceEntity2.setDataSourceCode("lets_u8c");
|
||||
soSaleinvoiceEntity2.setCsaleid(concatenatedIds);
|
||||
List<DeleteU8cDataUtilEntity> soSaleinvoiceEntities2 = deleteU8cDataUtilDao.querySoSaleinvoiceByCancelApprovalV2(soSaleinvoiceEntity2);
|
||||
soSaleinvoiceEntities2All.addAll(soSaleinvoiceEntities2);
|
||||
if (soSaleinvoiceEntities2 != null && soSaleinvoiceEntities2.size() > 0) {
|
||||
soSaleinvoiceEntities2All.addAll(soSaleinvoiceEntities2);
|
||||
}
|
||||
}
|
||||
if (soSaleinvoiceEntities2All.size() > 0) {
|
||||
Thread.sleep(10000);
|
||||
|
@ -1299,12 +1310,12 @@ public class DeleteU8cDataUtil {
|
|||
}
|
||||
|
||||
/**
|
||||
* 销售订单取消签字
|
||||
* 销售订单取消签字+删除
|
||||
*/
|
||||
public void cancelSignatureSoSaleReadExcel2505282140V2() {
|
||||
try {
|
||||
//确定销售订单范围、19648
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V2();
|
||||
//确定销售订单范围
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities = deleteU8cDataUtilDao.querySoSaleByDbilldate();
|
||||
if (deleteU8cDataUtilEntities.size() > 0) {
|
||||
List<List<DeleteU8cDataUtilEntity>> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 500);
|
||||
for (int i = 0; i < lists.size(); i++) {
|
||||
|
@ -1342,22 +1353,52 @@ public class DeleteU8cDataUtil {
|
|||
sendU8C("http://39.170.109.90:8088/u8cloud/api/so/saleorder/unapprove", JSON.toJSONString(jsonRootBeanCancelSignature), vreceiptcodeList.size());
|
||||
}
|
||||
}
|
||||
|
||||
//销售订单删除
|
||||
DeleteSoSaleVo deleteSoSaleVo2 = new DeleteSoSaleVo();
|
||||
deleteSoSaleVo2.setDataSourceCode("lets_u8c");
|
||||
deleteSoSaleVo2.setCsaleids(concatenatedIds);
|
||||
deleteSoSaleVo2.setFstatus("1");
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities3 = deleteU8cDataUtilDao.querySoSaleByDeletev2(deleteSoSaleVo2);
|
||||
Map<String, List<DeleteU8cDataUtilEntity>> deleteU8cDataUtilEntitiesMap2 = groupByDbilldatev2(deleteU8cDataUtilEntities3);
|
||||
if (deleteU8cDataUtilEntitiesMap2.size() > 0) {
|
||||
for (Map.Entry<String, List<DeleteU8cDataUtilEntity>> entry : deleteU8cDataUtilEntitiesMap2.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
List<DeleteU8cDataUtilEntity> valueList = entry.getValue();
|
||||
List<String> vreceiptcodeList = valueList.stream().map(DeleteU8cDataUtilEntity::getVreceiptcode).collect(Collectors.toList());
|
||||
|
||||
String[] split = key.split("@@@@");
|
||||
|
||||
Queryinfo queryinfo = new Queryinfo();
|
||||
queryinfo.setCorp(split[1]);
|
||||
queryinfo.setDate_begin(split[0]);
|
||||
queryinfo.setDate_end(split[0]);
|
||||
queryinfo.setCode(vreceiptcodeList);
|
||||
|
||||
Deleteinfo deleteinfo = new Deleteinfo();
|
||||
deleteinfo.setCoperator("tbadmin");
|
||||
|
||||
JsonRootBean jsonRootBean = new JsonRootBean();
|
||||
jsonRootBean.setDeleteinfo(deleteinfo);
|
||||
jsonRootBean.setQueryinfo(queryinfo);
|
||||
sendU8C("http://39.170.109.90:8088/u8cloud/api/so/saleorder/delete", JSON.toJSONString(jsonRootBean), vreceiptcodeList.size());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities22All = new ArrayList<>();
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities2 = deleteU8cDataUtilDao.cancelSignatureSoSaleReadExcel20250528V2();
|
||||
if (deleteU8cDataUtilEntities2 != null) {
|
||||
List<List<DeleteU8cDataUtilEntity>> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 999);
|
||||
for (int i = 0; i < lists.size(); i++) {
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities1 = lists.get(i);
|
||||
String concatenatedIds = deleteU8cDataUtilEntities1.stream().map(DeleteU8cDataUtilEntity::getCsaleid).map(csaleid -> "'" + csaleid + "'").collect(Collectors.joining(","));
|
||||
List<List<DeleteU8cDataUtilEntity>> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 999);
|
||||
for (int i = 0; i < lists.size(); i++) {
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities1 = lists.get(i);
|
||||
String concatenatedIds = deleteU8cDataUtilEntities1.stream().map(DeleteU8cDataUtilEntity::getCsaleid).map(csaleid -> "'" + csaleid + "'").collect(Collectors.joining(","));
|
||||
|
||||
DeleteSoSaleVo deleteSoSaleVo = new DeleteSoSaleVo();
|
||||
deleteSoSaleVo.setDataSourceCode("lets_u8c");
|
||||
deleteSoSaleVo.setCsaleids(concatenatedIds);
|
||||
deleteSoSaleVo.setFstatus("2,6");
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities22 = deleteU8cDataUtilDao.querySoSaleByDeletev2(deleteSoSaleVo);
|
||||
DeleteSoSaleVo deleteSoSaleVo = new DeleteSoSaleVo();
|
||||
deleteSoSaleVo.setDataSourceCode("lets_u8c");
|
||||
deleteSoSaleVo.setCsaleids(concatenatedIds);
|
||||
// deleteSoSaleVo.setFstatus("2,6");
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities22 = deleteU8cDataUtilDao.querySoSaleByDeletev2(deleteSoSaleVo);
|
||||
if (deleteU8cDataUtilEntities22 != null && deleteU8cDataUtilEntities22.size() > 0) {
|
||||
deleteU8cDataUtilEntities22All.addAll(deleteU8cDataUtilEntities22);
|
||||
}
|
||||
}
|
||||
|
@ -1593,4 +1634,69 @@ public class DeleteU8cDataUtil {
|
|||
// }
|
||||
// return resultMap;
|
||||
// }
|
||||
|
||||
/**
|
||||
* 弃审应收单
|
||||
*
|
||||
* @author liuyang
|
||||
*/
|
||||
public void abandoningReviewAccReceDocV2() {
|
||||
try {
|
||||
//查询指定范围内的销售订单
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities = deleteU8cDataUtilDao.querySoSaleByDbilldate();
|
||||
if (deleteU8cDataUtilEntities.size() > 0) {
|
||||
List<List<DeleteU8cDataUtilEntity>> lists = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 100);
|
||||
for (int i = 0; i < lists.size(); i++) {
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities1 = lists.get(i);
|
||||
String concatenatedIds = deleteU8cDataUtilEntities1.stream().map(DeleteU8cDataUtilEntity::getCsaleid).map(csaleid -> "'" + csaleid + "'").collect(Collectors.joining(","));
|
||||
|
||||
//根据销售订单主键,查询对应的应收单
|
||||
DeleteSoSaleVo deleteSoSaleVo = new DeleteSoSaleVo();
|
||||
deleteSoSaleVo.setCsaleid(concatenatedIds);
|
||||
deleteSoSaleVo.setSpzt("1");
|
||||
List<ArapDjzbVo> arapDjzbVos = deleteU8cDataUtilDao.abandonmentAccountsReceivableDocV2(deleteSoSaleVo);
|
||||
if (arapDjzbVos.size() > 0) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String dateString = sdf.format(new Date());
|
||||
|
||||
List<Map<String, String>> mapList = new ArrayList<>();
|
||||
|
||||
for (int j = 0; j < arapDjzbVos.size(); j++) {
|
||||
ArapDjzbVo arapDjzbVo = arapDjzbVos.get(j);
|
||||
Map<String, String> stringStringMap = new HashMap<>();
|
||||
stringStringMap.put("djbh", arapDjzbVo.getDjbh());//单据编码
|
||||
stringStringMap.put("dwbm", arapDjzbVo.getUnitcode());//公司编码
|
||||
stringStringMap.put("operatorid", "18846145294");//操作人编码
|
||||
stringStringMap.put("operatedate", dateString);//操作日期
|
||||
mapList.add(stringStringMap);
|
||||
}
|
||||
|
||||
Map<String, List<Map<String, String>>> stringStringMap2 = new HashMap<>();
|
||||
stringStringMap2.put("bills", mapList);
|
||||
sendU8C("http://39.170.109.90:8088/u8cloud/api/arap/ys/unaudit", JSON.toJSONString(stringStringMap2), 1);
|
||||
}
|
||||
}
|
||||
|
||||
List<ArapDjzbVo> arapDjzbVosAll = new ArrayList<>();
|
||||
List<List<DeleteU8cDataUtilEntity>> lists2 = SplitListByCountUtil.splitListByCount(deleteU8cDataUtilEntities, 1000);
|
||||
for (int i = 0; i < lists2.size(); i++) {
|
||||
List<DeleteU8cDataUtilEntity> deleteU8cDataUtilEntities1 = lists2.get(i);
|
||||
String concatenatedIds = deleteU8cDataUtilEntities1.stream().map(DeleteU8cDataUtilEntity::getCsaleid).map(csaleid -> "'" + csaleid + "'").collect(Collectors.joining(","));
|
||||
DeleteSoSaleVo deleteSoSaleVo = new DeleteSoSaleVo();
|
||||
deleteSoSaleVo.setCsaleid(concatenatedIds);
|
||||
deleteSoSaleVo.setSpzt("1");
|
||||
List<ArapDjzbVo> arapDjzbVos = deleteU8cDataUtilDao.abandonmentAccountsReceivableDocV2(deleteSoSaleVo);
|
||||
if (arapDjzbVos != null && arapDjzbVos.size() > 0) {
|
||||
arapDjzbVosAll.addAll(arapDjzbVos);
|
||||
}
|
||||
}
|
||||
if (arapDjzbVosAll.size() > 0) {
|
||||
Thread.sleep(10000);
|
||||
abandoningReviewAccReceDocV2();
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -5,6 +5,7 @@ public class JsonRootBeanCancelSignature {
|
|||
private QueryinfoCancelSignature queryinfo;
|
||||
private ApproveinfoCancelSignature approveinfo;
|
||||
|
||||
|
||||
public QueryinfoCancelSignature getQueryinfo() {
|
||||
return queryinfo;
|
||||
}
|
||||
|
|
|
@ -128,4 +128,11 @@ public interface DeleteU8cDataUtilDao extends IBaseDao<DeleteU8cDataUtilEntity,
|
|||
* @author liuyang
|
||||
*/
|
||||
List<DeleteU8cDataUtilEntity> cancelSignatureSoSaleReadExcel20250528V3() throws Exception;
|
||||
|
||||
/**
|
||||
* 查询已审核的应收单
|
||||
*
|
||||
* @author liuyang
|
||||
*/
|
||||
List<DeleteU8cDataUtilEntity> querySoSaleByDbilldate() throws Exception;
|
||||
}
|
|
@ -120,4 +120,10 @@ public class DeleteU8cDataUtilDaoImpl extends MybatisGenericDao<DeleteU8cDataUti
|
|||
public List<DeleteU8cDataUtilEntity> cancelSignatureSoSaleReadExcel20250528V3() throws Exception {
|
||||
return query("com.hzya.frame.deletedata.dao.impl.DeleteU8cDataUtilDaoImpl.cancelSignatureSoSaleReadExcel20250528V3", new DeleteU8cDataUtilEntity());
|
||||
}
|
||||
|
||||
@DS("lets_u8c")
|
||||
@Override
|
||||
public List<DeleteU8cDataUtilEntity> querySoSaleByDbilldate() throws Exception {
|
||||
return query("com.hzya.frame.deletedata.dao.impl.DeleteU8cDataUtilDaoImpl.querySoSaleByDbilldate", new DeleteU8cDataUtilEntity());
|
||||
}
|
||||
}
|
|
@ -415,10 +415,7 @@
|
|||
<if test="spzt!=null and spzt!=''">
|
||||
AND a.spzt in (${spzt})
|
||||
</if>
|
||||
<if test="spztnull!=null and spztnull='1'">
|
||||
AND a.spzt is null
|
||||
</if>
|
||||
AND a.spzt in (${spzt})
|
||||
AND a.djdl = 'ys'
|
||||
AND a.dr = 0
|
||||
</select>
|
||||
|
||||
|
@ -477,5 +474,19 @@
|
|||
and a.fstatus in (1)
|
||||
-- and a.csaleid = '1015A11000000000SIO8'
|
||||
</select>
|
||||
|
||||
<!--查询需要处理的销售订单2025年6月7日15:11:48-->
|
||||
<select id="querySoSaleByDbilldate" parameterType="com.hzya.frame.deletedata.entity.DeleteU8cDataUtilEntity" resultMap="get-DeleteU8cDataUtilEntity-result">
|
||||
SELECT
|
||||
a.csaleid
|
||||
FROM
|
||||
so_sale a
|
||||
WHERE
|
||||
a.cbiztype IN ('0001A110000000001TH6')
|
||||
AND a.dr = 0
|
||||
AND a.dbilldate >= '2025-06-01'
|
||||
AND a.dbilldate <= '2025-06-03'
|
||||
-- and (a.csaleid = '1001A1100000000K4L0S' or a.csaleid = '1001A1100000000K4L28')
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
|
|
Loading…
Reference in New Issue