diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/controller/CommodityController.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/controller/CommodityController.java index d2bf7c49..046a1881 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/controller/CommodityController.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/controller/CommodityController.java @@ -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 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(); + } /** * 删除 * diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/dao/CommodityMapper.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/dao/CommodityMapper.java index 784e77f3..e9783a31 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/dao/CommodityMapper.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/dao/CommodityMapper.java @@ -94,8 +94,9 @@ public interface CommodityMapper { */ List queryCommodityInfoList(@Param("pageSpxxReq") PageSpxxReq pageSpxxReq, @Param("shList") List shList); - int queryCountByEntAndEncode(@Param("encoding")String encoding,@Param("merchandiseName")String merchandiseName,@Param("entId")String entId); + List queryCommodityByencodings(@Param("encodings") List encoding,@Param("entIds")List entId, @Param("shList") List shList); + int queryCountByEntAndEncode(@Param("encoding")String encoding,@Param("merchandiseName")String merchandiseName,@Param("entId")String entId); /** * 查询商品信息列表 diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/service/CommodityService.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/service/CommodityService.java index 6f776f65..203677c1 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/service/CommodityService.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/service/CommodityService.java @@ -151,4 +151,12 @@ public interface CommodityService { * @throws ExcelReadException 表格导入自定义异常 */ SXSSFWorkbook exportCommodityExcel(List commodityExcelList) throws ExcelReadException; + + /** + * 更新集团物料的税编 + * @param codeEntity + * @param ids + * @return + */ + R batchUpdateCommodity(CommodityCodeEntity codeEntity, List ids); } diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/service/impl/CommodityServiceImpl.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/service/impl/CommodityServiceImpl.java index 08831a9f..d89bbec8 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/service/impl/CommodityServiceImpl.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/commodity/service/impl/CommodityServiceImpl.java @@ -103,7 +103,7 @@ public class CommodityServiceImpl implements CommodityService { @Transactional public R addOrEditCommodity(CommodityCodeEntity codeEntity) { List shList = NsrsbhUtils.transShListByNsrsbh(codeEntity.getXhfNsrsbh()); - + Long userId = userInfoService.getUser().getUserId(); //判断保存或者修改操作 String id = codeEntity.getId(); Map 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 ids){ + // 校验税编是否为汇总项 + TaxClassCodeEntity taxClassCodeEntity = taxClassCodeService.queryTaxClassCodeFromCache(codeEntity.getSpbm()); + if(taxClassCodeEntity == null){ + return R.error("商品税编有误或未汇总项,请确认后再操作"); + } + //校验ids是否为集团物料 + commodityMapper.batchUpdateCommodity(codeEntity, ids); + return R.ok(); + } + /** * 数据转换 * diff --git a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/taxclass/dao/TaxClassCodeMapper.java b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/taxclass/dao/TaxClassCodeMapper.java index 85a01184..2457c27c 100644 --- a/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/taxclass/dao/TaxClassCodeMapper.java +++ b/order-management-base-service/src/main/java/com/dxhy/order/baseservice/module/taxclass/dao/TaxClassCodeMapper.java @@ -28,7 +28,7 @@ public interface TaxClassCodeMapper { * @param spbms * @return */ - Integer countTaxClassCodeBySpbm(@Param("spbms") List spbms,@Param("map")Map map); + List selectTaxClassCodeList(@Param("spbms") List spbms,@Param("map")Map map); List selectTaxClassCodeBySpmcOrSm(String queryString); diff --git a/order-management-base-service/src/main/resources/mybatis/mapper/CommodityMapper.xml b/order-management-base-service/src/main/resources/mybatis/mapper/CommodityMapper.xml index af631f3f..a38dacc6 100644 --- a/order-management-base-service/src/main/resources/mybatis/mapper/CommodityMapper.xml +++ b/order-management-base-service/src/main/resources/mybatis/mapper/CommodityMapper.xml @@ -1124,6 +1124,50 @@ limit 1000 + + - SELECT - count(*) + * FROM tax_class_code tcc where tcc.spbm in @@ -56,6 +56,9 @@ and cpy = #{map.cpy} + + and hzx = #{map.hzx} + diff --git a/order-management-common/src/main/java/com/dxhy/order/constant/TaxClassCodeEnum.java b/order-management-common/src/main/java/com/dxhy/order/constant/TaxClassCodeEnum.java index 27cfc18e..e297673b 100644 --- a/order-management-common/src/main/java/com/dxhy/order/constant/TaxClassCodeEnum.java +++ b/order-management-common/src/main/java/com/dxhy/order/constant/TaxClassCodeEnum.java @@ -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", "克隆公司库"), /** * 匹配状态 */ diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/config/rabbitmq/OrderSaveSpxxHandler.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/config/rabbitmq/OrderSaveSpxxHandler.java index 700a8a11..a84e0c66 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/config/rabbitmq/OrderSaveSpxxHandler.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/config/rabbitmq/OrderSaveSpxxHandler.java @@ -111,7 +111,7 @@ public class OrderSaveSpxxHandler implements BaseListener { List shList = NsrsbhUtils.transShListByNsrsbh(orderInvoiceInfo.getXhfNsrsbh()); List orderItemInfoList = orderItemInfoService.selectOrderItemInfoByOrderId(orderInvoiceInfo.getOrderInfoId(), shList); - List updateZnfmList = new ArrayList<>(); + //List updateZnfmList = new ArrayList<>(); if (ObjectUtil.isNotEmpty(orderItemInfoList)) { List 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); +// } } } diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java index 1b85ab18..98c21af2 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/manager/service/impl/InvoiceServiceImpl.java @@ -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 { diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java index efb5a4cf..438cff55 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInfoController.java @@ -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 jsonObjects = JSONObject.parseArray(param).toJavaList(JSONObject.class); try { diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java index 5020e224..d2b50edf 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/controller/OrderInvoiceController.java @@ -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); diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/vo/OrderInfoVo.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/vo/OrderInfoVo.java new file mode 100644 index 00000000..13fe1a36 --- /dev/null +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/model/vo/OrderInfoVo.java @@ -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; +} diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java index 96be588f..8b85dca0 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/OrderInfoService.java @@ -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 itemList); + /**同步订单信息至公司物料库*/ + @Transactional + R sycnCommodity(OrderInfoVo param); + @Transactional R mergeOrderItem(String entId,String orderInfoId,List itemList) throws Exception; diff --git a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java index b27abf7b..612537aa 100644 --- a/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java +++ b/order-management-consumer/src/main/java/com/dxhy/order/consumer/modules/order/service/impl/OrderInfoServiceImpl.java @@ -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 map, List shList, List 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 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 spbms = new ArrayList<>(); + List orderItemInfo = param.getOrderItemInfo(); + if(orderItemInfo == null && orderItemInfo.isEmpty() ){ + return R.error("同步公司库必须勾选同步的明细"); + } + List 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 spbm = spbms.stream().distinct().collect(Collectors.toList()); + ending = ending.stream().distinct().collect(Collectors.toList()); + + List taxClassCodeEntities = taxClassCodeMapper.selectTaxClassCodeList(spbm, map); + Map spbmMap = taxClassCodeEntities.stream().collect(Collectors.toMap(t -> t.getSpbm(), t -> t)); + + List commodityCodeEntities = null; + if(ending.size() > 0){ + commodityCodeEntities = commodityMapper.queryCommodityByencodings(ending, Arrays.asList(param.getEntId()), Arrays.asList(param.getXhfNsrsbh())); + } + Map collect = null; + if(commodityCodeEntities != null && commodityCodeEntities.size() > 0){ + collect = commodityCodeEntities.stream().collect(Collectors.toMap(t -> t.getZxbm(), t -> t)); + } + + List 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 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 itemList) throws Exception{ diff --git a/order-management-invoice/src/main/resources/mybatis/mapper/OrderItemInfoMapper.xml b/order-management-invoice/src/main/resources/mybatis/mapper/OrderItemInfoMapper.xml index 5b18ea24..39907ad4 100644 --- a/order-management-invoice/src/main/resources/mybatis/mapper/OrderItemInfoMapper.xml +++ b/order-management-invoice/src/main/resources/mybatis/mapper/OrderItemInfoMapper.xml @@ -320,6 +320,9 @@ tswl = #{item.tswl,jdbcType=VARCHAR}, + + znfm = #{item.znfm,jdbcType=VARCHAR}, + id = #{item.id,jdbcType=VARCHAR}