Browse Source

no message

FengChaoYu 8 months ago
parent
commit
b36b818bb4

+ 79 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/bean/material/parts/WebsitPartsStockBean.java

@@ -0,0 +1,79 @@
+package com.gree.mall.miniapp.bean.material.parts;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+@ApiModel
+@Data
+public class WebsitPartsStockBean {
+
+    @ApiModelProperty("id")
+    private String id;
+
+    @ApiModelProperty("商户编号")
+    private String companyWechatId;
+
+    @ApiModelProperty("商户名称")
+    private String companyWechatName;
+
+    @ApiModelProperty("网点编号")
+    private String websitId;
+
+    @ApiModelProperty("网点名称")
+    private String websitName;
+
+    @ApiModelProperty("配件网点编号")
+    private String partsWebsiteNumber;
+
+    @ApiModelProperty("配件编码")
+    private String partsNumber;
+
+    @ApiModelProperty("配件名称")
+    private String partsName;
+
+    @ApiModelProperty("物料组名称")
+    private String materialGroupName;
+
+    @ApiModelProperty("单位")
+    private String goodsStockUnit;
+
+    @ApiModelProperty("新件库存")
+    private BigDecimal newQty;
+
+    @ApiModelProperty("旧件库存")
+    private BigDecimal oldQty;
+
+    @ApiModelProperty("备注")
+    private String remark;
+
+    @ApiModelProperty("创建人")
+    private String createBy;
+
+    @ApiModelProperty("创建时间")
+    private Date createTime;
+
+    @ApiModelProperty("更新人")
+    private String updateBy;
+
+    @ApiModelProperty("更新时间")
+    private Date updateTime;
+
+    @ApiModelProperty("市场价")
+    private BigDecimal marketPrice;
+
+    @ApiModelProperty("优惠价1")
+    private BigDecimal firstPrice;
+
+    @ApiModelProperty("优惠价2")
+    private BigDecimal secondPrice;
+
+    @ApiModelProperty("配件类型")
+    private String partType;
+
+    @ApiModelProperty("销售价")
+    private BigDecimal salesPrice;
+}

+ 16 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/commonmapper/MaterialMapper.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.gree.mall.miniapp.bean.material.*;
 import com.gree.mall.miniapp.bean.material.parts.*;
 import com.gree.mall.miniapp.bean.material.stock.WorkerNormStockBean;
+import com.gree.mall.miniapp.plus.entity.WebsitGoods;
 import com.gree.mall.miniapp.plus.entity.WebsitPartsSalesItem;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -91,6 +92,7 @@ public interface MaterialMapper {
      * @param goodsType
      * @return
      */
+    @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
     List<WebsitShoppingCartList> queryShoppingCartList(@Param("workerId") String workerId,
                                                        @Param("websitId") String websitId,
                                                        @Param("goodsType") String goodsType);
@@ -128,10 +130,24 @@ public interface MaterialMapper {
      * @param records
      * @return
      */
+    @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
     List<WebsitPartsSalesItem> querySalesPushFlagItem(String websitId, String salesId, String partsWebsitId,
                                                       String identity, String pushFlag, List<SalesItemRecordDTO> records);
 
+    @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
     List<PartsSalesOrderItemBean> selectItemBySalesOrderId(@Param("id") String id);
 
+    @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
     List<OldRefundManageRecordBean> queryOldRefundRecordById(@Param("id") String id);
+
+    @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
+    WebsitGoods websitGroupList(@Param("companyWechatId") String companyWechatId, @Param("websitId") String websitId, @Param("id") String partsWebsiteNumber);
+
+    @InterceptorIgnore(tenantLine = "1", blockAttack = "1", illegalSql = "1")
+    List<WebsitPartsStockBean> existWebsitStockList(@Param("companyWechatId") String companyWechatId,
+                                                    @Param("websitId") String websitId,
+                                                    @Param("partsWebsitId") String partsWebsitId,
+                                                    @Param("partsNumber") String partsNumber,
+                                                    @Param("partsName") String partsName,
+                                                    @Param("materialGroupName") String materialGroupName);
 }

+ 49 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/controller/material/parts/WebsitStockController.java

@@ -0,0 +1,49 @@
+package com.gree.mall.miniapp.controller.material.parts;
+
+import com.gree.mall.miniapp.bean.material.parts.WebsitPartsStockBean;
+import com.gree.mall.miniapp.exception.RemoteServiceException;
+import com.gree.mall.miniapp.helper.ResponseHelper;
+import com.gree.mall.miniapp.logic.material.parts.WebsitPartsStockLogic;
+import com.gree.mall.miniapp.plus.entity.WebsitGoods;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+@Slf4j
+@RestController()
+@Api(value = "网点配件库存查询", tags ={"网点配件库存查询"} )
+@RequestMapping(value = "/app/parts/websit/stock", produces = "application/json; charset=utf-8")
+public class WebsitStockController {
+
+    @Resource
+    WebsitPartsStockLogic websitPartsStockLogic;
+
+    @ApiOperation(value = "查询网点库存物料分组")
+    @PostMapping("/group/list")
+    public ResponseHelper<List<WebsitGoods>> websitGroupList (
+            @ApiParam(value = "网点编号",required = true) @RequestParam String websitId,
+            @ApiParam(value = "配件网点编号",required = true) @RequestParam String partsWebsitId
+    ) throws RemoteServiceException {
+        return ResponseHelper.success(websitPartsStockLogic.websitGroupList(websitId, partsWebsitId));
+    }
+
+    @ApiOperation(value = "查询网点库存")
+    @PostMapping("/list")
+    public ResponseHelper<List<WebsitPartsStockBean>> existWebsitStockList (
+            @ApiParam(value = "网点编号", required = true) @RequestParam String websitId,
+            @ApiParam(value = "配件网点编号", required = true) @RequestParam String partsWebsitId,
+            @ApiParam(value = "配件编码") @RequestParam(required = false) String partsNumber,
+            @ApiParam(value = "配件名称") @RequestParam(required = false) String partsName,
+            @ApiParam(value = "物料组名称") @RequestParam(required = false) String materialGroupName
+    ) throws RemoteServiceException {
+        return ResponseHelper.success(websitPartsStockLogic.existWebsitStockList(websitId, partsWebsitId, partsNumber, partsName, materialGroupName));
+    }
+}

+ 66 - 0
mall-miniapp-service/src/main/java/com/gree/mall/miniapp/logic/material/parts/WebsitPartsStockLogic.java

@@ -0,0 +1,66 @@
+package com.gree.mall.miniapp.logic.material.parts;
+
+import com.gree.mall.miniapp.bean.material.parts.WebsitPartsStockBean;
+import com.gree.mall.miniapp.bean.user.CurrentCompanyWechat;
+import com.gree.mall.miniapp.commonmapper.MaterialMapper;
+import com.gree.mall.miniapp.logic.common.CommonLogic;
+import com.gree.mall.miniapp.plus.entity.MaterialConfig;
+import com.gree.mall.miniapp.plus.entity.WebsitGoods;
+import com.gree.mall.miniapp.plus.service.MaterialConfigService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.math.BigDecimal;
+import java.util.List;
+import java.util.Optional;
+
+@Service
+@Slf4j
+public class WebsitPartsStockLogic {
+
+    @Resource
+    MaterialMapper materialMapper;
+    @Resource
+    CommonLogic commonLogic;
+    @Resource
+    MaterialConfigService materialConfigService;
+
+    public WebsitGoods websitGroupList(String websitId, String partsWebsitId) {
+        CurrentCompanyWechat wechat = commonLogic.getCurrentCompanyWechat();
+        return materialMapper.websitGroupList(wechat.getCompanyWechatId(), websitId, partsWebsitId);
+    }
+
+    public Object existWebsitStockList(String websitId, String partsWebsitId, String partsNumber, String partsName, String materialGroupName) {
+        CurrentCompanyWechat wechat = commonLogic.getCurrentCompanyWechat();
+        List<WebsitPartsStockBean> partsStockBeans = materialMapper.existWebsitStockList(wechat.getCompanyWechatId(), websitId, partsWebsitId, partsNumber, partsName, materialGroupName);
+        for (WebsitPartsStockBean partsStockBean : partsStockBeans) {
+            this.computeSalesPrice(partsStockBean);
+        }
+        return partsStockBeans;
+    }
+
+    /**
+     * 计算销售价
+     * @param partsStockBean
+     */
+    private void computeSalesPrice(WebsitPartsStockBean partsStockBean) {
+        final MaterialConfig materialConfig = materialConfigService.lambdaQuery()
+                .eq(MaterialConfig::getCompanyWechatId, partsStockBean.getCompanyWechatId())
+                .one();
+        switch (Optional.ofNullable(partsStockBean.getPartType()).orElse("")) {
+            case "空调":
+                partsStockBean.setSalesPrice(partsStockBean.getMarketPrice().multiply(materialConfig.getPriceRate1()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                break;
+            case "冰箱":
+                partsStockBean.setSalesPrice(partsStockBean.getMarketPrice().multiply(materialConfig.getPriceRate2()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                break;
+            case "生活电器":
+                partsStockBean.setSalesPrice(partsStockBean.getMarketPrice().multiply(materialConfig.getPriceRate3()).setScale(2, BigDecimal.ROUND_HALF_UP));
+                break;
+            default:
+                partsStockBean.setSalesPrice(partsStockBean.getMarketPrice().multiply(new BigDecimal("1.2")).setScale(2, BigDecimal.ROUND_HALF_UP));
+                break;
+        }
+    }
+}

+ 49 - 0
mall-miniapp-service/src/main/resources/mapper/MaterialMapper.xml

@@ -390,4 +390,53 @@
         WHERE
             sales_id = #{id}
     </select>
+
+    <select id="websitGroupList" resultType="com.gree.mall.miniapp.plus.entity.WebsitGoods">
+        SELECT
+            material_group_name AS `value`
+        FROM
+            websit_stock
+        WHERE
+            company_wechat_id = #{companyWechatId}
+            AND websit_id = #{websitId}
+            AND parts_websit_id = #{partsWebsiteNumber}
+            AND qty > 0
+        GROUP BY
+            material_group_name
+    </select>
+
+    <select id="existWebsitStockList"
+            resultType="com.gree.mall.miniapp.bean.material.parts.WebsitPartsStockBean">
+        SELECT
+        a.id,
+        a.websit_id,
+        a.websit_name,
+        a.parts_websit_id,
+        a.goods_id,
+        a.goods_name,
+        b.material_group_name,
+        b.part_type,
+        b.market_price,
+        b.goods_stock_unit,
+        a.qty,
+        a.old_qty
+        FROM
+            websit_stock a LEFT JOIN websit_goods b ON a.goods_id = b.goods_code
+        WHERE
+            a.company_wechat_id = #{companyWechatId}
+            AND a.websit_id = #{websitId}
+            AND a.parts_websit_id = #{partsWebsitId}
+            <if test="partsNumber != null and partsNumber != ''">
+                AND a.goods_id = #{partsNumber}
+            </if>
+            <if test="partsName != null and partsName != ''">
+                AND a.goods_name LIKE CONCAT('%', #{partsName}, '%')
+            </if>
+            <if test="materialGroupName != null and materialGroupName != ''">
+                AND a.goods_stock_unit = #{materialGroupName}
+            </if>
+            AND a.goods_type = 'P'
+            AND a.qty > 0
+
+    </select>
 </mapper>