1、单据上传统计界面增加采购和销售 码数进行计算开发

dev_unify
qiuyt 8 months ago
parent bf931019d6
commit 8be0b3b5a8

@ -16,9 +16,13 @@ import com.glxp.api.req.collect.CollectOrderUploadCountRequest;
import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.basic.UserWorkResponse; import com.glxp.api.res.basic.UserWorkResponse;
import com.glxp.api.res.collect.CollectOrderBizResponse; import com.glxp.api.res.collect.CollectOrderBizResponse;
import com.glxp.api.res.collect.CollectOrderUploadCountResponse;
import com.glxp.api.res.collect.IoCollectOrderResponse; import com.glxp.api.res.collect.IoCollectOrderResponse;
import com.glxp.api.service.basic.BasicCollectUserService; import com.glxp.api.service.basic.BasicCollectUserService;
import com.glxp.api.service.collect.IoCollectOrderBackupService; import com.glxp.api.service.collect.IoCollectOrderBackupService;
import com.glxp.api.service.collect.IoCollectOrderBizBackupService;
import com.glxp.api.service.collect.IoCollectOrderService;
import io.swagger.models.auth.In;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -39,11 +43,13 @@ import java.util.stream.Collectors;
public class IoCollectOrderBackupController extends BaseController { public class IoCollectOrderBackupController extends BaseController {
@Resource @Resource
IoCollectOrderBackupService ioCollectOrderBackupService; private IoCollectOrderBackupService ioCollectOrderBackupService;
@Resource @Resource
private BasicCollectUserService basicCollectUserService; private BasicCollectUserService basicCollectUserService;
@Resource
private IoCollectOrderBizBackupService ioCollectOrderBizBackupService;
@PostMapping("/udiwms/basic/collect/orderFinish/filter") @PostMapping("/udiwms/basic/collect/orderFinish/filter")
public BaseResponse filterOrder(@RequestBody CollectOrderRequest collectOrderRequest) { public BaseResponse filterOrder(@RequestBody CollectOrderRequest collectOrderRequest) {
@ -131,15 +137,42 @@ public class IoCollectOrderBackupController extends BaseController {
*/ */
@PostMapping ("/udiwms/basic/collect/orderFinish/uploadCount") @PostMapping ("/udiwms/basic/collect/orderFinish/uploadCount")
public BaseResponse uploadCount(@RequestBody CollectOrderUploadCountRequest collectOrderUploadCountRequest) { public BaseResponse uploadCount(@RequestBody CollectOrderUploadCountRequest collectOrderUploadCountRequest) {
CollectOrderUploadCountResponse collectOrderUploadCountResponse = new CollectOrderUploadCountResponse();
if(collectOrderUploadCountRequest.getStartTime()!=null
&& collectOrderUploadCountRequest.getEndTime() !=null){
collectOrderUploadCountRequest.setStartTime(collectOrderUploadCountRequest.getStartTime()+" 00:00:00");
collectOrderUploadCountRequest.setEndTime(collectOrderUploadCountRequest.getEndTime()+" 23:59:59");
List<Map<String, Object>> map = ioCollectOrderBackupService.listMaps(new QueryWrapper<IoCollectOrderBackup>() }
List<Map<String, Object>> list = ioCollectOrderBackupService.listMaps(new QueryWrapper<IoCollectOrderBackup>()
.groupBy("uploadStatus") .groupBy("uploadStatus")
.between(collectOrderUploadCountRequest.getStartTime()!=null .between(collectOrderUploadCountRequest.getStartTime()!=null
&& collectOrderUploadCountRequest.getEndTime() !=null && collectOrderUploadCountRequest.getEndTime() !=null
,"updateTime",collectOrderUploadCountRequest.getStartTime()+" 00:00:00",collectOrderUploadCountRequest.getEndTime()+" 23:59:59") ,"updateTime",collectOrderUploadCountRequest.getStartTime(),collectOrderUploadCountRequest.getEndTime())
.select("uploadStatus","count(1) as count") .select("uploadStatus","count(1) as count")
); );
return ResultVOUtils.success(map); Long notUploadingCount=0L;
Long alreadyUploadingCount=0L;
Long uploadingFailCount=0L;
if(list!=null && list.size() >0){
for (Map<String, Object> stringObjectMap : list) {
if(1 == (Integer)stringObjectMap.get("uploadStatus")){
notUploadingCount += (Long) stringObjectMap.get("count");
}else if(2 == (Integer)stringObjectMap.get("uploadStatus")){
alreadyUploadingCount += (Long)stringObjectMap.get("count");
}else if(3 == (Integer)stringObjectMap.get("uploadStatus")){
uploadingFailCount += (Long)stringObjectMap.get("count");
}
}
}
collectOrderUploadCountResponse.setNotUploadingCount(notUploadingCount);
collectOrderUploadCountResponse.setAlreadyUploadingCount(alreadyUploadingCount);
collectOrderUploadCountResponse.setUploadingFailCount(uploadingFailCount);
// 总上传码数量 获取采购上传率 销售上传率 计算
ioCollectOrderBizBackupService.CalculatedUploadRate( collectOrderUploadCountRequest,collectOrderUploadCountResponse);
return ResultVOUtils.success(collectOrderUploadCountResponse);
} }
} }

@ -14,4 +14,5 @@ import java.util.List;
public interface IoCollectOrderBackupMapper extends BaseMapper<IoCollectOrderBackup> { public interface IoCollectOrderBackupMapper extends BaseMapper<IoCollectOrderBackup> {
List<IoCollectOrderResponse> filterList(CollectOrderRequest collectOrderRequest); List<IoCollectOrderResponse> filterList(CollectOrderRequest collectOrderRequest);
} }

@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.collect.IoCollectOrderBizBackup; import com.glxp.api.entity.collect.IoCollectOrderBizBackup;
import com.glxp.api.req.collect.CollectOrderBizRequest; import com.glxp.api.req.collect.CollectOrderBizRequest;
import com.glxp.api.req.collect.CollectOrderUploadCountRequest;
import com.glxp.api.res.collect.CollectOrderBizResponse; import com.glxp.api.res.collect.CollectOrderBizResponse;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -14,4 +16,7 @@ import java.util.List;
public interface IoCollectOrderBizBackupMapper extends BaseMapper<IoCollectOrderBizBackup> { public interface IoCollectOrderBizBackupMapper extends BaseMapper<IoCollectOrderBizBackup> {
List<CollectOrderBizResponse> filterList(CollectOrderBizRequest collectOrderRequest); List<CollectOrderBizResponse> filterList(CollectOrderBizRequest collectOrderRequest);
List<CollectOrderBizResponse> getList(CollectOrderUploadCountRequest collectOrderUploadCountRequest);
} }

@ -21,6 +21,7 @@ import com.glxp.api.res.thrsys.ThrCorpsResponse;
import com.glxp.api.res.thrsys.ThrProductsResponse; import com.glxp.api.res.thrsys.ThrProductsResponse;
import com.glxp.api.res.thrsys.UdiwmsWarehouseDetail; import com.glxp.api.res.thrsys.UdiwmsWarehouseDetail;
import com.glxp.api.service.thrsys.ThrSystemService; import com.glxp.api.service.thrsys.ThrSystemService;
import com.glxp.api.util.OkHttpCli;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import okhttp3.*; import okhttp3.*;
import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;
@ -28,8 +29,8 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* HttpClient * HttpClient
@ -44,6 +45,8 @@ public class ErpBasicClient {
HttpOkClient httpOkClient; HttpOkClient httpOkClient;
@Resource @Resource
private ThrSystemService basicThirdSysService; private ThrSystemService basicThirdSysService;
@Resource
private OkHttpCli okHttpCli;
/** /**
* *
@ -497,4 +500,23 @@ public class ErpBasicClient {
return ResultVOUtils.error(500, "连接第三方系统接口服务出错"); return ResultVOUtils.error(500, "连接第三方系统接口服务出错");
} }
} }
public BaseResponse<Map<String,String[]>> getBuyType(String thirdSys) {
ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(thirdSys);
String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/getBuyType";
try {
String response = okHttpCli.doGet(url);
if (StrUtil.isEmpty(response)) {
return ResultVOUtils.error(500, "连接第三方系统接口服务出错");
}
BaseResponse<Map<String,String[]>> listBaseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse<Map<String,String[]>>>() {
});
return listBaseResponse;
} catch (Exception e) {
log.error("获取交易类型集合", e);
return ResultVOUtils.error(500, "连接第三方系统接口服务出错"+e.getMessage());
}
}
} }

@ -163,6 +163,9 @@ public class CollectOrderBizResponse {
private String workplaceQueueCode; private String workplaceQueueCode;
private String spec; private String spec;
private String busType;
private Integer uploadStatus;
// /** // /**
// * 未赋码数量 // * 未赋码数量
// */ // */

@ -0,0 +1,22 @@
package com.glxp.api.res.collect;
import io.swagger.models.auth.In;
import lombok.Data;
import java.math.BigDecimal;
/**
*
* qyt
*/
@Data
public class CollectOrderUploadCountResponse {
private Long notUploadingCount;
private Long alreadyUploadingCount;
private Long uploadingFailCount;
private BigDecimal buyerCentage;
private BigDecimal salesCentage;
private Integer codeCount;
}

@ -393,4 +393,7 @@ public class IoCollectOrderBackupService extends ServiceImpl<IoCollectOrderBacku
ioCheckInoutService.checkSecond(orderEntity); ioCheckInoutService.checkSecond(orderEntity);
return ResultVOUtils.success("更新成功"); return ResultVOUtils.success("更新成功");
} }
} }

@ -3,15 +3,20 @@ package com.glxp.api.service.collect;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.dao.collect.IoCollectOrderBizBackupMapper; import com.glxp.api.dao.collect.IoCollectOrderBizBackupMapper;
import com.glxp.api.entity.collect.IoCollectOrderBizBackup; import com.glxp.api.entity.collect.IoCollectOrderBizBackup;
import com.glxp.api.http.ErpBasicClient;
import com.glxp.api.req.collect.CollectOrderBizRequest; import com.glxp.api.req.collect.CollectOrderBizRequest;
import com.glxp.api.req.collect.CollectOrderUploadCountRequest;
import com.glxp.api.res.collect.CollectOrderBizResponse; import com.glxp.api.res.collect.CollectOrderBizResponse;
import com.glxp.api.res.collect.CollectOrderUploadCountResponse;
import io.swagger.models.auth.In;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.Collections; import java.math.BigDecimal;
import java.util.List; import java.util.*;
@Service @Service
@ -20,6 +25,8 @@ public class IoCollectOrderBizBackupService extends ServiceImpl<IoCollectOrderBi
@Resource @Resource
IoCollectOrderBizBackupMapper ioCollectOrderBizBackupMapper; IoCollectOrderBizBackupMapper ioCollectOrderBizBackupMapper;
@Resource
private ErpBasicClient erpBasicClient;
public List<CollectOrderBizResponse> filterList(CollectOrderBizRequest collectOrderRequest) { public List<CollectOrderBizResponse> filterList(CollectOrderBizRequest collectOrderRequest) {
if (collectOrderRequest == null) { if (collectOrderRequest == null) {
@ -32,4 +39,79 @@ public class IoCollectOrderBizBackupService extends ServiceImpl<IoCollectOrderBi
List<CollectOrderBizResponse> data = ioCollectOrderBizBackupMapper.filterList(collectOrderRequest); List<CollectOrderBizResponse> data = ioCollectOrderBizBackupMapper.filterList(collectOrderRequest);
return data; return data;
} }
/**
*
*/
public void CalculatedUploadRate(CollectOrderUploadCountRequest collectOrderUploadCountRequest, CollectOrderUploadCountResponse collectOrderUploadCountResponse) {
List<CollectOrderBizResponse> list = ioCollectOrderBizBackupMapper.getList(collectOrderUploadCountRequest);
Map<String, String[]> buyTypeMap = new HashMap<>();
List<String> buyTypeBuyer = new ArrayList<>();
List<String> buyTypeSales = new ArrayList<>();
Integer buyerCount = 0;
Integer salesCount = 0;
Integer buyerScanCount = 0;
Integer salesScanCount = 0;
BigDecimal buyerCentage = new BigDecimal(0);
BigDecimal salesCentage = new BigDecimal(0);
Integer codeCount = 0;
if (list != null && list.size() > 0) {
BaseResponse<Map<String, String[]>> baseResponse = erpBasicClient.getBuyType("thirdId");
if (baseResponse.getCode() == 20000) {
buyTypeMap = baseResponse.getData();
buyTypeBuyer = new ArrayList<>(Arrays.asList(buyTypeMap.get("buyType_3501")));
buyTypeBuyer.addAll(Arrays.asList(buyTypeMap.get("buyType_3502")));
buyTypeSales = new ArrayList<>(Arrays.asList(buyTypeMap.get("buyType_3505")));
buyTypeSales.addAll(Arrays.asList(buyTypeMap.get("buyType_3506")));
}
for (CollectOrderBizResponse collectOrderBizResponse : list) {
for (String buyType : buyTypeBuyer) {
if (buyType.equals(collectOrderBizResponse.getBusType())) {
buyerCount += collectOrderBizResponse.getCount();
// 只有已上传的码才是正确的码
if (2 == collectOrderBizResponse.getUploadStatus()) {
buyerScanCount += collectOrderBizResponse.getScanCount();
}
}
}
for (String buyType : buyTypeSales) {
if (buyType.equals(collectOrderBizResponse.getBusType())) {
salesCount += collectOrderBizResponse.getCount();
if (2 == collectOrderBizResponse.getUploadStatus()) {
salesScanCount += collectOrderBizResponse.getScanCount();
}
}
}
}
// 计算采购率和销售率
BigDecimal buyerCountBigDecimal = BigDecimal.valueOf(buyerCount);
BigDecimal buyerScanCountBigDecimal = BigDecimal.valueOf(buyerScanCount);
if(buyerCountBigDecimal.equals(new BigDecimal(0))){
buyerCentage = new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP);
}else {
buyerCentage = buyerScanCountBigDecimal.divide(buyerCountBigDecimal,4, BigDecimal.ROUND_HALF_UP ).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
}
BigDecimal salesCountBigDecimal = BigDecimal.valueOf(salesCount);
BigDecimal salesScanCountBigDecimal = BigDecimal.valueOf(salesScanCount);
if(salesCountBigDecimal.equals(new BigDecimal(0))){
salesCentage = new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP);
}else {
salesCentage = salesScanCountBigDecimal.divide(salesCountBigDecimal,4, BigDecimal.ROUND_HALF_UP ).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
}
codeCount = buyerScanCount + salesScanCount;
}
collectOrderUploadCountResponse.setBuyerCentage(buyerCentage);
collectOrderUploadCountResponse.setSalesCentage(salesCentage);
collectOrderUploadCountResponse.setCodeCount(codeCount);
}
public static void main(String[] args) {
System.out.println(new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP));
}
} }

@ -140,4 +140,5 @@
GROUP BY icob.billNo GROUP BY icob.billNo
order by case when icob.orderTime is null then icob.createTime else icob.orderTime end desc order by case when icob.orderTime is null then icob.createTime else icob.orderTime end desc
</select> </select>
</mapper> </mapper>

@ -36,4 +36,13 @@
</where> </where>
group by icobb.id group by icobb.id
</select> </select>
<select id="getList" resultType="com.glxp.api.res.collect.CollectOrderBizResponse">
SELECT
biz_bac.* ,bac.busType,bac.uploadStatus
FROM
io_collect_order_biz_backup biz_bac, io_collect_order_backup bac where biz_bac.orderIdFk = bac.billNo
<if test="startTime != '' and startTime != null and endTime != '' and endTime != null">
AND bac.updateTime BETWEEN #{startTime} AND #{endTime}
</if>
</select>
</mapper> </mapper>

Loading…
Cancel
Save