feature:1、同步公司库按钮,2、物料功能优化3、智能赋码生成预制强制校验

release
gaorl 2 years ago
parent 7aee7498ac
commit 51fba21048
  1. 21
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/controller/CommodityController.java
  2. 3
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/dao/CommodityMapper.java
  3. 8
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/service/CommodityService.java
  4. 24
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/service/impl/CommodityServiceImpl.java
  5. 2
      order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/taxclass/dao/TaxClassCodeMapper.java
  6. 44
      order-management-base-service/src/main/resources/mybatis/mapper/CommodityMapper.xml
  7. 7
      order-management-base-service/src/main/resources/mybatis/mapper/TaxClassCodeMapper.xml
  8. 6
      order-management-common/src/main/java/com/dxhy/order/constant/TaxClassCodeEnum.java
  9. 22
      order-management-consumer/src/main/java/com/dxhy/order/consumer/config/rabbitmq/OrderSaveSpxxHandler.java
  10. 2
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java
  11. 27
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java
  12. 1
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java
  13. 22
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/vo/OrderInfoVo.java
  14. 7
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java
  15. 140
      order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java
  16. 3
      order-management-invoice/src/main/resources/mybatis/mapper/OrderItemInfoMapper.xml

@ -38,6 +38,8 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.io.IOException;
import java.io.OutputStream;
import java.util.*;
@ -128,8 +130,6 @@ public class CommodityController {
commodityCodeEntity.setXhfNsrsbh(nsrsbh);
log.info("参数:{}", JsonUtils.getInstance().toJsonString(commodityCodeEntity));
//获取当前登录人ID
Long userId = userInfoService.getUser().getUserId();
commodityCodeEntity.setUserId(userId.toString());
if (StringUtils.isNotBlank(commodityCodeEntity.getSl()) && commodityCodeEntity.getSl().contains(ConfigureConstant.STRING_PERCENT)) {
commodityCodeEntity.setSl(CommonUtils.formatSl(commodityCodeEntity.getSl()));
}
@ -163,6 +163,7 @@ public class CommodityController {
if (StringUtils.isBlank(commodityCodeEntity.getYcbz())) {
commodityCodeEntity.setYcbz(ConfigureConstant.STRING_0);
}
//物料编码不允许为空
if(StringUtils.isBlank(commodityCodeEntity.getZxbm())||"000000000000000000".equals(commodityCodeEntity.getZxbm())){
commodityCodeEntity.setZxbm(commodityCodeEntity.getId());
}
@ -182,6 +183,22 @@ public class CommodityController {
}
}
@PostMapping("/brachUpdateTaxCode")
@ApiOperation(value = "集团库更新税编", notes = "集团物料库-更新税编")
@SysLog(operation = "更新税编", operationDesc = "集团物料库更新税编", key = "批量更新税编")
public R brachUpdateTaxCode(@RequestParam @Size(min = 1) List<String> ids, @RequestParam @NotEmpty(message = "商品编码不允许为空")String spbm, @RequestParam String spjc) {
CommodityCodeEntity commodityCode = new CommodityCodeEntity();
commodityCode.setSpjc(spjc);
commodityCode.setSpbm(spbm);
try {
commodityService.batchUpdateCommodity(commodityCode,ids);
} catch (Exception e) {
log.error("更新集团物料失败,异常信息{}",e);
return R.error("系统更新异常,请联系管理员");
}
return R.ok();
}
/**
* 删除
*

@ -94,8 +94,9 @@ public interface CommodityMapper {
*/
List<CommodityCodeEntity> queryCommodityInfoList(@Param("pageSpxxReq") PageSpxxReq pageSpxxReq, @Param("shList") List<String> shList);
int queryCountByEntAndEncode(@Param("encoding")String encoding,@Param("merchandiseName")String merchandiseName,@Param("entId")String entId);
List<CommodityCodeEntity> queryCommodityByencodings(@Param("encodings") List<String> encoding,@Param("entIds")List<String> entId, @Param("shList") List<String> shList);
int queryCountByEntAndEncode(@Param("encoding")String encoding,@Param("merchandiseName")String merchandiseName,@Param("entId")String entId);
/**
* 查询商品信息列表

@ -151,4 +151,12 @@ public interface CommodityService {
* @throws ExcelReadException 表格导入自定义异常
*/
SXSSFWorkbook exportCommodityExcel(List<CommodityExcel> commodityExcelList) throws ExcelReadException;
/**
* 更新集团物料的税编
* @param codeEntity
* @param ids
* @return
*/
R batchUpdateCommodity(CommodityCodeEntity codeEntity, List<String> ids);
}

@ -103,7 +103,7 @@ public class CommodityServiceImpl implements CommodityService {
@Transactional
public R addOrEditCommodity(CommodityCodeEntity codeEntity) {
List<String> shList = NsrsbhUtils.transShListByNsrsbh(codeEntity.getXhfNsrsbh());
Long userId = userInfoService.getUser().getUserId();
//判断保存或者修改操作
String id = codeEntity.getId();
Map<String,String> map = new HashMap<>();
@ -128,18 +128,20 @@ public class CommodityServiceImpl implements CommodityService {
codeEntity.setDataState(TaxClassCodeEnum.DATA_STATE_0.getKey());
}
// 记录修改记录
Long userId = userInfoService.getUser().getUserId();
if(commodityCodeModifyLogService.saveCommodityCodeDifferenceBetween2(commodityCodeEntities.get(0), codeEntity, userId) == -1){
return R.error().put(OrderManagementConstant.DATA, "数据未进行修改,无需保存");
}
codeEntity.setXhfNsrsbh(null);
codeEntity.setXhfNsrsbh(null);//不更新税号
codeEntity.setModifyTime(new Date());
codeEntity.setModifyUserId(userId.toString());
if(commodityMapper.updateCommodity(codeEntity, null) <= 0){
return R.error().put(OrderManagementConstant.DATA, "更新物料信息失败,请联系管理员");
}
} else {
codeEntity.setDataSource(TaxClassCodeEnum.DATA_SOURCE_1.getKey());
codeEntity.setCreateTime(new Date());
codeEntity.setUserId(userId.toString());
codeEntity.setMatchingState(TaxClassCodeEnum.MATCHING_STATE_1.getKey());
//未匹配默认为停用
codeEntity.setDataState(TaxClassCodeEnum.DATA_STATE_1.getKey());
@ -643,7 +645,7 @@ public class CommodityServiceImpl implements CommodityService {
}
}else{
// TODO 简称、商品编码、规格型号、单位、优惠政策标识、零税率标识
// 简称、商品编码、规格型号、单位、优惠政策标识、零税率标识
if (commodityCodeEntity != null){
commodityMapper.updateCommodityByZxbm(commodityCodeEntity, map);
}
@ -678,6 +680,18 @@ public class CommodityServiceImpl implements CommodityService {
return sxssfWorkbook;
}
@Override
public R batchUpdateCommodity(CommodityCodeEntity codeEntity, List<String> ids){
// 校验税编是否为汇总项
TaxClassCodeEntity taxClassCodeEntity = taxClassCodeService.queryTaxClassCodeFromCache(codeEntity.getSpbm());
if(taxClassCodeEntity == null){
return R.error("商品税编有误或未汇总项,请确认后再操作");
}
//校验ids是否为集团物料
commodityMapper.batchUpdateCommodity(codeEntity, ids);
return R.ok();
}
/**
* 数据转换
*

@ -28,7 +28,7 @@ public interface TaxClassCodeMapper {
* @param spbms
* @return
*/
Integer countTaxClassCodeBySpbm(@Param("spbms") List<String> spbms,@Param("map")Map map);
List<TaxClassCodeEntity> selectTaxClassCodeList(@Param("spbms") List<String> spbms,@Param("map")Map map);
List<TaxClassCodeEntity> selectTaxClassCodeBySpmcOrSm(String queryString);

@ -1124,6 +1124,50 @@
limit 1000
</select>
<select id="queryCommodityByencodings" resultMap="commodityCodeResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM
commodity_code cc
where
cc.encoding in
<foreach collection="encodings" item="encoding" open="(" separator="," close=")">
#{encoding}
</foreach>
<if test="entIds != null and entIds.size() == 0">
and cc.ent_id = ''
</if>
<if test="entIds != null and entIds.size() == 1">
and cc.ent_id =
<foreach collection="entIds" item="entId">
#{entId}
</foreach>
</if>
<if test="entIds != null and entIds.size() > 1">
and cc.ent_id in
<foreach collection="entIds" item="entId" open="(" separator="," close=")">
#{entId}
</foreach>
</if>
<if test="shList != null and shList.size() == 0">
and cc.xhf_nsrsbh = ''
</if>
<if test="shList != null and shList.size() == 1">
and cc.xhf_nsrsbh =
<foreach collection="shList" index="index" item="item">
#{item}
</foreach>
</if>
<if test="shList != null and shList.size() > 1">
and cc.xhf_nsrsbh in
<foreach collection="shList" index="index" item="item"
open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
<!--查询集团下面企业可采集的数据 匹配状态为0(已匹配) 数据状态为0(启用) 数据来源为1(页面创建)、2(模板导入)-->
<select id="getCommodityCode" resultMap="commodityCodeResultMap" parameterType="string">
SELECT

@ -44,9 +44,9 @@
where tcc.spbm = #{spbm} limit 1
</select>
<select id="countTaxClassCodeBySpbm" parameterType="java.lang.String" resultType="java.lang.Integer">
<select id="selectTaxClassCodeList" parameterType="java.lang.String" resultType="com.dxhy.order.baseservice.module.taxclass.model.TaxClassCodeEntity">
SELECT
count(*)
*
FROM
tax_class_code tcc
where tcc.spbm in
@ -56,6 +56,9 @@
<if test="map.cpy != null and map.cpy != ''">
and cpy = #{map.cpy}
</if>
<if test="map.hzx != null and map.hzx != ''">
and hzx = #{map.hzx}
</if>
</select>

@ -25,7 +25,11 @@ public enum TaxClassCodeEnum {
DATA_SOURCE_3("3", "采集下级"),
DATA_SOURCE_4("4", "自动归集"),//物料更新没使用
DATA_SOURCE_5("5", "接口同步"),
DATA_SOURCE_6("6", "开票自动归集"),
DATA_SOURCE_6("6", "手工填开"),
DATA_SOURCE_7("7", "历史数据"),
DATA_SOURCE_8("8", "订单同步公司库"),
DATA_SOURCE_9("9", "引用集团库"),
DATA_SOURCE_10("10", "克隆公司库"),
/**
* 匹配状态
*/

@ -111,7 +111,7 @@ public class OrderSaveSpxxHandler implements BaseListener {
List<String> shList = NsrsbhUtils.transShListByNsrsbh(orderInvoiceInfo.getXhfNsrsbh());
List<OrderItemInfo> orderItemInfoList = orderItemInfoService.selectOrderItemInfoByOrderId(orderInvoiceInfo.getOrderInfoId(), shList);
List<OrderItemInfo> updateZnfmList = new ArrayList<>();
//List<OrderItemInfo> updateZnfmList = new ArrayList<>();
if (ObjectUtil.isNotEmpty(orderItemInfoList)) {
List<ReceiveSpxxReq> receiveSpxxReqList = new ArrayList<>();
for (OrderItemInfo orderItemInfo : orderItemInfoList) {
@ -121,18 +121,18 @@ public class OrderSaveSpxxHandler implements BaseListener {
receiveSpxxReq.setEntId(userInfoService.getUser() != null ? userInfoService.getUser().getDeptId():orderInvoiceInfo.getEntId());
receiveSpxxReqList.add(receiveSpxxReq);
//更新是否为只能赋码
if("1".equals(orderItemInfo.getZnfm())){
OrderItemInfo orderItemInfo1 = new OrderItemInfo();
orderItemInfo1.setId(orderItemInfo.getId());
orderItemInfo1.setZnfm("0");
updateZnfmList.add(orderItemInfo1);
}
// if("1".equals(orderItemInfo.getZnfm())){
// OrderItemInfo orderItemInfo1 = new OrderItemInfo();
// orderItemInfo1.setId(orderItemInfo.getId());
// orderItemInfo1.setZnfm("0");
// updateZnfmList.add(orderItemInfo1);
// }
}
//事务控制
commodityService.saveCommodityCodeEntity(receiveSpxxReqList);
if(ObjectUtil.isNotEmpty(updateZnfmList)){
orderItemInfoService.updateOrderItemId(updateZnfmList);
}
//commodityService.saveCommodityCodeEntity(receiveSpxxReqList);
// if(ObjectUtil.isNotEmpty(updateZnfmList)){
// orderItemInfoService.updateOrderItemId(updateZnfmList);
// }
}
}

@ -248,7 +248,7 @@ public class InvoiceServiceImpl implements InvoiceService {
if(consumerList.size()>0){
return R.error(ConfigureConstant.STRING_9001, "以下结算单中客户的状态为“冻结”状态,不能进行开票。",consumerList);
}else if((StrUtil.isBlank(pageInvoiceReq.getConfirmZnfm()) || !ConfigureConstant.STRING_0.equals(pageInvoiceReq.getConfirmZnfm())) && confirmList.size()>0){
return R.error(ConfigureConstant.STRING_9002,"请确认以下物料税收分类编码是否准确",confirmList);
return R.error(ConfigureConstant.STRING_9002,"请将以下物料同步至公司库,再进行生成预制",confirmList);
}else if(djOverflowList.size() > 0){
return R.error(ConfigureConstant.STRING_9003, "以下订单自动拆分时单价超过设定范围,请手动拆分",djOverflowList);
}else {

@ -5,11 +5,10 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dxhy.order.constant.ConfigureConstant;
import com.dxhy.order.constant.OrderInfoContentEnum;
import com.dxhy.order.constant.OrderInfoEnum;
import com.dxhy.order.constant.OrderManagementConstant;
import com.dxhy.order.baseservice.module.commodity.model.CommodityCodeEntity;
import com.dxhy.order.constant.*;
import com.dxhy.order.consumer.modules.order.model.dto.RewriteBzdhDTO;
import com.dxhy.order.consumer.modules.order.model.vo.OrderInfoVo;
import com.dxhy.order.consumer.modules.order.service.OrderBzdhService;
import com.dxhy.order.exception.OrderReceiveException;
import com.dxhy.order.model.*;
@ -464,7 +463,7 @@ public class OrderInfoController {
@PostMapping("/updateOrderItem")
@SysLog(operation = "订单更新物料", operationDesc = "订单更新物料", key = "订单更新物料")
public R updateOrderItem(@RequestBody String param){
log.info("订单更新物料",param);
log.info("订单更新物料{}",param);
JSONObject jsonObject = JSONObject.parseObject(param);
String entId = jsonObject.getString("entId");
String orderInfoId = jsonObject.getString("orderInfoId");
@ -482,11 +481,25 @@ public class OrderInfoController {
}
@ApiOperation(value = "同步物料至公司库", notes = "订单信息管理-同步物料")
@PostMapping("/sycnCommodity")
@SysLog(operation = "同步物料至公司库", operationDesc = "同步物料至公司库", key = "同步物料至公司库")
public R sycnCommodity(@RequestBody OrderInfoVo param){
log.info("同步物料至公司库请参:{}",JSONObject.toJSONString(param));
try {
return orderInfoService.sycnCommodity(param);
} catch (Exception e) {
log.error("同步公司物料库失败,失败原因:{}",e.getMessage());
return R.error("系统异常,请联系管理员");
}
}
@ApiOperation(value = "订单明细合并", notes = "订单信息管理-订单明细合并")
@PostMapping("/megerOrderItem")
@SysLog(operation = "订单明细合并", operationDesc = "订单明细合并", key = "订单明细合并")
public R megerOrderItem(@RequestBody String param){
log.info("订单明细合并",param);
log.info("订单明细合并{}",param);
JSONObject jsonObject = JSONObject.parseObject(param);
String entId = jsonObject.getString("entId");
String orderInfoId = jsonObject.getString("orderInfoId");
@ -507,7 +520,7 @@ public class OrderInfoController {
@PostMapping("/batchMegerOrderItem")
@SysLog(operation = "批量订单明细合并", operationDesc = "订单明细合并", key = "批量订单明细合并")
public R batchMegerOrderItem(@RequestBody String param){
log.info("批量订单明细合并",param);
log.info("批量订单明细合并{}",param);
List<JSONObject> jsonObjects = JSONObject.parseArray(param).toJavaList(JSONObject.class);
try {

@ -144,6 +144,7 @@ public class OrderInvoiceController {
@PostMapping("/preInvoice")
public R preInvoice(@RequestBody PageInvoiceReq pageInvoiceReq) {
try {
pageInvoiceReq.setConfirmZnfm("1");
return invoiceService.preInvoice(pageInvoiceReq);
} catch (Exception e) {
log.error("{}生成预制发票异常e:{}", LOGGER_MSG, e);

@ -0,0 +1,22 @@
package com.dxhy.order.consumer.modules.order.model.vo;
import com.dxhy.order.model.OrderItemInfo;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class OrderInfoVo {
@NotBlank
private String entId;
private String xhfNsrsbh;
private String xhfMc;
private String commodityId;
private List<OrderItemInfo> orderItemInfo;
}

@ -1,8 +1,8 @@
package com.dxhy.order.consumer.modules.order.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.dxhy.order.consumer.model.page.PageRequestVO;
import com.dxhy.order.consumer.modules.order.model.vo.OrderInfoVo;
import com.dxhy.order.exception.OrderReceiveException;
import com.dxhy.order.model.*;
import com.dxhy.base.constant.OrderSeparationException;
@ -12,7 +12,6 @@ import com.dxhy.order.consumer.modules.order.model.PageKySlReq;
import com.dxhy.order.consumer.modules.order.model.PageKySlRsp;
import com.dxhy.order.consumer.modules.order.model.bo.YwlxCountTotalBO;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
import java.util.Map;
@ -219,6 +218,10 @@ public interface OrderInfoService {
R updateOrderItem(String orderInfoId,String entId,List<String> itemList);
/**同步订单信息至公司物料库*/
@Transactional
R sycnCommodity(OrderInfoVo param);
@Transactional
R mergeOrderItem(String entId,String orderInfoId,List<String> itemList) throws Exception;

@ -10,18 +10,19 @@ import com.dxhy.base.constant.TaxSeparateConfig;
import com.dxhy.base.utils.PriceTaxSeparationUtilNew;
import com.dxhy.common.generatepdf.util.EwmUtil;
import com.dxhy.order.baseservice.config.BaseServiceConfig;
import com.dxhy.order.baseservice.module.base.service.BaseService;
import com.dxhy.order.baseservice.module.buyer.model.BuyerEntity;
import com.dxhy.order.baseservice.module.buyer.service.BuyerService;
import com.dxhy.order.baseservice.module.commodity.dao.CommodityMapper;
import com.dxhy.order.baseservice.module.commodity.model.CommodityCodeEntity;
import com.dxhy.order.baseservice.module.groupmanagement.dao.GroupManagementMapper;
import com.dxhy.order.baseservice.module.taxclass.dao.TaxClassCodeMapper;
import com.dxhy.order.baseservice.module.taxclass.model.TaxClassCodeEntity;
import com.dxhy.order.baseservice.module.thirdservice.simsback.service.SimsBackService;
import com.dxhy.order.baseservice.module.thirdservice.user.model.DeptEntity;
import com.dxhy.order.baseservice.module.thirdservice.user.service.UserInfoService;
import com.dxhy.order.constant.ConfigureConstant;
import com.dxhy.order.constant.OrderInfoContentEnum;
import com.dxhy.order.constant.OrderInfoEnum;
import com.dxhy.order.constant.OrderManagementConstant;
import com.dxhy.order.baseservice.utils.BaseServiceBeanTransitionUtils;
import com.dxhy.order.constant.*;
import com.dxhy.order.consumer.dao.GroupCommodityCodeMapper;
import com.dxhy.order.consumer.dao.GsClientMapper;
import com.dxhy.order.consumer.dao.OrderBatchRequestMapper;
@ -33,6 +34,7 @@ import com.dxhy.order.consumer.modules.order.model.PageInvoiceItem;
import com.dxhy.order.consumer.modules.order.model.PageKySlReq;
import com.dxhy.order.consumer.modules.order.model.PageKySlRsp;
import com.dxhy.order.consumer.modules.order.model.bo.YwlxCountTotalBO;
import com.dxhy.order.consumer.modules.order.model.vo.OrderInfoVo;
import com.dxhy.order.consumer.modules.order.service.*;
import com.dxhy.order.consumer.modules.validate.service.ValidateOrderInfoService;
import com.dxhy.order.consumer.openapi.service.CommonInterfaceService;
@ -164,15 +166,18 @@ public class OrderInfoServiceImpl implements OrderInfoService {
@Resource
private TaxClassCodeMapper taxClassCodeMapper;
@Resource
private OrderBatchRequestMapper orderBatchRequestMapper;
@Resource
private GroupManagementMapper groupManagementMapper;
@Resource
private GsClientMapper gsClientMapper;
@Resource
private BaseService baseService;
@Resource
private CommodityMapper commodityMapper;
@Override
public PageUtils selectOrderInfo(Map<String, Object> map, List<String> shList, List<String> entList) {
return orderProcessService.selectOrderInfo(map, shList, entList);
@ -1840,8 +1845,8 @@ public class OrderInfoServiceImpl implements OrderInfoService {
if(collect1.size()==orderItemInfos.size()){
Map map = new HashMap(2);
map.put("cpy","Y");
Integer integer = taxClassCodeMapper.countTaxClassCodeBySpbm(collect1, map);
if(orderItemInfos.size()==integer.intValue()){
List<TaxClassCodeEntity> taxClassCodeEntities = taxClassCodeMapper.selectTaxClassCodeList(collect1, map);
if(orderItemInfos.size()==taxClassCodeEntities.size()){
//更新order_info 清单标志为4
OrderInfo orderInfo = new OrderInfo();
orderInfo.setId(orderInfoId);
@ -1855,6 +1860,123 @@ public class OrderInfoServiceImpl implements OrderInfoService {
return R.ok();
}
@Override
public R sycnCommodity(OrderInfoVo param) {
//优先新增物料
//如果公司库存在,但是部分数据与公司库不一致
//如果当前明细行物料编码为空
//更新订单物料智能赋码标识
List<String> spbms = new ArrayList<>();
List<OrderItemInfo> orderItemInfo = param.getOrderItemInfo();
if(orderItemInfo == null && orderItemInfo.isEmpty() ){
return R.error("同步公司库必须勾选同步的明细");
}
List<String> ending = orderItemInfo.stream().filter(t->StringUtils.isNotBlank(t.getSpbm())).map(t -> {
spbms.add(t.getSpbm());
return t.getZxbm();
}).collect(Collectors.toList());
Map map = new HashMap(2);
map.put("hzx","N");
List<String> spbm = spbms.stream().distinct().collect(Collectors.toList());
ending = ending.stream().distinct().collect(Collectors.toList());
List<TaxClassCodeEntity> taxClassCodeEntities = taxClassCodeMapper.selectTaxClassCodeList(spbm, map);
Map<String, TaxClassCodeEntity> spbmMap = taxClassCodeEntities.stream().collect(Collectors.toMap(t -> t.getSpbm(), t -> t));
List<CommodityCodeEntity> commodityCodeEntities = null;
if(ending.size() > 0){
commodityCodeEntities = commodityMapper.queryCommodityByencodings(ending, Arrays.asList(param.getEntId()), Arrays.asList(param.getXhfNsrsbh()));
}
Map<String, CommodityCodeEntity> collect = null;
if(commodityCodeEntities != null && commodityCodeEntities.size() > 0){
collect = commodityCodeEntities.stream().collect(Collectors.toMap(t -> t.getZxbm(), t -> t));
}
List<OrderItemInfo> items = new ArrayList<>();
StringBuffer sb = new StringBuffer();
for (OrderItemInfo itemInfo : orderItemInfo) {
try {
CommodityCodeEntity commodityCodeEntity = buildCommodity(itemInfo, param, spbmMap);
//判断是否已存在
int i = 0;
//公司不维护
CommodityCodeEntity commodityCodeOld = collect.get(itemInfo.getZxbm());
if(collect == null || commodityCodeOld == null){
commodityCodeEntity.setId(baseService.getGenerateShotKey());
commodityCodeEntity.setCreateTime(new Date());
commodityCodeEntity.setUserId(userInfoService.getUser().getUserId() != null ? userInfoService.getUser().getUserId().toString():"sync");
i = commodityMapper.insertCommodity(commodityCodeEntity);
}
//公司库已维护的不更新
if(commodityCodeOld != null){
//判断税编、规格型号、单位
commodityCodeEntity.setId(commodityCodeOld.getId());
commodityCodeEntity.setModifyTime(new Date());
commodityCodeEntity.setModifyUserId(userInfoService.getUser().getUserId() != null ? userInfoService.getUser().getUserId().toString():"sync");
i = commodityMapper.updateCommodity(commodityCodeEntity,Arrays.asList(param.getXhfNsrsbh()));
}
if(i > 0){
OrderItemInfo item = new OrderItemInfo();
item.setId(itemInfo.getId());
item.setZnfm(ConfigureConstant.STRING_0);
items.add(item);
}
} catch (Exception e) {
sb.append(itemInfo.getSphxh()).append(",");
}
}
if(items.size() > 0){
orderItemInfoMapper.updateOrderItemId(items);
}
String substring = sb.substring(0, sb.length() - 1) + "税编有误请检查";
return sb.length() == 0 ? R.ok() :R.error(substring);
}
private CommodityCodeEntity buildCommodity(OrderItemInfo itemInfo,OrderInfoVo orderInfoVo,Map<String, TaxClassCodeEntity> spbm ) throws Exception{
CommodityCodeEntity comm = new CommodityCodeEntity();
comm.setCommodityId(comm.getId());
comm.setSortId(0L);
comm.setXhfNsrsbh(orderInfoVo.getXhfNsrsbh());
TaxClassCodeEntity taxClassCodeEntity = spbm.get(itemInfo.getSpbm());
if(taxClassCodeEntity == null){
throw new Exception("商品税编有误");
}
String spjc = taxClassCodeEntity.getSpjc();
String xmmc = itemInfo.getXmmc().replace("*" + spjc + "*", "");
comm.setXmmc(xmmc);
comm.setZxbm(StringUtils.isNotBlank(itemInfo.getZxbm())?itemInfo.getZxbm():comm.getId());
comm.setSpsm(taxClassCodeEntity.getSm());
comm.setSpjm("");
comm.setSl(itemInfo.getSl());//不需要转换%
comm.setGgxh(StringUtils.isNotBlank(itemInfo.getGgxh())?BaseServiceBeanTransitionUtils.ggxhTransition(itemInfo.getGgxh()):"");//切除40
comm.setXmdw(itemInfo.getXmdw());
comm.setXmdj(StringUtils.isNotBlank(itemInfo.getXmdj())?itemInfo.getXmdj():"");
comm.setHsbz(itemInfo.getHsbz());
comm.setYcbz(ConfigureConstant.STRING_0);
comm.setYhzcbs(itemInfo.getYhzcbs());
comm.setSpbm(itemInfo.getSpbm());
comm.setSsflMc(spjc);
comm.setLslbs(itemInfo.getLslbs());
comm.setZzstsgl(itemInfo.getZzstsgl());
//如果税编和简称对不上返回报错
comm.setXhfMc(orderInfoVo.getXhfMc());
comm.setDataSource(TaxClassCodeEnum.DATA_SOURCE_8.getKey());
comm.setMatchingState(TaxClassCodeEnum.MATCHING_STATE_0.getKey());
comm.setDataState(TaxClassCodeEnum.DATA_STATE_0.getKey());
comm.setSpjc(spjc);
comm.setCollectIdent("0");
comm.setCpy(taxClassCodeEntity.getCpy());
comm.setJdc(taxClassCodeEntity.getJdc());
comm.setEntId(orderInfoVo.getEntId());
comm.setTswl(StringUtils.isBlank(itemInfo.getTswl())?ConfigureConstant.STRING_0:"");
return comm;
}
@Override
public R mergeOrderItem(String entId, String orderInfoId,List<String> itemList) throws Exception{

@ -320,6 +320,9 @@
<if test="item.tswl != null and item.znfm != ''" >
tswl = #{item.tswl,jdbcType=VARCHAR},
</if>
<if test="item.znfm != null and item.znfm != ''" >
znfm = #{item.znfm,jdbcType=VARCHAR},
</if>
</set>
<where>
id = #{item.id,jdbcType=VARCHAR}

Loading…
Cancel
Save